[llvm-commits] [llvm] r111058 - in /llvm/trunk: lib/Analysis/Lint.cpp test/Other/lint.ll

Dan Gohman gohman at apple.com
Fri Aug 13 16:56:29 PDT 2010


Author: djg
Date: Fri Aug 13 18:56:28 2010
New Revision: 111058

URL: http://llvm.org/viewvc/llvm-project?rev=111058&view=rev
Log:
Add a lint check for an indirectbr destination which has not
had its address taken.

Modified:
    llvm/trunk/lib/Analysis/Lint.cpp
    llvm/trunk/test/Other/lint.ll

Modified: llvm/trunk/lib/Analysis/Lint.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/Lint.cpp?rev=111058&r1=111057&r2=111058&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/Lint.cpp (original)
+++ llvm/trunk/lib/Analysis/Lint.cpp Fri Aug 13 18:56:28 2010
@@ -521,6 +521,12 @@
 
   Assert1(I.getNumDestinations() != 0,
           "Undefined behavior: indirectbr with no destinations", &I);
+
+  for (unsigned i = 0, e = I.getNumDestinations(); i != e; ++i)
+    Assert1(I.getDestination(i)->hasAddressTaken(),
+            "Unusual: indirectbr destination has not "
+            "had its address taken",
+            &I);
 }
 
 void Lint::visitExtractElementInst(ExtractElementInst &I) {

Modified: llvm/trunk/test/Other/lint.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/lint.ll?rev=111058&r1=111057&r2=111058&view=diff
==============================================================================
--- llvm/trunk/test/Other/lint.ll (original)
+++ llvm/trunk/test/Other/lint.ll Fri Aug 13 18:56:28 2010
@@ -102,6 +102,7 @@
 }
 
 ; CHECK: Undefined behavior: Branch to non-blockaddress
+; CHECK: Unusual: indirectbr destination has not had its address taken
 define void @use_indbr() {
   indirectbr i8* bitcast (i32()* @foo to i8*), [label %block]
 block:





More information about the llvm-commits mailing list