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
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;";
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;";