diff --git a/llvm/lib/AsmParser/Lexer.l b/llvm/lib/AsmParser/Lexer.l index 2edc50fa1019..93e309260b6f 100644 --- a/llvm/lib/AsmParser/Lexer.l +++ b/llvm/lib/AsmParser/Lexer.l @@ -240,7 +240,6 @@ cast { RET_TOK(OtherOpVal, Cast, CAST); } select { RET_TOK(OtherOpVal, Select, SELECT); } shl { RET_TOK(OtherOpVal, Shl, SHL); } shr { RET_TOK(OtherOpVal, Shr, SHR); } -va_arg { return VA_ARG; /* FIXME: OBSOLETE */} vanext { RET_TOK(OtherOpVal, VANext, VANEXT); } vaarg { RET_TOK(OtherOpVal, VAArg , VAARG); } diff --git a/llvm/lib/AsmParser/llvmAsmParser.y b/llvm/lib/AsmParser/llvmAsmParser.y index 0e61b2beab67..c6251cc983fd 100644 --- a/llvm/lib/AsmParser/llvmAsmParser.y +++ b/llvm/lib/AsmParser/llvmAsmParser.y @@ -732,7 +732,6 @@ Module *llvm::RunVMAsmParser(const std::string &Filename, FILE *F) { llvmAsmin = F; CurFilename = Filename; llvmAsmlineno = 1; // Reset the current line number... - ObsoleteVarArgs = false; // Allocate a new module to read CurModule.CurrentModule = new Module(Filename); @@ -741,67 +740,6 @@ Module *llvm::RunVMAsmParser(const std::string &Filename, FILE *F) { Module *Result = ParserResult; - // Check to see if they called va_start but not va_arg.. - if (!ObsoleteVarArgs) - if (Function *F = Result->getNamedFunction("llvm.va_start")) - if (F->arg_size() == 1) { - std::cerr << "WARNING: this file uses obsolete features. " - << "Assemble and disassemble to update it.\n"; - ObsoleteVarArgs = true; - } - - if (ObsoleteVarArgs) { - // If the user is making use of obsolete varargs intrinsics, adjust them for - // the user. - if (Function *F = Result->getNamedFunction("llvm.va_start")) { - assert(F->arg_size() == 1 && "Obsolete va_start takes 1 argument!"); - - const Type *RetTy = F->getFunctionType()->getParamType(0); - RetTy = cast(RetTy)->getElementType(); - Function *NF = Result->getOrInsertFunction("llvm.va_start", RetTy, 0); - - while (!F->use_empty()) { - CallInst *CI = cast(F->use_back()); - Value *V = new CallInst(NF, "", CI); - new StoreInst(V, CI->getOperand(1), CI); - CI->getParent()->getInstList().erase(CI); - } - Result->getFunctionList().erase(F); - } - - if (Function *F = Result->getNamedFunction("llvm.va_end")) { - assert(F->arg_size() == 1 && "Obsolete va_end takes 1 argument!"); - const Type *ArgTy = F->getFunctionType()->getParamType(0); - ArgTy = cast(ArgTy)->getElementType(); - Function *NF = Result->getOrInsertFunction("llvm.va_end", Type::VoidTy, - ArgTy, 0); - - while (!F->use_empty()) { - CallInst *CI = cast(F->use_back()); - Value *V = new LoadInst(CI->getOperand(1), "", CI); - new CallInst(NF, V, "", CI); - CI->getParent()->getInstList().erase(CI); - } - Result->getFunctionList().erase(F); - } - - if (Function *F = Result->getNamedFunction("llvm.va_copy")) { - assert(F->arg_size() == 2 && "Obsolete va_copy takes 2 argument!"); - const Type *ArgTy = F->getFunctionType()->getParamType(0); - ArgTy = cast(ArgTy)->getElementType(); - Function *NF = Result->getOrInsertFunction("llvm.va_copy", ArgTy, - ArgTy, 0); - - while (!F->use_empty()) { - CallInst *CI = cast(F->use_back()); - Value *V = new CallInst(NF, CI->getOperand(2), "", CI); - new StoreInst(V, CI->getOperand(1), CI); - CI->getParent()->getInstList().erase(CI); - } - Result->getFunctionList().erase(F); - } - } - llvmAsmin = stdin; // F is about to go away, don't use it anymore... ParserResult = 0; @@ -915,7 +853,6 @@ Module *llvm::RunVMAsmParser(const std::string &Filename, FILE *F) { // Other Operators %type ShiftOps %token PHI_TOK CALL CAST SELECT SHL SHR VAARG VANEXT -%token VA_ARG // FIXME: OBSOLETE %start Module %% @@ -1986,29 +1923,6 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { ThrowException("select value types should match!"); $$ = new SelectInst($2, $4, $6); } - | VA_ARG ResolvedVal ',' Types { - // FIXME: This is emulation code for an obsolete syntax. This should be - // removed at some point. - if (!ObsoleteVarArgs) { - std::cerr << "WARNING: this file uses obsolete features. " - << "Assemble and disassemble to update it.\n"; - ObsoleteVarArgs = true; - } - - // First, load the valist... - Instruction *CurVAList = new LoadInst($2, ""); - CurBB->getInstList().push_back(CurVAList); - - // Emit the vaarg instruction. - $$ = new VAArgInst(CurVAList, *$4); - - // Now we must advance the pointer and update it in memory. - Instruction *TheVANext = new VANextInst(CurVAList, *$4); - CurBB->getInstList().push_back(TheVANext); - - CurBB->getInstList().push_back(new StoreInst(TheVANext, $2)); - delete $4; - } | VAARG ResolvedVal ',' Types { $$ = new VAArgInst($2, *$4); delete $4;