Paper over CBackend/2004-08-09-va-end-null.ll
authorChris Lattner <sabre@nondot.org>
Tue, 10 Aug 2004 00:19:16 +0000 (00:19 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 10 Aug 2004 00:19:16 +0000 (00:19 +0000)
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

lib/Target/CBackend/CBackend.cpp
lib/Target/CBackend/Writer.cpp

index 65a110e567ee3f0c8785d92f168eb5cd1cf97032..bb1548f8a8cecc24deaf486c7bf618d29e3c0d13 100644 (file)
@@ -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;";
index 65a110e567ee3f0c8785d92f168eb5cd1cf97032..bb1548f8a8cecc24deaf486c7bf618d29e3c0d13 100644 (file)
@@ -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;";