[llvm] 628f63d - [SimplifyCFG] If FoldTwoEntryPHINode() changed things, restart

Roman Lebedev via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 12 10:03:36 PDT 2021


Author: Roman Lebedev
Date: 2021-08-12T20:03:09+03:00
New Revision: 628f63d3d5ab71ab68e496443d261d91549c5ca6

URL: https://github.com/llvm/llvm-project/commit/628f63d3d5ab71ab68e496443d261d91549c5ca6
DIFF: https://github.com/llvm/llvm-project/commit/628f63d3d5ab71ab68e496443d261d91549c5ca6.diff

LOG: [SimplifyCFG] If FoldTwoEntryPHINode() changed things, restart

Mainly, i want to add an assertion that `SimplifyCFGOpt::simplifyCondBranch()`
doesn't get asked to deal with non-unconditional branches,
and if i do that, then said assertion fires on existing tests,
and this is what prevents it from firing.

Added: 
    

Modified: 
    llvm/lib/Transforms/Utils/SimplifyCFG.cpp
    llvm/test/Transforms/SimplifyCFG/merge-cond-stores-2.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
index e581dfd2c3ce1..482316c6111f9 100644
--- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
@@ -6659,7 +6659,8 @@ bool SimplifyCFGOpt::simplifyOnceImpl(BasicBlock *BB) {
     // eliminate it, do so now.
     if (auto *PN = dyn_cast<PHINode>(BB->begin()))
       if (PN->getNumIncomingValues() == 2)
-        Changed |= FoldTwoEntryPHINode(PN, TTI, DTU, DL);
+        if (FoldTwoEntryPHINode(PN, TTI, DTU, DL))
+          return true;
   }
 
   Instruction *Terminator = BB->getTerminator();

