Skip to content

Commit 6e078f9

Browse files
committed
[GVN][NewGVN] Regenerate no_speculative_loads_with_asan.ll tests
As discussed on D124284 - ensure we actually checking the codegen not just a label + return
1 parent d902dd0 commit 6e078f9

File tree

2 files changed

+84
-25
lines changed

2 files changed

+84
-25
lines changed

llvm/test/Transforms/GVN/no_speculative_loads_with_asan.ll

Lines changed: 42 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
12
; RUN: opt -O3 -S %s | FileCheck %s
23
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
34
declare noalias i8* @_Znam(i64) #1
45

56
define i32 @TestNoAsan() {
7+
; CHECK-LABEL: @TestNoAsan(
8+
; CHECK-NEXT: ret i32 0
9+
;
610
%1 = tail call noalias i8* @_Znam(i64 2)
711
%2 = getelementptr inbounds i8, i8* %1, i64 1
812
store i8 0, i8* %2, align 1
@@ -24,10 +28,26 @@ define i32 @TestNoAsan() {
2428
ret i32 %12
2529
}
2630

27-
; CHECK-LABEL: @TestNoAsan
28-
; CHECK: ret i32 0
29-
3031
define i32 @TestAsan() sanitize_address {
32+
; CHECK-LABEL: @TestAsan(
33+
; CHECK-NEXT: [[TMP1:%.*]] = tail call noalias dereferenceable_or_null(2) i8* @_Znam(i64 2)
34+
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds i8, i8* [[TMP1]], i64 1
35+
; CHECK-NEXT: store i8 0, i8* [[TMP2]], align 1
36+
; CHECK-NEXT: store i8 0, i8* [[TMP1]], align 1
37+
; CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[TMP1]] to i16*
38+
; CHECK-NEXT: [[TMP4:%.*]] = load i16, i16* [[TMP3]], align 4
39+
; CHECK-NEXT: [[TMP5:%.*]] = icmp eq i16 [[TMP4]], 0
40+
; CHECK-NEXT: br i1 [[TMP5]], label [[TMP11:%.*]], label [[TMP6:%.*]]
41+
; CHECK: 6:
42+
; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds i8, i8* [[TMP1]], i64 2
43+
; CHECK-NEXT: [[TMP8:%.*]] = bitcast i8* [[TMP7]] to i16*
44+
; CHECK-NEXT: [[TMP9:%.*]] = load i16, i16* [[TMP8]], align 2
45+
; CHECK-NEXT: [[TMP10:%.*]] = sext i16 [[TMP9]] to i32
46+
; CHECK-NEXT: br label [[TMP11]]
47+
; CHECK: 11:
48+
; CHECK-NEXT: [[TMP12:%.*]] = phi i32 [ [[TMP10]], [[TMP6]] ], [ 0, [[TMP0:%.*]] ]
49+
; CHECK-NEXT: ret i32 [[TMP12]]
50+
;
3151
%1 = tail call noalias i8* @_Znam(i64 2)
3252
%2 = getelementptr inbounds i8, i8* %1, i64 1
3353
store i8 0, i8* %2, align 1
@@ -49,12 +69,26 @@ define i32 @TestAsan() sanitize_address {
4969
ret i32 %12
5070
}
5171

52-
; CHECK-LABEL: @TestAsan
53-
; CHECK-NOT: %[[LOAD:[^ ]+]] = load i32
54-
; CHECK: {{.*}} = phi
55-
56-
5772
define i32 @TestHWAsan() sanitize_hwaddress {
73+
; CHECK-LABEL: @TestHWAsan(
74+
; CHECK-NEXT: [[TMP1:%.*]] = tail call noalias dereferenceable_or_null(2) i8* @_Znam(i64 2)
75+
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds i8, i8* [[TMP1]], i64 1
76+
; CHECK-NEXT: store i8 0, i8* [[TMP2]], align 1
77+
; CHECK-NEXT: store i8 0, i8* [[TMP1]], align 1
78+
; CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[TMP1]] to i16*
79+
; CHECK-NEXT: [[TMP4:%.*]] = load i16, i16* [[TMP3]], align 4
80+
; CHECK-NEXT: [[TMP5:%.*]] = icmp eq i16 [[TMP4]], 0
81+
; CHECK-NEXT: br i1 [[TMP5]], label [[TMP11:%.*]], label [[TMP6:%.*]]
82+
; CHECK: 6:
83+
; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds i8, i8* [[TMP1]], i64 2
84+
; CHECK-NEXT: [[TMP8:%.*]] = bitcast i8* [[TMP7]] to i16*
85+
; CHECK-NEXT: [[TMP9:%.*]] = load i16, i16* [[TMP8]], align 2
86+
; CHECK-NEXT: [[TMP10:%.*]] = sext i16 [[TMP9]] to i32
87+
; CHECK-NEXT: br label [[TMP11]]
88+
; CHECK: 11:
89+
; CHECK-NEXT: [[TMP12:%.*]] = phi i32 [ [[TMP10]], [[TMP6]] ], [ 0, [[TMP0:%.*]] ]
90+
; CHECK-NEXT: ret i32 [[TMP12]]
91+
;
5892
%1 = tail call noalias i8* @_Znam(i64 2)
5993
%2 = getelementptr inbounds i8, i8* %1, i64 1
6094
store i8 0, i8* %2, align 1
@@ -75,8 +109,3 @@ define i32 @TestHWAsan() sanitize_hwaddress {
75109
%12 = phi i32 [ %10, %6 ], [ 0, %0 ]
76110
ret i32 %12
77111
}
78-
79-
; CHECK-LABEL: @TestHWAsan
80-
; CHECK-NOT: %[[LOAD:[^ ]+]] = load i32
81-
; CHECK: {{.*}} = phi
82-

llvm/test/Transforms/NewGVN/no_speculative_loads_with_asan.ll

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
12
; RUN: opt -O3 -S %s | FileCheck %s
23
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
34
declare noalias i8* @_Znam(i64) #1
45

56
define i32 @TestNoAsan() {
7+
; CHECK-LABEL: @TestNoAsan(
8+
; CHECK-NEXT: ret i32 0
9+
;
610
%1 = tail call noalias i8* @_Znam(i64 2)
711
%2 = getelementptr inbounds i8, i8* %1, i64 1
812
store i8 0, i8* %2, align 1
@@ -24,10 +28,26 @@ define i32 @TestNoAsan() {
2428
ret i32 %12
2529
}
2630

27-
; CHECK-LABEL: @TestNoAsan
28-
; CHECK: ret i32 0
29-
3031
define i32 @TestAsan() sanitize_address {
32+
; CHECK-LABEL: @TestAsan(
33+
; CHECK-NEXT: [[TMP1:%.*]] = tail call noalias dereferenceable_or_null(2) i8* @_Znam(i64 2)
34+
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds i8, i8* [[TMP1]], i64 1
35+
; CHECK-NEXT: store i8 0, i8* [[TMP2]], align 1
36+
; CHECK-NEXT: store i8 0, i8* [[TMP1]], align 1
37+
; CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[TMP1]] to i16*
38+
; CHECK-NEXT: [[TMP4:%.*]] = load i16, i16* [[TMP3]], align 4
39+
; CHECK-NEXT: [[TMP5:%.*]] = icmp eq i16 [[TMP4]], 0
40+
; CHECK-NEXT: br i1 [[TMP5]], label [[TMP11:%.*]], label [[TMP6:%.*]]
41+
; CHECK: 6:
42+
; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds i8, i8* [[TMP1]], i64 2
43+
; CHECK-NEXT: [[TMP8:%.*]] = bitcast i8* [[TMP7]] to i16*
44+
; CHECK-NEXT: [[TMP9:%.*]] = load i16, i16* [[TMP8]], align 2
45+
; CHECK-NEXT: [[TMP10:%.*]] = sext i16 [[TMP9]] to i32
46+
; CHECK-NEXT: br label [[TMP11]]
47+
; CHECK: 11:
48+
; CHECK-NEXT: [[TMP12:%.*]] = phi i32 [ [[TMP10]], [[TMP6]] ], [ 0, [[TMP0:%.*]] ]
49+
; CHECK-NEXT: ret i32 [[TMP12]]
50+
;
3151
%1 = tail call noalias i8* @_Znam(i64 2)
3252
%2 = getelementptr inbounds i8, i8* %1, i64 1
3353
store i8 0, i8* %2, align 1
@@ -49,11 +69,26 @@ define i32 @TestAsan() sanitize_address {
4969
ret i32 %12
5070
}
5171

52-
; CHECK-LABEL: @TestAsan
53-
; CHECK-NOT: %[[LOAD:[^ ]+]] = load i32
54-
; CHECK: {{.*}} = phi
55-
5672
define i32 @TestHWAsan() sanitize_hwaddress {
73+
; CHECK-LABEL: @TestHWAsan(
74+
; CHECK-NEXT: [[TMP1:%.*]] = tail call noalias dereferenceable_or_null(2) i8* @_Znam(i64 2)
75+
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds i8, i8* [[TMP1]], i64 1
76+
; CHECK-NEXT: store i8 0, i8* [[TMP2]], align 1
77+
; CHECK-NEXT: store i8 0, i8* [[TMP1]], align 1
78+
; CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[TMP1]] to i16*
79+
; CHECK-NEXT: [[TMP4:%.*]] = load i16, i16* [[TMP3]], align 4
80+
; CHECK-NEXT: [[TMP5:%.*]] = icmp eq i16 [[TMP4]], 0
81+
; CHECK-NEXT: br i1 [[TMP5]], label [[TMP11:%.*]], label [[TMP6:%.*]]
82+
; CHECK: 6:
83+
; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds i8, i8* [[TMP1]], i64 2
84+
; CHECK-NEXT: [[TMP8:%.*]] = bitcast i8* [[TMP7]] to i16*
85+
; CHECK-NEXT: [[TMP9:%.*]] = load i16, i16* [[TMP8]], align 2
86+
; CHECK-NEXT: [[TMP10:%.*]] = sext i16 [[TMP9]] to i32
87+
; CHECK-NEXT: br label [[TMP11]]
88+
; CHECK: 11:
89+
; CHECK-NEXT: [[TMP12:%.*]] = phi i32 [ [[TMP10]], [[TMP6]] ], [ 0, [[TMP0:%.*]] ]
90+
; CHECK-NEXT: ret i32 [[TMP12]]
91+
;
5792
%1 = tail call noalias i8* @_Znam(i64 2)
5893
%2 = getelementptr inbounds i8, i8* %1, i64 1
5994
store i8 0, i8* %2, align 1
@@ -74,8 +109,3 @@ define i32 @TestHWAsan() sanitize_hwaddress {
74109
%12 = phi i32 [ %10, %6 ], [ 0, %0 ]
75110
ret i32 %12
76111
}
77-
78-
; CHECK-LABEL: @TestHWAsan
79-
; CHECK-NOT: %[[LOAD:[^ ]+]] = load i32
80-
; CHECK: {{.*}} = phi
81-

0 commit comments

Comments
 (0)