diff options
author | Chris Lattner <sabre@nondot.org> | 2003-05-17 22:26:33 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-05-17 22:26:33 +0000 |
commit | 192623ec93444785a100d64a5a7218dec4d36d1e (patch) | |
tree | 8c68477dbdb5b0f5c3b0ea84cdf9041ab9d09da9 /llvm/lib/CWriter/Writer.cpp | |
parent | 0ad4f9cf013d9c91bd1eb1a9bcbf53cc4d1881f9 (diff) | |
download | bcm5719-llvm-192623ec93444785a100d64a5a7218dec4d36d1e.tar.gz bcm5719-llvm-192623ec93444785a100d64a5a7218dec4d36d1e.zip |
Add support for setjmp/longjmp primitives
Patch checked in for Bill Wendling :)
llvm-svn: 6241
Diffstat (limited to 'llvm/lib/CWriter/Writer.cpp')
-rw-r--r-- | llvm/lib/CWriter/Writer.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/llvm/lib/CWriter/Writer.cpp b/llvm/lib/CWriter/Writer.cpp index 577054e245c..bfd6bc953e8 100644 --- a/llvm/lib/CWriter/Writer.cpp +++ b/llvm/lib/CWriter/Writer.cpp @@ -543,6 +543,7 @@ void CWriter::printModule(Module *M) { Out << "/* Provide Declarations */\n"; generateAllocaDecl(Out); Out << "#include <stdarg.h>\n"; + Out << "#include <setjmp.h>\n"; // Provide a definition for null if one does not already exist, // and for `bool' if not compiling with a C++ compiler. @@ -1022,7 +1023,6 @@ void CWriter::visitCallInst(CallInst &I) { writeOperand(&I.getParent()->getParent()->aback()); Out << ")"; return; - case LLVMIntrinsic::va_end: Out << "va_end((va_list)*"; writeOperand(I.getOperand(1)); @@ -1035,6 +1035,19 @@ void CWriter::visitCallInst(CallInst &I) { writeOperand(I.getOperand(2)); Out << ")"; return; + + case LLVMIntrinsic::setjmp: + Out << "setjmp((jmp_buf)"; + writeOperand(I.getOperand(1)); + Out << ")"; + return; + case LLVMIntrinsic::longjmp: + Out << "longjmp((jmp_buf)"; + writeOperand(I.getOperand(1)); + Out << ", "; + writeOperand(I.getOperand(2)); + Out << ")"; + return; } } |