[llvm] 8184b56 - [InstCombine] Add additional tests for dead phi cycles (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 25 01:47:15 PST 2023


Author: Nikita Popov
Date: 2023-01-25T10:47:07+01:00
New Revision: 8184b563a42dafad2dc589914456028bd228429a

URL: https://github.com/llvm/llvm-project/commit/8184b563a42dafad2dc589914456028bd228429a
DIFF: https://github.com/llvm/llvm-project/commit/8184b563a42dafad2dc589914456028bd228429a.diff

LOG: [InstCombine] Add additional tests for dead phi cycles (NFC)

Added: 
    

Modified: 
    llvm/test/Transforms/InstCombine/phi.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/InstCombine/phi.ll b/llvm/test/Transforms/InstCombine/phi.ll
index 521bb4aff25c3..bd0e649254adf 100644
--- a/llvm/test/Transforms/InstCombine/phi.ll
+++ b/llvm/test/Transforms/InstCombine/phi.ll
@@ -133,12 +133,12 @@ BB2:
   ret i32 %B
 }
 
-define i32 @test7(i32 %A, i1 %b) {
-; CHECK-LABEL: @test7(
+define i32 @test_dead_cycle(i32 %A, i1 %cond) {
+; CHECK-LABEL: @test_dead_cycle(
 ; CHECK-NEXT:  BB0:
 ; CHECK-NEXT:    br label [[LOOP:%.*]]
 ; CHECK:       Loop:
-; CHECK-NEXT:    br i1 [[B:%.*]], label [[LOOP]], label [[EXIT:%.*]]
+; CHECK-NEXT:    br i1 [[COND:%.*]], label [[LOOP]], label [[EXIT:%.*]]
 ; CHECK:       Exit:
 ; CHECK-NEXT:    ret i32 0
 ;
@@ -146,10 +146,59 @@ BB0:
   br label %Loop
 
 Loop:           ; preds = %Loop, %BB0
-  ; PHI is dead.
   %B = phi i32 [ %A, %BB0 ], [ %C, %Loop ]
   %C = add i32 %B, 123
-  br i1 %b, label %Loop, label %Exit
+  br i1 %cond, label %Loop, label %Exit
+
+Exit:           ; preds = %Loop
+  ret i32 0
+}
+
+define i32 @test_dead_cycle_two_insts(i32 %A, i1 %cond) {
+; CHECK-LABEL: @test_dead_cycle_two_insts(
+; CHECK-NEXT:  BB0:
+; CHECK-NEXT:    br label [[LOOP:%.*]]
+; CHECK:       Loop:
+; CHECK-NEXT:    [[B:%.*]] = phi i32 [ [[A:%.*]], [[BB0:%.*]] ], [ [[D:%.*]], [[LOOP]] ]
+; CHECK-NEXT:    [[C:%.*]] = add i32 [[B]], 123
+; CHECK-NEXT:    [[D]] = lshr i32 [[C]], 1
+; CHECK-NEXT:    br i1 [[COND:%.*]], label [[LOOP]], label [[EXIT:%.*]]
+; CHECK:       Exit:
+; CHECK-NEXT:    ret i32 0
+;
+BB0:
+  br label %Loop
+
+Loop:           ; preds = %Loop, %BB0
+  %B = phi i32 [ %A, %BB0 ], [ %D, %Loop ]
+  %C = add i32 %B, 123
+  %D = lshr i32 %C, 1
+  br i1 %cond, label %Loop, label %Exit
+
+Exit:           ; preds = %Loop
+  ret i32 0
+}
+
+declare i32 @llvm.uadd.sat.i32(i32, i32)
+
+define i32 @test_dead_cycle_intrin(i32 %A, i1 %cond) {
+; CHECK-LABEL: @test_dead_cycle_intrin(
+; CHECK-NEXT:  BB0:
+; CHECK-NEXT:    br label [[LOOP:%.*]]
+; CHECK:       Loop:
+; CHECK-NEXT:    [[B:%.*]] = phi i32 [ [[A:%.*]], [[BB0:%.*]] ], [ [[C:%.*]], [[LOOP]] ]
+; CHECK-NEXT:    [[C]] = call i32 @llvm.uadd.sat.i32(i32 [[B]], i32 123)
+; CHECK-NEXT:    br i1 [[COND:%.*]], label [[LOOP]], label [[EXIT:%.*]]
+; CHECK:       Exit:
+; CHECK-NEXT:    ret i32 0
+;
+BB0:
+  br label %Loop
+
+Loop:           ; preds = %Loop, %BB0
+  %B = phi i32 [ %A, %BB0 ], [ %C, %Loop ]
+  %C = call i32 @llvm.uadd.sat.i32(i32 %B, i32 123)
+  br i1 %cond, label %Loop, label %Exit
 
 Exit:           ; preds = %Loop
   ret i32 0
@@ -330,8 +379,8 @@ define void @test13(i1 %cond, i32 %V1, double %Vald) {
 ; CHECK:       two:
 ; CHECK-NEXT:    br label [[END]]
 ; CHECK:       end:
-; CHECK-NEXT:    [[TMP0:%.*]] = phi double [ 0.000000e+00, [[ENTRY:%.*]] ], [ [[VALD:%.*]], [[TWO]] ]
-; CHECK-NEXT:    call void @test13f(double [[TMP0]], i32 [[V1:%.*]])
+; CHECK-NEXT:    [[T31:%.*]] = phi double [ 0.000000e+00, [[ENTRY:%.*]] ], [ [[VALD:%.*]], [[TWO]] ]
+; CHECK-NEXT:    call void @test13f(double [[T31]], i32 [[V1:%.*]])
 ; CHECK-NEXT:    ret void
 ;
 entry:


        


More information about the llvm-commits mailing list