diff  --git a/llvm/test/Transforms/SimplifyCFG/merge-cond-stores-2.ll b/llvm/test/Transforms/SimplifyCFG/merge-cond-stores-2.ll
index dcb058b3613bc..eeae8b22a287d 100644
--- a/llvm/test/Transforms/SimplifyCFG/merge-cond-stores-2.ll
+++ b/llvm/test/Transforms/SimplifyCFG/merge-cond-stores-2.ll
@@ -19,127 +19,127 @@ define i32 @f(i32* %b) {
 ; CHECK-NEXT:    [[AND1:%.*]] = and i32 [[TMP1]], 2
 ; CHECK-NEXT:    [[TOBOOL2:%.*]] = icmp eq i32 [[AND1]], 0
 ; CHECK-NEXT:    [[OR4:%.*]] = or i32 [[TMP1]], 1073741824
-; CHECK-NEXT:    [[SPEC_SELECT:%.*]] = select i1 [[TOBOOL2]], i32 [[TMP1]], i32 [[OR4]]
-; CHECK-NEXT:    [[TMP2:%.*]] = xor i1 [[TOBOOL]], true
-; CHECK-NEXT:    [[TMP3:%.*]] = xor i1 [[TOBOOL2]], true
-; CHECK-NEXT:    [[TMP4:%.*]] = or i1 [[TMP2]], [[TMP3]]
-; CHECK-NEXT:    [[AND6:%.*]] = and i32 [[SPEC_SELECT]], 4
+; CHECK-NEXT:    [[TMP2:%.*]] = select i1 [[TOBOOL2]], i32 [[TMP1]], i32 [[OR4]]
+; CHECK-NEXT:    [[TMP3:%.*]] = xor i1 [[TOBOOL]], true
+; CHECK-NEXT:    [[TMP4:%.*]] = xor i1 [[TOBOOL2]], true
+; CHECK-NEXT:    [[TMP5:%.*]] = or i1 [[TMP3]], [[TMP4]]
+; CHECK-NEXT:    [[AND6:%.*]] = and i32 [[TMP2]], 4
 ; CHECK-NEXT:    [[TOBOOL7:%.*]] = icmp eq i32 [[AND6]], 0
-; CHECK-NEXT:    [[OR9:%.*]] = or i32 [[SPEC_SELECT]], 536870912
-; CHECK-NEXT:    [[SPEC_SELECT1:%.*]] = select i1 [[TOBOOL7]], i32 [[SPEC_SELECT]], i32 [[OR9]]
-; CHECK-NEXT:    [[TMP5:%.*]] = xor i1 [[TMP4]], true
-; CHECK-NEXT:    [[TMP6:%.*]] = xor i1 [[TOBOOL7]], true
-; CHECK-NEXT:    [[TMP7:%.*]] = xor i1 [[TMP5]], true
-; CHECK-NEXT:    [[TMP8:%.*]] = or i1 [[TMP7]], [[TMP6]]
-; CHECK-NEXT:    [[AND11:%.*]] = and i32 [[SPEC_SELECT1]], 8
+; CHECK-NEXT:    [[OR9:%.*]] = or i32 [[TMP2]], 536870912
+; CHECK-NEXT:    [[SPEC_SELECT:%.*]] = select i1 [[TOBOOL7]], i32 [[TMP2]], i32 [[OR9]]
+; CHECK-NEXT:    [[TMP6:%.*]] = xor i1 [[TMP5]], true
+; CHECK-NEXT:    [[TMP7:%.*]] = xor i1 [[TOBOOL7]], true
+; CHECK-NEXT:    [[TMP8:%.*]] = xor i1 [[TMP6]], true
+; CHECK-NEXT:    [[TMP9:%.*]] = or i1 [[TMP8]], [[TMP7]]
+; CHECK-NEXT:    [[AND11:%.*]] = and i32 [[SPEC_SELECT]], 8
 ; CHECK-NEXT:    [[TOBOOL12:%.*]] = icmp eq i32 [[AND11]], 0
-; CHECK-NEXT:    [[OR14:%.*]] = or i32 [[SPEC_SELECT1]], 268435456
-; CHECK-NEXT:    [[SPEC_SELECT2:%.*]] = select i1 [[TOBOOL12]], i32 [[SPEC_SELECT1]], i32 [[OR14]]
-; CHECK-NEXT:    [[TMP9:%.*]] = xor i1 [[TMP8]], true
-; CHECK-NEXT:    [[TMP10:%.*]] = xor i1 [[TOBOOL12]], true
-; CHECK-NEXT:    [[TMP11:%.*]] = xor i1 [[TMP9]], true
-; CHECK-NEXT:    [[TMP12:%.*]] = or i1 [[TMP11]], [[TMP10]]
-; CHECK-NEXT:    [[AND16:%.*]] = and i32 [[SPEC_SELECT2]], 16
+; CHECK-NEXT:    [[OR14:%.*]] = or i32 [[SPEC_SELECT]], 268435456
+; CHECK-NEXT:    [[SPEC_SELECT1:%.*]] = select i1 [[TOBOOL12]], i32 [[SPEC_SELECT]], i32 [[OR14]]
+; CHECK-NEXT:    [[TMP10:%.*]] = xor i1 [[TMP9]], true
+; CHECK-NEXT:    [[TMP11:%.*]] = xor i1 [[TOBOOL12]], true
+; CHECK-NEXT:    [[TMP12:%.*]] = xor i1 [[TMP10]], true
+; CHECK-NEXT:    [[TMP13:%.*]] = or i1 [[TMP12]], [[TMP11]]
+; CHECK-NEXT:    [[AND16:%.*]] = and i32 [[SPEC_SELECT1]], 16
 ; CHECK-NEXT:    [[TOBOOL17:%.*]] = icmp eq i32 [[AND16]], 0
-; CHECK-NEXT:    [[OR19:%.*]] = or i32 [[SPEC_SELECT2]], 134217728
-; CHECK-NEXT:    [[SPEC_SELECT3:%.*]] = select i1 [[TOBOOL17]], i32 [[SPEC_SELECT2]], i32 [[OR19]]
-; CHECK-NEXT:    [[TMP13:%.*]] = xor i1 [[TMP12]], true
-; CHECK-NEXT:    [[TMP14:%.*]] = xor i1 [[TOBOOL17]], true
-; CHECK-NEXT:    [[TMP15:%.*]] = xor i1 [[TMP13]], true
-; CHECK-NEXT:    [[TMP16:%.*]] = or i1 [[TMP15]], [[TMP14]]
-; CHECK-NEXT:    [[AND21:%.*]] = and i32 [[SPEC_SELECT3]], 32
+; CHECK-NEXT:    [[OR19:%.*]] = or i32 [[SPEC_SELECT1]], 134217728
+; CHECK-NEXT:    [[SPEC_SELECT2:%.*]] = select i1 [[TOBOOL17]], i32 [[SPEC_SELECT1]], i32 [[OR19]]
+; CHECK-NEXT:    [[TMP14:%.*]] = xor i1 [[TMP13]], true
+; CHECK-NEXT:    [[TMP15:%.*]] = xor i1 [[TOBOOL17]], true
+; CHECK-NEXT:    [[TMP16:%.*]] = xor i1 [[TMP14]], true
+; CHECK-NEXT:    [[TMP17:%.*]] = or i1 [[TMP16]], [[TMP15]]
+; CHECK-NEXT:    [[AND21:%.*]] = and i32 [[SPEC_SELECT2]], 32
 ; CHECK-NEXT:    [[TOBOOL22:%.*]] = icmp eq i32 [[AND21]], 0
-; CHECK-NEXT:    [[OR24:%.*]] = or i32 [[SPEC_SELECT3]], 67108864
-; CHECK-NEXT:    [[SPEC_SELECT4:%.*]] = select i1 [[TOBOOL22]], i32 [[SPEC_SELECT3]], i32 [[OR24]]
-; CHECK-NEXT:    [[TMP17:%.*]] = xor i1 [[TMP16]], true
-; CHECK-NEXT:    [[TMP18:%.*]] = xor i1 [[TOBOOL22]], true
-; CHECK-NEXT:    [[TMP19:%.*]] = xor i1 [[TMP17]], true
-; CHECK-NEXT:    [[TMP20:%.*]] = or i1 [[TMP19]], [[TMP18]]
-; CHECK-NEXT:    [[AND26:%.*]] = and i32 [[SPEC_SELECT4]], 64
+; CHECK-NEXT:    [[OR24:%.*]] = or i32 [[SPEC_SELECT2]], 67108864
+; CHECK-NEXT:    [[SPEC_SELECT3:%.*]] = select i1 [[TOBOOL22]], i32 [[SPEC_SELECT2]], i32 [[OR24]]
+; CHECK-NEXT:    [[TMP18:%.*]] = xor i1 [[TMP17]], true
+; CHECK-NEXT:    [[TMP19:%.*]] = xor i1 [[TOBOOL22]], true
+; CHECK-NEXT:    [[TMP20:%.*]] = xor i1 [[TMP18]], true
+; CHECK-NEXT:    [[TMP21:%.*]] = or i1 [[TMP20]], [[TMP19]]
+; CHECK-NEXT:    [[AND26:%.*]] = and i32 [[SPEC_SELECT3]], 64
 ; CHECK-NEXT:    [[TOBOOL27:%.*]] = icmp eq i32 [[AND26]], 0
-; CHECK-NEXT:    [[OR29:%.*]] = or i32 [[SPEC_SELECT4]], 33554432
-; CHECK-NEXT:    [[SPEC_SELECT5:%.*]] = select i1 [[TOBOOL27]], i32 [[SPEC_SELECT4]], i32 [[OR29]]
-; CHECK-NEXT:    [[TMP21:%.*]] = xor i1 [[TMP20]], true
-; CHECK-NEXT:    [[TMP22:%.*]] = xor i1 [[TOBOOL27]], true
-; CHECK-NEXT:    [[TMP23:%.*]] = xor i1 [[TMP21]], true
-; CHECK-NEXT:    [[TMP24:%.*]] = or i1 [[TMP23]], [[TMP22]]
-; CHECK-NEXT:    [[AND31:%.*]] = and i32 [[SPEC_SELECT5]], 256
+; CHECK-NEXT:    [[OR29:%.*]] = or i32 [[SPEC_SELECT3]], 33554432
+; CHECK-NEXT:    [[SPEC_SELECT4:%.*]] = select i1 [[TOBOOL27]], i32 [[SPEC_SELECT3]], i32 [[OR29]]
+; CHECK-NEXT:    [[TMP22:%.*]] = xor i1 [[TMP21]], true
+; CHECK-NEXT:    [[TMP23:%.*]] = xor i1 [[TOBOOL27]], true
+; CHECK-NEXT:    [[TMP24:%.*]] = xor i1 [[TMP22]], true
+; CHECK-NEXT:    [[TMP25:%.*]] = or i1 [[TMP24]], [[TMP23]]
+; CHECK-NEXT:    [[AND31:%.*]] = and i32 [[SPEC_SELECT4]], 256
 ; CHECK-NEXT:    [[TOBOOL32:%.*]] = icmp eq i32 [[AND31]], 0
-; CHECK-NEXT:    [[OR34:%.*]] = or i32 [[SPEC_SELECT5]], 8388608
-; CHECK-NEXT:    [[SPEC_SELECT6:%.*]] = select i1 [[TOBOOL32]], i32 [[SPEC_SELECT5]], i32 [[OR34]]
-; CHECK-NEXT:    [[TMP25:%.*]] = xor i1 [[TMP24]], true
-; CHECK-NEXT:    [[TMP26:%.*]] = xor i1 [[TOBOOL32]], true
-; CHECK-NEXT:    [[TMP27:%.*]] = xor i1 [[TMP25]], true
-; CHECK-NEXT:    [[TMP28:%.*]] = or i1 [[TMP27]], [[TMP26]]
-; CHECK-NEXT:    [[AND36:%.*]] = and i32 [[SPEC_SELECT6]], 512
+; CHECK-NEXT:    [[OR34:%.*]] = or i32 [[SPEC_SELECT4]], 8388608
+; CHECK-NEXT:    [[SPEC_SELECT5:%.*]] = select i1 [[TOBOOL32]], i32 [[SPEC_SELECT4]], i32 [[OR34]]
+; CHECK-NEXT:    [[TMP26:%.*]] = xor i1 [[TMP25]], true
+; CHECK-NEXT:    [[TMP27:%.*]] = xor i1 [[TOBOOL32]], true
+; CHECK-NEXT:    [[TMP28:%.*]] = xor i1 [[TMP26]], true
+; CHECK-NEXT:    [[TMP29:%.*]] = or i1 [[TMP28]], [[TMP27]]
+; CHECK-NEXT:    [[AND36:%.*]] = and i32 [[SPEC_SELECT5]], 512
 ; CHECK-NEXT:    [[TOBOOL37:%.*]] = icmp eq i32 [[AND36]], 0
-; CHECK-NEXT:    [[OR39:%.*]] = or i32 [[SPEC_SELECT6]], 4194304
-; CHECK-NEXT:    [[SPEC_SELECT7:%.*]] = select i1 [[TOBOOL37]], i32 [[SPEC_SELECT6]], i32 [[OR39]]
-; CHECK-NEXT:    [[TMP29:%.*]] = xor i1 [[TMP28]], true
-; CHECK-NEXT:    [[TMP30:%.*]] = xor i1 [[TOBOOL37]], true
-; CHECK-NEXT:    [[TMP31:%.*]] = xor i1 [[TMP29]], true
-; CHECK-NEXT:    [[TMP32:%.*]] = or i1 [[TMP31]], [[TMP30]]
-; CHECK-NEXT:    [[AND41:%.*]] = and i32 [[SPEC_SELECT7]], 1024
+; CHECK-NEXT:    [[OR39:%.*]] = or i32 [[SPEC_SELECT5]], 4194304
+; CHECK-NEXT:    [[SPEC_SELECT6:%.*]] = select i1 [[TOBOOL37]], i32 [[SPEC_SELECT5]], i32 [[OR39]]
+; CHECK-NEXT:    [[TMP30:%.*]] = xor i1 [[TMP29]], true
+; CHECK-NEXT:    [[TMP31:%.*]] = xor i1 [[TOBOOL37]], true
+; CHECK-NEXT:    [[TMP32:%.*]] = xor i1 [[TMP30]], true
+; CHECK-NEXT:    [[TMP33:%.*]] = or i1 [[TMP32]], [[TMP31]]
+; CHECK-NEXT:    [[AND41:%.*]] = and i32 [[SPEC_SELECT6]], 1024
 ; CHECK-NEXT:    [[TOBOOL42:%.*]] = icmp eq i32 [[AND41]], 0
-; CHECK-NEXT:    [[OR44:%.*]] = or i32 [[SPEC_SELECT7]], 2097152
-; CHECK-NEXT:    [[SPEC_SELECT8:%.*]] = select i1 [[TOBOOL42]], i32 [[SPEC_SELECT7]], i32 [[OR44]]
-; CHECK-NEXT:    [[TMP33:%.*]] = xor i1 [[TMP32]], true
-; CHECK-NEXT:    [[TMP34:%.*]] = xor i1 [[TOBOOL42]], true
-; CHECK-NEXT:    [[TMP35:%.*]] = xor i1 [[TMP33]], true
-; CHECK-NEXT:    [[TMP36:%.*]] = or i1 [[TMP35]], [[TMP34]]
-; CHECK-NEXT:    [[AND46:%.*]] = and i32 [[SPEC_SELECT8]], 2048
+; CHECK-NEXT:    [[OR44:%.*]] = or i32 [[SPEC_SELECT6]], 2097152
+; CHECK-NEXT:    [[SPEC_SELECT7:%.*]] = select i1 [[TOBOOL42]], i32 [[SPEC_SELECT6]], i32 [[OR44]]
+; CHECK-NEXT:    [[TMP34:%.*]] = xor i1 [[TMP33]], true
+; CHECK-NEXT:    [[TMP35:%.*]] = xor i1 [[TOBOOL42]], true
+; CHECK-NEXT:    [[TMP36:%.*]] = xor i1 [[TMP34]], true
+; CHECK-NEXT:    [[TMP37:%.*]] = or i1 [[TMP36]], [[TMP35]]
+; CHECK-NEXT:    [[AND46:%.*]] = and i32 [[SPEC_SELECT7]], 2048
 ; CHECK-NEXT:    [[TOBOOL47:%.*]] = icmp eq i32 [[AND46]], 0
-; CHECK-NEXT:    [[OR49:%.*]] = or i32 [[SPEC_SELECT8]], 1048576
-; CHECK-NEXT:    [[SPEC_SELECT9:%.*]] = select i1 [[TOBOOL47]], i32 [[SPEC_SELECT8]], i32 [[OR49]]
-; CHECK-NEXT:    [[TMP37:%.*]] = xor i1 [[TMP36]], true
-; CHECK-NEXT:    [[TMP38:%.*]] = xor i1 [[TOBOOL47]], true
-; CHECK-NEXT:    [[TMP39:%.*]] = xor i1 [[TMP37]], true
-; CHECK-NEXT:    [[TMP40:%.*]] = or i1 [[TMP39]], [[TMP38]]
-; CHECK-NEXT:    [[AND51:%.*]] = and i32 [[SPEC_SELECT9]], 4096
+; CHECK-NEXT:    [[OR49:%.*]] = or i32 [[SPEC_SELECT7]], 1048576
+; CHECK-NEXT:    [[SPEC_SELECT8:%.*]] = select i1 [[TOBOOL47]], i32 [[SPEC_SELECT7]], i32 [[OR49]]
+; CHECK-NEXT:    [[TMP38:%.*]] = xor i1 [[TMP37]], true
+; CHECK-NEXT:    [[TMP39:%.*]] = xor i1 [[TOBOOL47]], true
+; CHECK-NEXT:    [[TMP40:%.*]] = xor i1 [[TMP38]], true
+; CHECK-NEXT:    [[TMP41:%.*]] = or i1 [[TMP40]], [[TMP39]]
+; CHECK-NEXT:    [[AND51:%.*]] = and i32 [[SPEC_SELECT8]], 4096
 ; CHECK-NEXT:    [[TOBOOL52:%.*]] = icmp eq i32 [[AND51]], 0
-; CHECK-NEXT:    [[OR54:%.*]] = or i32 [[SPEC_SELECT9]], 524288
-; CHECK-NEXT:    [[SPEC_SELECT10:%.*]] = select i1 [[TOBOOL52]], i32 [[SPEC_SELECT9]], i32 [[OR54]]
-; CHECK-NEXT:    [[TMP41:%.*]] = xor i1 [[TMP40]], true
-; CHECK-NEXT:    [[TMP42:%.*]] = xor i1 [[TOBOOL52]], true
-; CHECK-NEXT:    [[TMP43:%.*]] = xor i1 [[TMP41]], true
-; CHECK-NEXT:    [[TMP44:%.*]] = or i1 [[TMP43]], [[TMP42]]
-; CHECK-NEXT:    [[AND56:%.*]] = and i32 [[SPEC_SELECT10]], 8192
+; CHECK-NEXT:    [[OR54:%.*]] = or i32 [[SPEC_SELECT8]], 524288
+; CHECK-NEXT:    [[SPEC_SELECT9:%.*]] = select i1 [[TOBOOL52]], i32 [[SPEC_SELECT8]], i32 [[OR54]]
+; CHECK-NEXT:    [[TMP42:%.*]] = xor i1 [[TMP41]], true
+; CHECK-NEXT:    [[TMP43:%.*]] = xor i1 [[TOBOOL52]], true
+; CHECK-NEXT:    [[TMP44:%.*]] = xor i1 [[TMP42]], true
+; CHECK-NEXT:    [[TMP45:%.*]] = or i1 [[TMP44]], [[TMP43]]
+; CHECK-NEXT:    [[AND56:%.*]] = and i32 [[SPEC_SELECT9]], 8192
 ; CHECK-NEXT:    [[TOBOOL57:%.*]] = icmp eq i32 [[AND56]], 0
-; CHECK-NEXT:    [[OR59:%.*]] = or i32 [[SPEC_SELECT10]], 262144
-; CHECK-NEXT:    [[SPEC_SELECT11:%.*]] = select i1 [[TOBOOL57]], i32 [[SPEC_SELECT10]], i32 [[OR59]]
-; CHECK-NEXT:    [[TMP45:%.*]] = xor i1 [[TMP44]], true
-; CHECK-NEXT:    [[TMP46:%.*]] = xor i1 [[TOBOOL57]], true
-; CHECK-NEXT:    [[TMP47:%.*]] = xor i1 [[TMP45]], true
-; CHECK-NEXT:    [[TMP48:%.*]] = or i1 [[TMP47]], [[TMP46]]
-; CHECK-NEXT:    [[AND61:%.*]] = and i32 [[SPEC_SELECT11]], 16384
+; CHECK-NEXT:    [[OR59:%.*]] = or i32 [[SPEC_SELECT9]], 262144
+; CHECK-NEXT:    [[SPEC_SELECT10:%.*]] = select i1 [[TOBOOL57]], i32 [[SPEC_SELECT9]], i32 [[OR59]]
+; CHECK-NEXT:    [[TMP46:%.*]] = xor i1 [[TMP45]], true
+; CHECK-NEXT:    [[TMP47:%.*]] = xor i1 [[TOBOOL57]], true
+; CHECK-NEXT:    [[TMP48:%.*]] = xor i1 [[TMP46]], true
+; CHECK-NEXT:    [[TMP49:%.*]] = or i1 [[TMP48]], [[TMP47]]
+; CHECK-NEXT:    [[AND61:%.*]] = and i32 [[SPEC_SELECT10]], 16384
 ; CHECK-NEXT:    [[TOBOOL62:%.*]] = icmp eq i32 [[AND61]], 0
-; CHECK-NEXT:    [[OR64:%.*]] = or i32 [[SPEC_SELECT11]], 131072
-; CHECK-NEXT:    [[SPEC_SELECT12:%.*]] = select i1 [[TOBOOL62]], i32 [[SPEC_SELECT11]], i32 [[OR64]]
-; CHECK-NEXT:    [[TMP49:%.*]] = xor i1 [[TMP48]], true
-; CHECK-NEXT:    [[TMP50:%.*]] = xor i1 [[TOBOOL62]], true
-; CHECK-NEXT:    [[TMP51:%.*]] = xor i1 [[TMP49]], true
-; CHECK-NEXT:    [[TMP52:%.*]] = or i1 [[TMP51]], [[TMP50]]
-; CHECK-NEXT:    [[AND66:%.*]] = and i32 [[SPEC_SELECT12]], 32768
+; CHECK-NEXT:    [[OR64:%.*]] = or i32 [[SPEC_SELECT10]], 131072
+; CHECK-NEXT:    [[SPEC_SELECT11:%.*]] = select i1 [[TOBOOL62]], i32 [[SPEC_SELECT10]], i32 [[OR64]]
+; CHECK-NEXT:    [[TMP50:%.*]] = xor i1 [[TMP49]], true
+; CHECK-NEXT:    [[TMP51:%.*]] = xor i1 [[TOBOOL62]], true
+; CHECK-NEXT:    [[TMP52:%.*]] = xor i1 [[TMP50]], true
+; CHECK-NEXT:    [[TMP53:%.*]] = or i1 [[TMP52]], [[TMP51]]
+; CHECK-NEXT:    [[AND66:%.*]] = and i32 [[SPEC_SELECT11]], 32768
 ; CHECK-NEXT:    [[TOBOOL67:%.*]] = icmp eq i32 [[AND66]], 0
-; CHECK-NEXT:    [[OR69:%.*]] = or i32 [[SPEC_SELECT12]], 65536
-; CHECK-NEXT:    [[SPEC_SELECT13:%.*]] = select i1 [[TOBOOL67]], i32 [[SPEC_SELECT12]], i32 [[OR69]]
-; CHECK-NEXT:    [[TMP53:%.*]] = xor i1 [[TMP52]], true
-; CHECK-NEXT:    [[TMP54:%.*]] = xor i1 [[TOBOOL67]], true
-; CHECK-NEXT:    [[TMP55:%.*]] = xor i1 [[TMP53]], true
-; CHECK-NEXT:    [[TMP56:%.*]] = or i1 [[TMP55]], [[TMP54]]
-; CHECK-NEXT:    [[AND71:%.*]] = and i32 [[SPEC_SELECT13]], 128
+; CHECK-NEXT:    [[OR69:%.*]] = or i32 [[SPEC_SELECT11]], 65536
+; CHECK-NEXT:    [[SPEC_SELECT12:%.*]] = select i1 [[TOBOOL67]], i32 [[SPEC_SELECT11]], i32 [[OR69]]
+; CHECK-NEXT:    [[TMP54:%.*]] = xor i1 [[TMP53]], true
+; CHECK-NEXT:    [[TMP55:%.*]] = xor i1 [[TOBOOL67]], true
+; CHECK-NEXT:    [[TMP56:%.*]] = xor i1 [[TMP54]], true
+; CHECK-NEXT:    [[TMP57:%.*]] = or i1 [[TMP56]], [[TMP55]]
+; CHECK-NEXT:    [[AND71:%.*]] = and i32 [[SPEC_SELECT12]], 128
 ; CHECK-NEXT:    [[TOBOOL72:%.*]] = icmp eq i32 [[AND71]], 0
-; CHECK-NEXT:    [[OR74:%.*]] = or i32 [[SPEC_SELECT13]], 16777216
-; CHECK-NEXT:    [[SPEC_SELECT14:%.*]] = select i1 [[TOBOOL72]], i32 [[SPEC_SELECT13]], i32 [[OR74]]
-; CHECK-NEXT:    [[TMP57:%.*]] = xor i1 [[TMP56]], true
-; CHECK-NEXT:    [[TMP58:%.*]] = xor i1 [[TOBOOL72]], true
-; CHECK-NEXT:    [[TMP59:%.*]] = xor i1 [[TMP57]], true
-; CHECK-NEXT:    [[TMP60:%.*]] = or i1 [[TMP59]], [[TMP58]]
-; CHECK-NEXT:    br i1 [[TMP60]], label [[TMP61:%.*]], label [[TMP62:%.*]]
-; CHECK:       61:
-; CHECK-NEXT:    store i32 [[SPEC_SELECT14]], i32* [[B]], align 4
-; CHECK-NEXT:    br label [[TMP62]]
+; CHECK-NEXT:    [[OR74:%.*]] = or i32 [[SPEC_SELECT12]], 16777216
+; CHECK-NEXT:    [[SPEC_SELECT13:%.*]] = select i1 [[TOBOOL72]], i32 [[SPEC_SELECT12]], i32 [[OR74]]
+; CHECK-NEXT:    [[TMP58:%.*]] = xor i1 [[TMP57]], true
+; CHECK-NEXT:    [[TMP59:%.*]] = xor i1 [[TOBOOL72]], true
+; CHECK-NEXT:    [[TMP60:%.*]] = xor i1 [[TMP58]], true
+; CHECK-NEXT:    [[TMP61:%.*]] = or i1 [[TMP60]], [[TMP59]]
+; CHECK-NEXT:    br i1 [[TMP61]], label [[TMP62:%.*]], label [[TMP63:%.*]]
 ; CHECK:       62:
+; CHECK-NEXT:    store i32 [[SPEC_SELECT13]], i32* [[B]], align 4
+; CHECK-NEXT:    br label [[TMP63]]
+; CHECK:       63:
 ; CHECK-NEXT:    ret i32 0
 ;
 entry:


        


More information about the llvm-commits mailing list