1
+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
1
2
; RUN: opt -bdce %s -S | FileCheck %s
2
3
3
4
; The 'nuw' on the subtract allows us to deduce that %setbit is not demanded.
8
9
9
10
define i1 @PR33695 (i1 %b , i8 %x ) {
10
11
; CHECK-LABEL: @PR33695(
11
- ; CHECK-NEXT: [[SETBIT:%.*]] = or i8 %x , 64
12
- ; CHECK-NEXT: [[LITTLE_NUMBER:%.*]] = zext i1 %b to i8
12
+ ; CHECK-NEXT: [[SETBIT:%.*]] = or i8 [[X:%.*]] , 64
13
+ ; CHECK-NEXT: [[LITTLE_NUMBER:%.*]] = zext i1 [[B:%.*]] to i8
13
14
; CHECK-NEXT: [[BIG_NUMBER:%.*]] = shl i8 0, 1
14
15
; CHECK-NEXT: [[SUB:%.*]] = sub i8 [[BIG_NUMBER]], [[LITTLE_NUMBER]]
15
16
; CHECK-NEXT: [[TRUNC:%.*]] = trunc i8 [[SUB]] to i1
@@ -28,16 +29,16 @@ define i1 @PR33695(i1 %b, i8 %x) {
28
29
29
30
define i64 @PR34037 (i64 %m , i32 %r , i64 %j , i1 %b , i32 %k , i64 %p ) {
30
31
; CHECK-LABEL: @PR34037(
31
- ; CHECK-NEXT: [[CONV:%.*]] = zext i32 %r to i64
32
- ; CHECK-NEXT: [[AND:%.*]] = and i64 %m , 0
32
+ ; CHECK-NEXT: [[CONV:%.*]] = zext i32 [[R:%.*]] to i64
33
+ ; CHECK-NEXT: [[AND:%.*]] = and i64 [[M:%.*]] , 0
33
34
; CHECK-NEXT: [[NEG:%.*]] = xor i64 0, 34359738367
34
- ; CHECK-NEXT: [[OR:%.*]] = or i64 %j , 0
35
+ ; CHECK-NEXT: [[OR:%.*]] = or i64 [[J:%.*]] , 0
35
36
; CHECK-NEXT: [[SHL:%.*]] = shl i64 0, 29
36
- ; CHECK-NEXT: [[CONV1:%.*]] = select i1 %b , i64 7, i64 0
37
+ ; CHECK-NEXT: [[CONV1:%.*]] = select i1 [[B:%.*]] , i64 7, i64 0
37
38
; CHECK-NEXT: [[SUB:%.*]] = sub i64 [[SHL]], [[CONV1]]
38
- ; CHECK-NEXT: [[CONV2:%.*]] = zext i32 %k to i64
39
+ ; CHECK-NEXT: [[CONV2:%.*]] = zext i32 [[K:%.*]] to i64
39
40
; CHECK-NEXT: [[MUL:%.*]] = mul i64 [[SUB]], [[CONV2]]
40
- ; CHECK-NEXT: [[CONV4:%.*]] = and i64 %p , 65535
41
+ ; CHECK-NEXT: [[CONV4:%.*]] = and i64 [[P:%.*]] , 65535
41
42
; CHECK-NEXT: [[AND5:%.*]] = and i64 [[MUL]], [[CONV4]]
42
43
; CHECK-NEXT: ret i64 [[AND5]]
43
44
;
@@ -63,8 +64,8 @@ declare i1 @foo(i1)
63
64
64
65
define i1 @poison_on_call_user_is_ok (i1 %b , i8 %x ) {
65
66
; CHECK-LABEL: @poison_on_call_user_is_ok(
66
- ; CHECK-NEXT: [[SETBIT:%.*]] = or i8 %x , 64
67
- ; CHECK-NEXT: [[LITTLE_NUMBER:%.*]] = zext i1 %b to i8
67
+ ; CHECK-NEXT: [[SETBIT:%.*]] = or i8 [[X:%.*]] , 64
68
+ ; CHECK-NEXT: [[LITTLE_NUMBER:%.*]] = zext i1 [[B:%.*]] to i8
68
69
; CHECK-NEXT: [[BIG_NUMBER:%.*]] = shl i8 0, 1
69
70
; CHECK-NEXT: [[SUB:%.*]] = sub i8 [[BIG_NUMBER]], [[LITTLE_NUMBER]]
70
71
; CHECK-NEXT: [[TRUNC:%.*]] = trunc i8 [[SUB]] to i1
@@ -90,7 +91,7 @@ define i1 @poison_on_call_user_is_ok(i1 %b, i8 %x) {
90
91
91
92
define void @PR34179 (i32* %a ) {
92
93
; CHECK-LABEL: @PR34179(
93
- ; CHECK-NEXT: [[T0:%.*]] = load volatile i32, i32* %a
94
+ ; CHECK-NEXT: [[T0:%.*]] = load volatile i32, i32* [[A:%.*]]
94
95
; CHECK-NEXT: ret void
95
96
;
96
97
%t0 = load volatile i32 , i32* %a
0 commit comments