[SimplifyCFG] Make test more robust (NFC)

These are supposed to test creation of a switch, so make sure
there is some actual code in the branches. Otherwise this could
be turned into a select instead.
This commit is contained in:
Nikita Popov 2021-04-04 16:47:54 +02:00
parent 241d42c382
commit cb4443994e
2 changed files with 40 additions and 25 deletions

View File

@ -253,7 +253,7 @@ define void @test7(i8 zeroext %c, i32 %x) nounwind ssp noredzone {
; CHECK-NEXT: i8 97, label [[IF_THEN]]
; CHECK-NEXT: ]
; CHECK: if.then:
; CHECK-NEXT: tail call void @foo1() [[ATTR2:#.*]]
; CHECK-NEXT: tail call void @foo1() #[[ATTR2:[0-9]+]]
; CHECK-NEXT: ret void
; CHECK: if.end:
; CHECK-NEXT: ret void
@ -289,7 +289,7 @@ define i32 @test8(i8 zeroext %c, i32 %x, i1 %C) nounwind ssp noredzone {
; CHECK-NEXT: ]
; CHECK: if.then:
; CHECK-NEXT: [[A:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ 42, [[SWITCH_EARLY_TEST]] ], [ 42, [[N]] ], [ 42, [[SWITCH_EARLY_TEST]] ]
; CHECK-NEXT: tail call void @foo1() [[ATTR2]]
; CHECK-NEXT: tail call void @foo1() #[[ATTR2]]
; CHECK-NEXT: ret i32 [[A]]
; CHECK: if.end:
; CHECK-NEXT: ret i32 0
@ -396,10 +396,11 @@ define i32 @test10(i32 %mode, i1 %Cond) {
; CHECK-NEXT: i32 0, label [[F]]
; CHECK-NEXT: ]
; CHECK: T:
; CHECK-NEXT: [[MERGE:%.*]] = phi i32 [ 123, [[SWITCH_EARLY_TEST]] ], [ 324, [[F]] ]
; CHECK-NEXT: ret i32 [[MERGE]]
; CHECK-NEXT: call void @foo1()
; CHECK-NEXT: ret i32 123
; CHECK: F:
; CHECK-NEXT: br label [[T]]
; CHECK-NEXT: call void @foo2()
; CHECK-NEXT: ret i32 324
;
%A = icmp ne i32 %mode, 0
%B = icmp ne i32 %mode, 51
@ -407,8 +408,10 @@ define i32 @test10(i32 %mode, i1 %Cond) {
%D = and i1 %C, %Cond
br i1 %D, label %T, label %F
T:
call void @foo1()
ret i32 123
F:
call void @foo2()
ret i32 324
}
@ -506,7 +509,7 @@ define void @test13(i32 %x) nounwind ssp noredzone {
; CHECK-NEXT: i32 0, label [[IF_THEN]]
; CHECK-NEXT: ]
; CHECK: if.then:
; CHECK-NEXT: call void @foo1() [[ATTR3:#.*]]
; CHECK-NEXT: call void @foo1() #[[ATTR3:[0-9]+]]
; CHECK-NEXT: br label [[IF_END]]
; CHECK: if.end:
; CHECK-NEXT: ret void
@ -548,7 +551,7 @@ define void @test14(i32 %x) nounwind ssp noredzone {
; CHECK-NEXT: i32 0, label [[IF_THEN]]
; CHECK-NEXT: ]
; CHECK: if.then:
; CHECK-NEXT: call void @foo1() [[ATTR3]]
; CHECK-NEXT: call void @foo1() #[[ATTR3]]
; CHECK-NEXT: br label [[IF_END]]
; CHECK: if.end:
; CHECK-NEXT: ret void

View File

@ -303,7 +303,7 @@ define void @test7(i8 zeroext %c, i32 %x) nounwind ssp noredzone {
; CHECK-NEXT: i8 97, label [[IF_THEN]]
; CHECK-NEXT: ]
; CHECK: if.then:
; CHECK-NEXT: tail call void @foo1() [[ATTR2:#.*]]
; CHECK-NEXT: tail call void @foo1() #[[ATTR2:[0-9]+]]
; CHECK-NEXT: ret void
; CHECK: if.end:
; CHECK-NEXT: ret void
@ -339,7 +339,7 @@ define i32 @test8(i8 zeroext %c, i32 %x, i1 %C) nounwind ssp noredzone {
; CHECK-NEXT: ]
; CHECK: if.then:
; CHECK-NEXT: [[A:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ 42, [[SWITCH_EARLY_TEST]] ], [ 42, [[N]] ], [ 42, [[SWITCH_EARLY_TEST]] ]
; CHECK-NEXT: tail call void @foo1() [[ATTR2]]
; CHECK-NEXT: tail call void @foo1() #[[ATTR2]]
; CHECK-NEXT: ret i32 [[A]]
; CHECK: if.end:
; CHECK-NEXT: ret i32 0
@ -446,10 +446,11 @@ define i32 @test10(i32 %mode, i1 %Cond) {
; CHECK-NEXT: i32 0, label [[F]]
; CHECK-NEXT: ]
; CHECK: T:
; CHECK-NEXT: [[MERGE:%.*]] = phi i32 [ 123, [[SWITCH_EARLY_TEST]] ], [ 324, [[F]] ]
; CHECK-NEXT: ret i32 [[MERGE]]
; CHECK-NEXT: call void @foo1()
; CHECK-NEXT: ret i32 123
; CHECK: F:
; CHECK-NEXT: br label [[T]]
; CHECK-NEXT: call void @foo2()
; CHECK-NEXT: ret i32 324
;
%A = icmp ne i32 %mode, 0
%B = icmp ne i32 %mode, 51
@ -457,8 +458,10 @@ define i32 @test10(i32 %mode, i1 %Cond) {
%D = and i1 %C, %Cond
br i1 %D, label %T, label %F
T:
call void @foo1()
ret i32 123
F:
call void @foo2()
ret i32 324
}
@ -472,10 +475,11 @@ define i32 @test10_select(i32 %mode, i1 %Cond) {
; CHECK-NEXT: i32 0, label [[F]]
; CHECK-NEXT: ]
; CHECK: T:
; CHECK-NEXT: [[MERGE:%.*]] = phi i32 [ 123, [[SWITCH_EARLY_TEST]] ], [ 324, [[F]] ]
; CHECK-NEXT: ret i32 [[MERGE]]
; CHECK-NEXT: call void @foo1()
; CHECK-NEXT: ret i32 123
; CHECK: F:
; CHECK-NEXT: br label [[T]]
; CHECK-NEXT: call void @foo2()
; CHECK-NEXT: ret i32 324
;
%A = icmp ne i32 %mode, 0
%B = icmp ne i32 %mode, 51
@ -483,8 +487,10 @@ define i32 @test10_select(i32 %mode, i1 %Cond) {
%D = select i1 %C, i1 %Cond, i1 false
br i1 %D, label %T, label %F
T:
call void @foo1()
ret i32 123
F:
call void @foo2()
ret i32 324
}
@ -499,10 +505,11 @@ define i32 @test10_select_and(i32 %mode, i1 %Cond) {
; CHECK-NEXT: i32 0, label [[F]]
; CHECK-NEXT: ]
; CHECK: T:
; CHECK-NEXT: [[MERGE:%.*]] = phi i32 [ 123, [[SWITCH_EARLY_TEST]] ], [ 324, [[F]] ]
; CHECK-NEXT: ret i32 [[MERGE]]
; CHECK-NEXT: call void @foo1()
; CHECK-NEXT: ret i32 123
; CHECK: F:
; CHECK-NEXT: br label [[T]]
; CHECK-NEXT: call void @foo2()
; CHECK-NEXT: ret i32 324
;
%A = icmp ne i32 %mode, 0
%B = icmp ne i32 %mode, 51
@ -510,8 +517,10 @@ define i32 @test10_select_and(i32 %mode, i1 %Cond) {
%D = and i1 %C, %Cond
br i1 %D, label %T, label %F
T:
call void @foo1()
ret i32 123
F:
call void @foo2()
ret i32 324
}
@ -525,10 +534,11 @@ define i32 @test10_select_nofreeze(i32 %mode, i1 noundef %Cond) {
; CHECK-NEXT: i32 0, label [[F]]
; CHECK-NEXT: ]
; CHECK: T:
; CHECK-NEXT: [[MERGE:%.*]] = phi i32 [ 123, [[SWITCH_EARLY_TEST]] ], [ 324, [[F]] ]
; CHECK-NEXT: ret i32 [[MERGE]]
; CHECK-NEXT: call void @foo1()
; CHECK-NEXT: ret i32 123
; CHECK: F:
; CHECK-NEXT: br label [[T]]
; CHECK-NEXT: call void @foo2()
; CHECK-NEXT: ret i32 324
;
%A = icmp ne i32 %mode, 0
%B = icmp ne i32 %mode, 51
@ -536,8 +546,10 @@ define i32 @test10_select_nofreeze(i32 %mode, i1 noundef %Cond) {
%D = select i1 %C, i1 %Cond, i1 false
br i1 %D, label %T, label %F
T:
call void @foo1()
ret i32 123
F:
call void @foo2()
ret i32 324
}
@ -594,8 +606,8 @@ return: ; preds = %if.end, %if.then
define void @test12() nounwind {
; CHECK-LABEL: @test12(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[DOTOLD:%.*]] = icmp eq i32 undef, undef
; CHECK-NEXT: br i1 [[DOTOLD]], label [[BB55_US_US:%.*]], label [[MALFORMED:%.*]]
; CHECK-NEXT: [[A_OLD:%.*]] = icmp eq i32 undef, undef
; CHECK-NEXT: br i1 [[A_OLD]], label [[BB55_US_US:%.*]], label [[MALFORMED:%.*]]
; CHECK: bb55.us.us:
; CHECK-NEXT: [[B:%.*]] = icmp ugt i32 undef, undef
; CHECK-NEXT: [[A:%.*]] = icmp eq i32 undef, undef
@ -635,7 +647,7 @@ define void @test13(i32 %x) nounwind ssp noredzone {
; CHECK-NEXT: i32 0, label [[IF_THEN]]
; CHECK-NEXT: ]
; CHECK: if.then:
; CHECK-NEXT: call void @foo1() [[ATTR3:#.*]]
; CHECK-NEXT: call void @foo1() #[[ATTR3:[0-9]+]]
; CHECK-NEXT: br label [[IF_END]]
; CHECK: if.end:
; CHECK-NEXT: ret void
@ -677,7 +689,7 @@ define void @test14(i32 %x) nounwind ssp noredzone {
; CHECK-NEXT: i32 0, label [[IF_THEN]]
; CHECK-NEXT: ]
; CHECK: if.then:
; CHECK-NEXT: call void @foo1() [[ATTR3]]
; CHECK-NEXT: call void @foo1() #[[ATTR3]]
; CHECK-NEXT: br label [[IF_END]]
; CHECK: if.end:
; CHECK-NEXT: ret void