[llvm-commits] [llvm] r128217 - /llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp

Cameron Zwarich zwarich at apple.com
Thu Mar 24 09:34:59 PDT 2011


Author: zwarich
Date: Thu Mar 24 11:34:59 2011
New Revision: 128217

URL: http://llvm.org/viewvc/llvm-project?rev=128217&view=rev
Log:
Debug intrinsics must be skipped at the beginning and ends of blocks, lest they
affect the generated code.

Modified:
    llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp

Modified: llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp?rev=128217&r1=128216&r2=128217&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp Thu Mar 24 11:34:59 2011
@@ -617,7 +617,9 @@
     if (&*BI != RI)
       return false;
   } else {
-    if (&*BB->begin() != RI)
+    BasicBlock::iterator BI = BB->begin();
+    while (isa<DbgInfoIntrinsic>(BI)) ++BI;
+    if (&*BI != RI)
       return false;
   }
 
@@ -641,8 +643,10 @@
       BasicBlock::InstListType &InstList = (*PI)->getInstList();
       BasicBlock::InstListType::reverse_iterator RI = InstList.rbegin();
       BasicBlock::InstListType::reverse_iterator RE = InstList.rend();
-      if (++RI == RE)
+      do { ++RI; } while (RI != RE && isa<DbgInfoIntrinsic>(&*RI));
+      if (RI == RE)
         continue;
+
       CallInst *CI = dyn_cast<CallInst>(&*RI);
       if (CI && CI->use_empty() && TLI->mayBeEmittedAsTailCall(CI))
         TailCalls.push_back(CI);





More information about the llvm-commits mailing list