aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/CBackend/Writer.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-08-10 00:19:16 +0000
committerChris Lattner <sabre@nondot.org>2004-08-10 00:19:16 +0000
commitf8e6f4f776cbe65d62528adbf961a10cbf129fc3 (patch)
treee09b23a351d26637c90956e7a862bb2a417ebe50 /lib/Target/CBackend/Writer.cpp
parent008fad0236f6b498a541f39304429565b131888d (diff)
Paper over CBackend/2004-08-09-va-end-null.ll
Note that this indicates a serious problem with the way we are emitting varargs, but this should not be properly fixed until after 1.3. This patch SHOULD go into 1.3. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15602 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/CBackend/Writer.cpp')
-rw-r--r--lib/Target/CBackend/Writer.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/Target/CBackend/Writer.cpp b/lib/Target/CBackend/Writer.cpp
index 65a110e567..bb1548f8a8 100644
--- a/lib/Target/CBackend/Writer.cpp
+++ b/lib/Target/CBackend/Writer.cpp
@@ -1390,9 +1390,13 @@ void CWriter::visitCallInst(CallInst &I) {
Out << ")";
return;
case Intrinsic::vaend:
- Out << "va_end(*(va_list*)&";
- writeOperand(I.getOperand(1));
- Out << ")";
+ if (!isa<ConstantPointerNull>(I.getOperand(1))) {
+ Out << "va_end(*(va_list*)&";
+ writeOperand(I.getOperand(1));
+ Out << ")";
+ } else {
+ Out << "va_end(*(va_list*)0)";
+ }
return;
case Intrinsic::vacopy:
Out << "0;";