Catch runaway ARMConstantIslandPass even in -Asserts builds.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Mon, 9 Jan 2012 22:16:24 +0000 (22:16 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Mon, 9 Jan 2012 22:16:24 +0000 (22:16 +0000)
The pass is prone to looping, and it is better to crash than loop
forever, even in a -Asserts build.

<rdar://problem/10660175>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147806 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMConstantIslandPass.cpp

index b73acd184c6a366e9ee2e5ea441347f3b1ef52c9..36be2308c97cfa4d0781eea3a9027dbe4e1190ba 100644 (file)
@@ -435,7 +435,7 @@ bool ARMConstantIslands::runOnMachineFunction(MachineFunction &mf) {
     for (unsigned i = 0, e = CPUsers.size(); i != e; ++i)
       CPChange |= HandleConstantPoolUser(i);
     if (CPChange && ++NoCPIters > 30)
-      llvm_unreachable("Constant Island pass failed to converge!");
+      report_fatal_error("Constant Island pass failed to converge!");
     DEBUG(dumpBBs());
 
     // Clear NewWaterList now.  If we split a block for branches, it should
@@ -447,7 +447,7 @@ bool ARMConstantIslands::runOnMachineFunction(MachineFunction &mf) {
     for (unsigned i = 0, e = ImmBranches.size(); i != e; ++i)
       BRChange |= FixUpImmediateBr(ImmBranches[i]);
     if (BRChange && ++NoBRIters > 30)
-      llvm_unreachable("Branch Fix Up pass failed to converge!");
+      report_fatal_error("Branch Fix Up pass failed to converge!");
     DEBUG(dumpBBs());
 
     if (!CPChange && !BRChange)