diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2012-04-16 22:03:00 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2012-04-16 22:03:00 +0000 |
commit | f1a60c734c2edb97ab75e67328935538fae5bae6 (patch) | |
tree | a8ca8b24baa1537f51f682df1becfdecd315ac00 /test/CodeGen/Thumb2/thumb2-ifcvt2.ll | |
parent | 68f89a61587e8d482347cf892c2670a869a1ad61 (diff) | |
download | llvm-f1a60c734c2edb97ab75e67328935538fae5bae6.tar.gz llvm-f1a60c734c2edb97ab75e67328935538fae5bae6.tar.bz2 llvm-f1a60c734c2edb97ab75e67328935538fae5bae6.tar.xz |
Fix updateTerminator to be resiliant to degenerate terminators where
both fallthrough and a conditional branch target the same successor.
Gracefully delete the conditional branch and introduce any unconditional
branch needed to reach the actual successor. This fixes memory
corruption in 2009-06-15-RegScavengerAssert.ll and possibly other tests.
Also, while I'm here fix a latent bug I spotted by inspection. I never
applied the same fundamental fix to this fallthrough successor finding
logic that I did to the logic used when there are no conditional
branches. As a consequence it would have selected landing pads had they
be aligned in just the right way here. I don't have a test case as
I spotted this by inspection, and the previous time I found this
required have of TableGen's source code to produce it. =/ I hate backend
bugs. ;]
Thanks to Jim Grosbach for helping me reason through this and reviewing
the fix.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154867 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/Thumb2/thumb2-ifcvt2.ll')
-rw-r--r-- | test/CodeGen/Thumb2/thumb2-ifcvt2.ll | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/test/CodeGen/Thumb2/thumb2-ifcvt2.ll b/test/CodeGen/Thumb2/thumb2-ifcvt2.ll index 9a83e65576..5aa9a735f2 100644 --- a/test/CodeGen/Thumb2/thumb2-ifcvt2.ll +++ b/test/CodeGen/Thumb2/thumb2-ifcvt2.ll @@ -83,7 +83,7 @@ define fastcc void @t2() nounwind { entry: ; CHECK: t2: ; CHECK: cmp r0, #0 -; CHECK: bne +; CHECK: %growMapping.exit br i1 undef, label %bb.i.i3, label %growMapping.exit bb.i.i3: ; preds = %entry |