Skip to content

[llvm] Remove br i1 undef from regression tests #116739

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Nov 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
define void @f(i32 %p1) {
bb0:
%0 = icmp eq i32 %p1, 0
br i1 undef, label %bb6, label %bb1
br i1 true, label %bb6, label %bb1

bb1:
br label %bb2
Expand Down
3 changes: 1 addition & 2 deletions llvm/test/Transforms/JumpThreading/basic.ll
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,11 @@ F2:
}


; Undef handling.
define i32 @test3(i1 %cond) {
; CHECK-LABEL: @test3(
; CHECK-NEXT: T1:
; CHECK-NEXT: ret i32 42
br i1 undef, label %T1, label %F1
br i1 true, label %T1, label %F1

T1:
ret i32 42
Expand Down
22 changes: 11 additions & 11 deletions llvm/test/Transforms/JumpThreading/crash.ll
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ return:
}

; PR6119
define i32 @test8(i32 %action) nounwind {
define i32 @test8(i32 %action, i1 %arg) nounwind {
entry:
switch i32 %action, label %lor.rhs [
i32 1, label %if.then
Expand All @@ -257,14 +257,14 @@ lor.end: ; preds = %lor.rhs, %entry
br i1 %cmp103, label %for.cond, label %if.then

for.cond: ; preds = %for.body, %lor.end
br i1 undef, label %if.then, label %for.body
br i1 %arg, label %if.then, label %for.body

for.body: ; preds = %for.cond
br label %for.cond
}

; PR6119
define i32 @test9(i32 %action) nounwind {
define i32 @test9(i32 %action, i1 %arg) nounwind {
entry:
switch i32 %action, label %lor.rhs [
i32 1, label %if.then
Expand All @@ -283,14 +283,14 @@ lor.end: ; preds = %lor.rhs, %entry
br i1 %cmp103, label %for.cond, label %if.then

for.cond: ; preds = %for.body, %lor.end
br i1 undef, label %if.then, label %for.body
br i1 %arg, label %if.then, label %for.body

for.body: ; preds = %for.cond
br label %for.cond
}

; PR6119
define i32 @test10(i32 %action, i32 %type) nounwind {
define i32 @test10(i32 %action, i32 %type, i1 %arg) nounwind {
entry:
%cmp2 = icmp eq i32 %type, 0 ; <i1> [#uses=1]
switch i32 %action, label %lor.rhs [
Expand All @@ -311,7 +311,7 @@ lor.end: ; preds = %lor.rhs, %entry
br i1 %cmp103, label %for.cond, label %if.then

for.cond: ; preds = %for.body, %lor.end
br i1 undef, label %if.then, label %for.body
br i1 %arg, label %if.then, label %for.body

for.body: ; preds = %for.cond
br label %for.cond
Expand Down Expand Up @@ -391,7 +391,7 @@ if.end: ; preds = %land.end69
}

; PR7647
define void @test15() nounwind {
define void @test15(i1 %arg) nounwind {
entry:
ret void

Expand Down Expand Up @@ -420,7 +420,7 @@ lbl_709:
br label %if.end949

for.cond603: ; preds = %for.body607, %if.end336
br i1 undef, label %for.cond603, label %if.end949
br i1 %arg, label %for.cond603, label %if.end949

if.end949: ; preds = %for.cond603, %lbl_709, %for.cond111
%l_678.2 = phi i64 [ %l_678.5, %for.cond111 ], [ undef, %lbl_709 ], [ 5, %for.cond603 ] ; <i64> [#uses=1]
Expand All @@ -430,7 +430,7 @@ for.body1016: ; preds = %for.cond1012
br label %for.body1016

for.cond1035: ; preds = %for.inc1055, %if.then1026
br i1 undef, label %for.cond1040, label %lbl_664
br i1 %arg, label %for.cond1040, label %lbl_664

for.cond1040: ; preds = %for.body1044, %for.cond1035
ret void
Expand Down Expand Up @@ -461,9 +461,9 @@ if.end:
ret void
}

define void @test17() {
define void @test17(i1 %arg) {
entry:
br i1 undef, label %bb269.us.us, label %bb269.us.us.us
br i1 %arg, label %bb269.us.us, label %bb269.us.us.us

bb269.us.us.us:
%indvar = phi i64 [ %indvar.next, %bb287.us.us.us ], [ 0, %entry ]
Expand Down
10 changes: 6 additions & 4 deletions llvm/test/Transforms/JumpThreading/ddt-crash.ll
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ bb11:
ret void
}

define void @spam(ptr %arg) {
define void @spam(ptr %arg, i1 %arg2) {
; CHECK-LABEL: @spam(
; CHECK-NEXT: bb:
; CHECK-NEXT: [[TMP:%.*]] = load i8, ptr undef, align 8
Expand All @@ -87,9 +87,11 @@ define void @spam(ptr %arg) {
; CHECK-NEXT: i8 0, label [[BB11]]
; CHECK-NEXT: i8 1, label [[BB10:%.*]]
; CHECK-NEXT: i8 2, label [[BB10]]
; CHECK-NEXT: i8 3, label [[BB8]]
; CHECK-NEXT: i8 4, label [[BB8]]
; CHECK-NEXT: i8 3, label [[BB7:%.*]]
; CHECK-NEXT: i8 4, label [[BB7]]
; CHECK-NEXT: ]
; CHECK: bb7:
; CHECK-NEXT: br i1 [[ARG2:%.*]], label [[BB8]], label [[BB10]]
; CHECK: bb8:
; CHECK-NEXT: [[TMP9:%.*]] = icmp eq ptr undef, [[ARG:%.*]]
; CHECK-NEXT: br i1 [[TMP9]], label [[BB10]], label [[BB2]]
Expand Down Expand Up @@ -175,7 +177,7 @@ bb6:
br label %bb7

bb7:
br i1 undef, label %bb8, label %bb10
br i1 %arg2, label %bb8, label %bb10

bb8:
%tmp9 = icmp eq ptr undef, %arg
Expand Down
32 changes: 24 additions & 8 deletions llvm/test/Transforms/JumpThreading/ddt-crash4.ll
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

@global = external global i64, align 8

define void @f() {
define void @f(i1 %arg) {
; CHECK-LABEL: @f(
; CHECK-NEXT: bb:
; CHECK-NEXT: br label [[BB1:%.*]]
Expand All @@ -15,12 +15,28 @@ define void @f() {
; CHECK-NEXT: [[TMP4:%.*]] = load i64, ptr @global, align 8
; CHECK-NEXT: [[TMP5:%.*]] = icmp eq i64 [[TMP4]], 0
; CHECK-NEXT: br i1 [[TMP5]], label [[BB23:%.*]], label [[BB23]]
; CHECK: bb23:
; CHECK: bb10:
; CHECK-NEXT: [[TMP11:%.*]] = load i64, ptr @global, align 8
; CHECK-NEXT: [[TMP12:%.*]] = icmp slt i64 [[TMP11]], 5
; CHECK-NEXT: br i1 [[TMP12]], label [[BB14:%.*]], label [[BB17:%.*]]
; CHECK: bb14:
; CHECK-NEXT: br i1 [[ARG:%.*]], label [[BB15:%.*]], label [[BB10:%.*]]
; CHECK: bb15:
; CHECK-NEXT: unreachable
; CHECK: bb17:
; CHECK-NEXT: br label [[BB26:%.*]]
; CHECK: bb18:
; CHECK-NEXT: br i1 [[ARG]], label [[BB23]], label [[BB14]]
; CHECK: bb21:
; CHECK-NEXT: br label [[BB26]]
; CHECK: bb23:
; CHECK-NEXT: br i1 [[ARG]], label [[BB24:%.*]], label [[BB14]]
; CHECK: bb24:
; CHECK-NEXT: br i1 [[ARG]], label [[BB28:%.*]], label [[BB21:%.*]]
; CHECK: bb26:
; CHECK-NEXT: br label [[BB1]]
; CHECK: bb27:
; CHECK-NEXT: br label [[BB26]]
; CHECK-NEXT: br label [[BB24]]
;
bb:
br label %bb1
Expand Down Expand Up @@ -52,7 +68,7 @@ bb13:
br label %bb14

bb14:
br i1 undef, label %bb15, label %bb16
br i1 %arg, label %bb15, label %bb16

bb15:
unreachable
Expand All @@ -64,10 +80,10 @@ bb17:
br label %bb18

bb18:
br i1 undef, label %bb22, label %bb13
br i1 %arg, label %bb22, label %bb13

bb19:
br i1 undef, label %bb20, label %bb21
br i1 %arg, label %bb20, label %bb21

bb20:
unreachable
Expand All @@ -79,10 +95,10 @@ bb22:
br label %bb23

bb23:
br i1 undef, label %bb24, label %bb13
br i1 %arg, label %bb24, label %bb13

bb24:
br i1 undef, label %bb26, label %bb25
br i1 %arg, label %bb26, label %bb25

bb25:
br label %bb19
Expand Down
24 changes: 16 additions & 8 deletions llvm/test/Transforms/JumpThreading/landing-pad.ll
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ entry:
ret void
}

define void @_Z3fn1v() uwtable personality ptr @__gxx_personality_v0 {
define void @_Z3fn1v(i1 %arg) uwtable personality ptr @__gxx_personality_v0 {
; CHECK-LABEL: @_Z3fn1v(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[CALL:%.*]] = call noalias ptr @_Znwm()
Expand Down Expand Up @@ -93,6 +93,8 @@ define void @_Z3fn1v() uwtable personality ptr @__gxx_personality_v0 {
; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr [[_REF_I_I_I]], align 4
; CHECK-NEXT: [[TOBOOL_I_I_I:%.*]] = icmp eq i32 [[TMP3]], 0
; CHECK-NEXT: br i1 [[TOBOOL_I_I_I]], label [[_ZN1BI1DED1EV_EXIT:%.*]], label [[DELETE_NOTNULL_I_I_I:%.*]]
; CHECK: if.then.i.i.i:
; CHECK-NEXT: br i1 [[ARG:%.*]], label [[_ZN1BI1DED1EV_EXIT]], label [[DELETE_NOTNULL_I_I_I1:%.*]]
; CHECK: delete.notnull.i.i.i:
; CHECK-NEXT: call void @_ZdlPv()
; CHECK-NEXT: unreachable
Expand Down Expand Up @@ -138,7 +140,7 @@ lpad1: ; preds = %_ZN1DC1Ev.exit, %_Z
br i1 %tobool.i.i.i, label %_ZN1BI1DED1Ev.exit, label %if.then.i.i.i

if.then.i.i.i: ; preds = %lpad1
br i1 undef, label %_ZN1BI1DED1Ev.exit, label %delete.notnull.i.i.i
br i1 %arg, label %_ZN1BI1DED1Ev.exit, label %delete.notnull.i.i.i

delete.notnull.i.i.i: ; preds = %if.then.i.i.i
call void @_ZdlPv() #9
Expand Down Expand Up @@ -191,14 +193,16 @@ entry:

declare void @_ZN1D16deleteKeyPressedEv()

define void @_ZN1BI1DED1Ev(ptr nocapture readonly %this) unnamed_addr uwtable align 2 {
define void @_ZN1BI1DED1Ev(ptr nocapture readonly %this, i1 %arg) unnamed_addr uwtable align 2 {
; CHECK-LABEL: @_ZN1BI1DED1Ev(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS:%.*]], align 8
; CHECK-NEXT: [[_REF_I_I:%.*]] = getelementptr inbounds [[CLASS_D:%.*]], ptr [[TMP0]], i64 0, i32 0, i32 0, i32 1, i32 0, i32 0
; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[_REF_I_I]], align 4
; CHECK-NEXT: [[TOBOOL_I_I:%.*]] = icmp eq i32 [[TMP1]], 0
; CHECK-NEXT: br i1 [[TOBOOL_I_I]], label [[_ZN1BI1DED2EV_EXIT:%.*]], label [[DELETE_NOTNULL_I_I:%.*]]
; CHECK: if.then.i.i:
; CHECK-NEXT: br i1 [[ARG:%.*]], label [[_ZN1BI1DED2EV_EXIT]], label [[DELETE_NOTNULL_I_I1:%.*]]
; CHECK: delete.notnull.i.i:
; CHECK-NEXT: call void @_ZdlPv()
; CHECK-NEXT: unreachable
Expand All @@ -213,7 +217,7 @@ entry:
br i1 %tobool.i.i, label %_ZN1BI1DED2Ev.exit, label %if.then.i.i

if.then.i.i: ; preds = %entry
br i1 undef, label %_ZN1BI1DED2Ev.exit, label %delete.notnull.i.i
br i1 %arg, label %_ZN1BI1DED2Ev.exit, label %delete.notnull.i.i

delete.notnull.i.i: ; preds = %if.then.i.i
call void @_ZdlPv() #9
Expand All @@ -225,14 +229,16 @@ _ZN1BI1DED2Ev.exit: ; preds = %entry, %if.then.i.i

declare hidden void @__clang_call_terminate()

define void @_ZN1BI1DED2Ev(ptr nocapture readonly %this) unnamed_addr uwtable align 2 {
define void @_ZN1BI1DED2Ev(ptr nocapture readonly %this, i1 %arg) unnamed_addr uwtable align 2 {
; CHECK-LABEL: @_ZN1BI1DED2Ev(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS:%.*]], align 8
; CHECK-NEXT: [[_REF_I:%.*]] = getelementptr inbounds [[CLASS_D:%.*]], ptr [[TMP0]], i64 0, i32 0, i32 0, i32 1, i32 0, i32 0
; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[_REF_I]], align 4
; CHECK-NEXT: [[TOBOOL_I:%.*]] = icmp eq i32 [[TMP1]], 0
; CHECK-NEXT: br i1 [[TOBOOL_I]], label [[_ZN1AI1CE5DEREFEV_EXIT:%.*]], label [[DELETE_NOTNULL_I:%.*]]
; CHECK: if.then.i:
; CHECK-NEXT: br i1 [[ARG:%.*]], label [[_ZN1AI1CE5DEREFEV_EXIT]], label [[DELETE_NOTNULL_I1:%.*]]
; CHECK: delete.notnull.i:
; CHECK-NEXT: call void @_ZdlPv()
; CHECK-NEXT: unreachable
Expand All @@ -247,7 +253,7 @@ entry:
br i1 %tobool.i, label %_ZN1AI1CE5derefEv.exit, label %if.then.i

if.then.i: ; preds = %entry
br i1 undef, label %_ZN1AI1CE5derefEv.exit, label %delete.notnull.i
br i1 %arg, label %_ZN1AI1CE5derefEv.exit, label %delete.notnull.i

delete.notnull.i: ; preds = %if.then.i
call void @_ZdlPv() #9
Expand All @@ -257,12 +263,14 @@ _ZN1AI1CE5derefEv.exit: ; preds = %entry, %if.then.i
ret void
}

define void @_ZN1AI1CE5derefEv(ptr nocapture readonly %this) nounwind uwtable align 2 {
define void @_ZN1AI1CE5derefEv(ptr nocapture readonly %this, i1 %arg) nounwind uwtable align 2 {
; CHECK-LABEL: @_ZN1AI1CE5derefEv(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[THIS:%.*]], align 4
; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i32 [[TMP0]], 0
; CHECK-NEXT: br i1 [[TOBOOL]], label [[IF_END:%.*]], label [[DELETE_NOTNULL:%.*]]
; CHECK: if.then:
; CHECK-NEXT: br i1 [[ARG:%.*]], label [[IF_END]], label [[DELETE_NOTNULL1:%.*]]
; CHECK: delete.notnull:
; CHECK-NEXT: call void @_ZdlPv()
; CHECK-NEXT: unreachable
Expand All @@ -275,7 +283,7 @@ entry:
br i1 %tobool, label %if.end, label %if.then

if.then: ; preds = %entry
br i1 undef, label %if.end, label %delete.notnull
br i1 %arg, label %if.end, label %delete.notnull

delete.notnull: ; preds = %if.then
call void @_ZdlPv() #9
Expand Down
13 changes: 8 additions & 5 deletions llvm/test/Transforms/JumpThreading/pr22086.ll
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,15 @@



define void @f() {
; CHECK-LABEL: define void @f() {
define void @f(i1 %arg) {
; CHECK-LABEL: define void @f(
; CHECK-SAME: i1 [[ARG:%.*]]) {
; CHECK-NEXT: [[ENTRY:.*:]]
; CHECK-NEXT: br label %[[LOR_RHS:.*]]
; CHECK-NEXT: br label %[[FOR_COND1:.*]]
; CHECK: [[FOR_COND1]]:
; CHECK-NEXT: br i1 [[ARG]], label %[[LOR_RHS:.*]], label %[[LOR_RHS]]
; CHECK: [[LOR_RHS]]:
; CHECK-NEXT: br label %[[LOR_RHS]]
; CHECK-NEXT: br label %[[FOR_COND1]]
;
entry:
br label %for.cond1
Expand All @@ -23,7 +26,7 @@ if.end16:

for.cond1:
%g.1 = phi i32 [ 0, %entry ], [ 0, %lor.rhs ], [ %g.3, %if.end16 ]
br i1 undef, label %lor.rhs, label %if.end16
br i1 %arg, label %lor.rhs, label %if.end16

lor.rhs:
br label %for.cond1
Expand Down
7 changes: 3 additions & 4 deletions llvm/test/Transforms/JumpThreading/pr9331.ll
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,16 @@ entry:

for.cond2: ; preds = %for.inc46, %lor.end, %entry
%p_44.addr.1 = phi i8 [ %p_44.addr.1, %lor.end ], [ %p_44, %entry ], [ %p_44.addr.1, %for.inc46 ]
br i1 undef, label %for.inc46, label %for.body5
br i1 true, label %for.inc46, label %for.body5

for.body5: ; preds = %for.cond2
br i1 undef, label %lbl_465, label %if.then9
br i1 false, label %lbl_465, label %if.then9

if.then9: ; preds = %for.body5
br label %return

lbl_465: ; preds = %lbl_465, %for.body5
%tobool19 = icmp eq i8 undef, 0
br i1 %tobool19, label %if.end21, label %lbl_465
br i1 true, label %if.end21, label %lbl_465

if.end21: ; preds = %lbl_465
%conv23 = zext i8 %p_44.addr.1 to i64
Expand Down
5 changes: 2 additions & 3 deletions llvm/test/Transforms/JumpThreading/preserving-debugloc-br.ll
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,10 @@ lor.rhs: ; preds = %entry
br label %lor.end, !dbg !10

lor.end: ; preds = %lor.rhs, %entry
%cmp103 = xor i1 undef, undef, !dbg !11
br i1 %cmp103, label %for.cond, label %if.then, !dbg !12
br i1 false, label %for.cond, label %if.then, !dbg !12

for.cond: ; preds = %for.body, %lor.end
br i1 undef, label %if.then, label %for.body, !dbg !13
br i1 false, label %if.then, label %for.body, !dbg !13

for.body: ; preds = %for.cond
br label %for.cond, !dbg !14
Expand Down
Loading
Loading