aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-06-29 16:42:32 +0000
committerChris Lattner <sabre@nondot.org>2003-06-29 16:42:32 +0000
commitc151e4f415da15d17eee60720c396e7103fcc02d (patch)
tree7ba8c56c387d261b1ff55ec1a3b37ced950b0e4d
parentdbb6cd12ebf2429ea7f4f632c4447951b870d0ff (diff)
downloadexternal_llvm-c151e4f415da15d17eee60720c396e7103fcc02d.zip
external_llvm-c151e4f415da15d17eee60720c396e7103fcc02d.tar.gz
external_llvm-c151e4f415da15d17eee60720c396e7103fcc02d.tar.bz2
Until there is a setjmp/longjmp transformation pass, codegen setjmp as a noop
and longjmp as an abort! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6977 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/X86/InstSelectSimple.cpp4
-rw-r--r--lib/Target/X86/X86ISelSimple.cpp4
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/Target/X86/InstSelectSimple.cpp b/lib/Target/X86/InstSelectSimple.cpp
index 0566def..e57a6ab 100644
--- a/lib/Target/X86/InstSelectSimple.cpp
+++ b/lib/Target/X86/InstSelectSimple.cpp
@@ -978,6 +978,10 @@ void ISel::visitIntrinsicCall(LLVMIntrinsic::ID ID, CallInst &CI) {
addDirectMem(BuildMI(BB, X86::MOVrm32, 5), TmpReg2).addReg(TmpReg1);
return;
+ case LLVMIntrinsic::longjmp:
+ BuildMI(X86::CALLpcrel32, 1).addExternalSymbol("abort", true);
+ case LLVMIntrinsic::setjmp:
+ return;
default: assert(0 && "Unknown intrinsic for X86!");
}
}
diff --git a/lib/Target/X86/X86ISelSimple.cpp b/lib/Target/X86/X86ISelSimple.cpp
index 0566def..e57a6ab 100644
--- a/lib/Target/X86/X86ISelSimple.cpp
+++ b/lib/Target/X86/X86ISelSimple.cpp
@@ -978,6 +978,10 @@ void ISel::visitIntrinsicCall(LLVMIntrinsic::ID ID, CallInst &CI) {
addDirectMem(BuildMI(BB, X86::MOVrm32, 5), TmpReg2).addReg(TmpReg1);
return;
+ case LLVMIntrinsic::longjmp:
+ BuildMI(X86::CALLpcrel32, 1).addExternalSymbol("abort", true);
+ case LLVMIntrinsic::setjmp:
+ return;
default: assert(0 && "Unknown intrinsic for X86!");
}
}