diff options
Diffstat (limited to 'llvm/lib/VMCore')
| -rw-r--r-- | llvm/lib/VMCore/AsmWriter.cpp | 11 | ||||
| -rw-r--r-- | llvm/lib/VMCore/Instruction.cpp | 3 | ||||
| -rw-r--r-- | llvm/lib/VMCore/Verifier.cpp | 7 |
3 files changed, 15 insertions, 6 deletions
diff --git a/llvm/lib/VMCore/AsmWriter.cpp b/llvm/lib/VMCore/AsmWriter.cpp index 3601dffe424..f8716757db0 100644 --- a/llvm/lib/VMCore/AsmWriter.cpp +++ b/llvm/lib/VMCore/AsmWriter.cpp @@ -661,7 +661,10 @@ void AssemblyWriter::printFunction(const Function *F) { } printType(F->getReturnType()) << " "; - if (!F->getName().empty()) Out << getLLVMName(F->getName()); + if (!F->getName().empty()) + Out << getLLVMName(F->getName()); + else + Out << "\"\""; Out << "("; Table.incorporateFunction(F); @@ -882,10 +885,14 @@ void AssemblyWriter::printInstruction(const Instruction &I) { writeOperand(Operand, true); Out << " to "; printType(I.getType()); - } else if (isa<VarArgInst>(I)) { + } else if (isa<VAArgInst>(I)) { writeOperand(Operand, true); Out << ", "; printType(I.getType()); + } else if (const VANextInst *VAN = dyn_cast<VANextInst>(&I)) { + writeOperand(Operand, true); + Out << ", "; + printType(VAN->getArgType()); } else if (Operand) { // Print the normal way... // PrintAllTypes - Instructions who have operands of all the same type diff --git a/llvm/lib/VMCore/Instruction.cpp b/llvm/lib/VMCore/Instruction.cpp index e5e6501bd3d..179a988eb56 100644 --- a/llvm/lib/VMCore/Instruction.cpp +++ b/llvm/lib/VMCore/Instruction.cpp @@ -92,7 +92,8 @@ const char *Instruction::getOpcodeName(unsigned OpCode) { case Call: return "call"; case Shl: return "shl"; case Shr: return "shr"; - case VarArg: return "va_arg"; + case VANext: return "vanext"; + case VAArg: return "vaarg"; default: return "<Invalid operator> "; } diff --git a/llvm/lib/VMCore/Verifier.cpp b/llvm/lib/VMCore/Verifier.cpp index 1d4ac258eb3..5c70b93fc51 100644 --- a/llvm/lib/VMCore/Verifier.cpp +++ b/llvm/lib/VMCore/Verifier.cpp @@ -131,7 +131,8 @@ namespace { // Anonymous namespace for class void visitPHINode(PHINode &PN); void visitBinaryOperator(BinaryOperator &B); void visitShiftInst(ShiftInst &SI); - void visitVarArgInst(VarArgInst &VAI) { visitInstruction(VAI); } + void visitVANextInst(VANextInst &VAN) { visitInstruction(VAN); } + void visitVAArgInst(VAArgInst &VAA) { visitInstruction(VAA); } void visitCallInst(CallInst &CI); void visitGetElementPtrInst(GetElementPtrInst &GEP); void visitLoadInst(LoadInst &LI); @@ -505,10 +506,10 @@ void Verifier::visitIntrinsicFunctionCall(LLVMIntrinsic::ID ID, CallInst &CI) { Assert1(CI.getParent()->getParent()->getFunctionType()->isVarArg(), "llvm.va_start intrinsic may only occur in function with variable" " args!", &CI); - NumArgs = 1; + NumArgs = 0; break; case LLVMIntrinsic::va_end: NumArgs = 1; break; - case LLVMIntrinsic::va_copy: NumArgs = 2; break; + case LLVMIntrinsic::va_copy: NumArgs = 1; break; case LLVMIntrinsic::setjmp: NumArgs = 1; break; case LLVMIntrinsic::longjmp: NumArgs = 2; break; |

