Remove support for 1.0 style varargs
authorAndrew Lenharth <andrewl@lenharth.org>
Mon, 2 May 2005 19:07:27 +0000 (19:07 +0000)
committerAndrew Lenharth <andrewl@lenharth.org>
Mon, 2 May 2005 19:07:27 +0000 (19:07 +0000)
amusing of course, because we will have to go back to those semantics soon

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21654 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AsmParser/Lexer.l
lib/AsmParser/llvmAsmParser.y

index 2edc50fa10198d9c3a256387b08d33af03f3522e..93e309260b6f8a97534b45ea2acddd1ad2b7d0c7 100644 (file)
@@ -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); }
 
index 0e61b2beab6737f177bd99cf56f376da857842f5..c6251cc983fd85b011911c04b12ddfa90524df71 100644 (file)
@@ -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<PointerType>(RetTy)->getElementType();
-      Function *NF = Result->getOrInsertFunction("llvm.va_start", RetTy, 0);
-      
-      while (!F->use_empty()) {
-        CallInst *CI = cast<CallInst>(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<PointerType>(ArgTy)->getElementType();
-      Function *NF = Result->getOrInsertFunction("llvm.va_end", Type::VoidTy,
-                                                 ArgTy, 0);
-
-      while (!F->use_empty()) {
-        CallInst *CI = cast<CallInst>(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<PointerType>(ArgTy)->getElementType();
-      Function *NF = Result->getOrInsertFunction("llvm.va_copy", ArgTy,
-                                                 ArgTy, 0);
-
-      while (!F->use_empty()) {
-        CallInst *CI = cast<CallInst>(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  <OtherOpVal> ShiftOps
 %token <OtherOpVal> 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;