[llvm-commits] [llvm] r72249 - in /llvm/trunk: lib/VMCore/Verifier.cpp test/Assembler/2009-05-22-CC.ll test/Verifier/2009-05-22-CC.ll

Torok Edwin edwintorok at gmail.com
Fri May 22 00:12:05 PDT 2009


Author: edwin
Date: Fri May 22 02:12:05 2009
New Revision: 72249

URL: http://llvm.org/viewvc/llvm-project?rev=72249&view=rev
Log:
Revert this. There's no way to verifiy indirect calls, and an optimizer can turn
indirect call into direct call, thus the verifier would reject something it
previously accepted.

Removed:
    llvm/trunk/test/Assembler/2009-05-22-CC.ll
    llvm/trunk/test/Verifier/2009-05-22-CC.ll
Modified:
    llvm/trunk/lib/VMCore/Verifier.cpp

Modified: llvm/trunk/lib/VMCore/Verifier.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Verifier.cpp?rev=72249&r1=72248&r2=72249&view=diff

==============================================================================
--- llvm/trunk/lib/VMCore/Verifier.cpp (original)
+++ llvm/trunk/lib/VMCore/Verifier.cpp Fri May 22 02:12:05 2009
@@ -1024,31 +1024,6 @@
             "Call parameter type does not match function signature!",
             CS.getArgument(i), FTy->getParamType(i), I);
 
-  Assert2(CS.getType() == FTy->getReturnType(),
-          "Call return type does not match function signature!",
-          CS.getInstruction(), FTy->getReturnType());
-
-  // Verify calling convention for direct calls
-  Value *CalledF = CS.getCalledValue()->stripPointerCasts();
-  if (Function *F = dyn_cast<Function>(CalledF)) {
-    unsigned CC1 = CS.getCallingConv();
-    unsigned CC2 = F->getCallingConv();
-    if(CC1 != CC2) {
-      // tolerate some mismatch among C prototype and LLVM-specific calling conv
-      if (CC2 >= CallingConv::FirstTargetCC || 
-          CC1 >= CallingConv::FirstTargetCC) {
-        Instruction *I = CS.getInstruction()->clone();
-        if (CallInst *CI = dyn_cast<CallInst>(I)) {
-          CI->setCallingConv(F->getCallingConv());
-        } else
-          cast<InvokeInst>(I)->setCallingConv(F->getCallingConv());
-        Assert2(0,"Calling convention does not match function signature!",
-                CS.getInstruction(), I);
-        delete I;
-      }
-    }
-  }
-
   if (CS.getCalledValue()->getNameLen() < 5 ||
       strncmp(CS.getCalledValue()->getNameStart(), "llvm.", 5) != 0) {
     // Verify that none of the arguments are metadata...

Removed: llvm/trunk/test/Assembler/2009-05-22-CC.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/2009-05-22-CC.ll?rev=72248&view=auto

==============================================================================
--- llvm/trunk/test/Assembler/2009-05-22-CC.ll (original)
+++ llvm/trunk/test/Assembler/2009-05-22-CC.ll (removed)
@@ -1,9 +0,0 @@
-; RUN: llvm-as < %s
-
-; Verify that calls with correct calling conv are accepted
-declare x86_stdcallcc i32 @re_string_construct(i8* inreg %pstr, i8* inreg %str, i32 inreg %len, i8* %trans, i32 %icase, i8* %dfa);
-define void @main() {
-entry:
-	%0 = call x86_stdcallcc i32 (...)* bitcast (i32 (i8*, i8*, i32, i8*, i32, i8*)* @re_string_construct to i32 (...)*)(i32 inreg 0, i32 inreg 0, i32 inreg 0, i32 0, i32 0, i8* inttoptr (i32 673194176 to i8*));
-        ret void
-}

Removed: llvm/trunk/test/Verifier/2009-05-22-CC.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Verifier/2009-05-22-CC.ll?rev=72248&view=auto

==============================================================================
--- llvm/trunk/test/Verifier/2009-05-22-CC.ll (original)
+++ llvm/trunk/test/Verifier/2009-05-22-CC.ll (removed)
@@ -1,11 +0,0 @@
-; RUN: not llvm-as < %s |& grep {Calling convention does not match function signature}
-; PR 4239
-
-; Verify that the calling convention on the call instruction matches the
-; declared calling convention
-declare x86_stdcallcc i32 @re_string_construct(i8* inreg %pstr, i8* inreg %str, i32 inreg %len, i8* %trans, i32 %icase, i8* %dfa);
-define void @main() {
-entry:
-	%0 = call i32 (...)* bitcast (i32 (i8*, i8*, i32, i8*, i32, i8*)* @re_string_construct to i32 (...)*)(i32 inreg 0, i32 inreg 0, i32 inreg 0, i32 0, i32 0, i8* inttoptr (i32 673194176 to i8*))
-        ret void
-}





More information about the llvm-commits mailing list