jump threading can't split a critical edge from an indirectbr.  This
fixes PR7356.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105950 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Transforms/Scalar/JumpThreading.cpp b/lib/Transforms/Scalar/JumpThreading.cpp
index 0352c6e..1a64b2c 100644
--- a/lib/Transforms/Scalar/JumpThreading.cpp
+++ b/lib/Transforms/Scalar/JumpThreading.cpp
@@ -870,9 +870,14 @@
 
     // Add all the unavailable predecessors to the PredsToSplit list.
     for (pred_iterator PI = pred_begin(LoadBB), PE = pred_end(LoadBB);
-         PI != PE; ++PI)
+         PI != PE; ++PI) {
+      // If the predecessor is an indirect goto, we can't split the edge.
+      if (isa<IndirectBrInst>((*PI)->getTerminator()))
+        return false;
+      
       if (!AvailablePredSet.count(*PI))
         PredsToSplit.push_back(*PI);
+    }
     
     // Split them out to their own block.
     UnavailablePred =