Fix bugs, don't do external methods which causes segv.
authorChris Lattner <sabre@nondot.org>
Tue, 4 Dec 2001 08:13:06 +0000 (08:13 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 4 Dec 2001 08:13:06 +0000 (08:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1414 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/IndVarSimplify.cpp

index a6e0bd12534668b641f3a3ea0072637980b750d9..3b64756cb1961453f1b1adb72901d5f3a82eaebe 100644 (file)
@@ -127,7 +127,8 @@ static bool TransformLoop(cfg::LoopInfo *Loops, cfg::Loop *Loop) {
 #ifdef DEBUG
     cerr << IndVars[i];
 #endif
-    if (IV != Cannonical) {  // Don't modify the cannonical indvar
+    // Don't modify the cannonical indvar or unrecognized indvars...
+    if (IV != Cannonical && IV->InductionType != InductionVariable::Unknown) {
       Instruction *Val = IterCount;
       if (!isa<ConstantInt>(IV->Step) ||   // If the step != 1
           !cast<ConstantInt>(IV->Step)->equalsInt(1)) {
@@ -183,6 +184,8 @@ static bool TransformLoop(cfg::LoopInfo *Loops, cfg::Loop *Loop) {
 }
 
 bool InductionVariableSimplify::doit(Method *M) {
+  if (M->isExternal()) return false;
+
   // Figure out the loop structure of the method...
   cfg::LoopInfo Loops(M);