Skip to content

Commit f34bfd5

Browse files
authored
[HWAsan] Fix incorrect lifetime sizes in tests (NFC) (llvm#150459)
These tests used a lifetime size larger than the alloca. When fixing that some check calls go away, so I'm putting this up for review to confirm that this is correct.
1 parent e3b5daf commit f34bfd5

File tree

2 files changed

+12
-20
lines changed

2 files changed

+12
-20
lines changed

llvm/test/Instrumentation/HWAddressSanitizer/RISCV/exception-lifetime.ll

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ define void @test() sanitize_hwaddress personality ptr @__gxx_personality_v0 {
5757
; CHECK-NEXT: [[TMP26:%.*]] = getelementptr i8, ptr [[X]], i32 15
5858
; CHECK-NEXT: store i8 [[TMP20]], ptr [[TMP26]], align 1
5959
; CHECK-NEXT: invoke void @mayFail(ptr [[X_HWASAN]])
60-
; CHECK-NEXT: to label [[INVOKE_CONT:%.*]] unwind label [[LPAD:%.*]]
60+
; CHECK-NEXT: to label [[INVOKE_CONT:%.*]] unwind label [[LPAD:%.*]]
6161
; CHECK: invoke.cont:
6262
; CHECK-NEXT: [[TMP27:%.*]] = trunc i64 [[HWASAN_UAR_TAG]] to i8
6363
; CHECK-NEXT: [[TMP28:%.*]] = ptrtoint ptr [[X]] to i64
@@ -69,12 +69,10 @@ define void @test() sanitize_hwaddress personality ptr @__gxx_personality_v0 {
6969
; CHECK-NEXT: ret void
7070
; CHECK: lpad:
7171
; CHECK-NEXT: [[TMP32:%.*]] = landingpad { ptr, i32 }
72-
; CHECK-NEXT: cleanup
72+
; CHECK-NEXT: cleanup
7373
; CHECK-NEXT: [[TMP33:%.*]] = extractvalue { ptr, i32 } [[TMP32]], 0
74-
; CHECK-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules(ptr [[TMP14]], ptr [[EXN_SLOT]], i32 19)
7574
; CHECK-NEXT: store ptr [[TMP33]], ptr [[EXN_SLOT]], align 8
7675
; CHECK-NEXT: [[TMP34:%.*]] = extractvalue { ptr, i32 } [[TMP32]], 1
77-
; CHECK-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules(ptr [[TMP14]], ptr [[EHSELECTOR_SLOT]], i32 18)
7876
; CHECK-NEXT: store i32 [[TMP34]], ptr [[EHSELECTOR_SLOT]], align 4
7977
; CHECK-NEXT: call void @onExcept(ptr [[X_HWASAN]])
8078
; CHECK-NEXT: [[TMP35:%.*]] = trunc i64 [[HWASAN_UAR_TAG]] to i8
@@ -86,9 +84,7 @@ define void @test() sanitize_hwaddress personality ptr @__gxx_personality_v0 {
8684
; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[X]])
8785
; CHECK-NEXT: br label [[EH_RESUME:%.*]]
8886
; CHECK: eh.resume:
89-
; CHECK-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules(ptr [[TMP14]], ptr [[EXN_SLOT]], i32 3)
9087
; CHECK-NEXT: [[EXN:%.*]] = load ptr, ptr [[EXN_SLOT]], align 8
91-
; CHECK-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules(ptr [[TMP14]], ptr [[EHSELECTOR_SLOT]], i32 2)
9288
; CHECK-NEXT: [[SEL:%.*]] = load i32, ptr [[EHSELECTOR_SLOT]], align 4
9389
; CHECK-NEXT: [[LPAD_VAL:%.*]] = insertvalue { ptr, i32 } undef, ptr [[EXN]], 0
9490
; CHECK-NEXT: [[LPAD_VAL1:%.*]] = insertvalue { ptr, i32 } [[LPAD_VAL]], i32 [[SEL]], 1
@@ -98,12 +94,12 @@ entry:
9894
%x = alloca i32, align 8
9995
%exn.slot = alloca ptr, align 8
10096
%ehselector.slot = alloca i32, align 4
101-
call void @llvm.lifetime.start.p0(i64 8, ptr %x)
97+
call void @llvm.lifetime.start.p0(i64 4, ptr %x)
10298
invoke void @mayFail(ptr %x) to label %invoke.cont unwind label %lpad
10399

104100
invoke.cont: ; preds = %entry
105101

106-
call void @llvm.lifetime.end.p0(i64 8, ptr %x)
102+
call void @llvm.lifetime.end.p0(i64 4, ptr %x)
107103
ret void
108104

109105
lpad: ; preds = %entry
@@ -115,7 +111,7 @@ lpad: ; preds = %entry
115111
%2 = extractvalue { ptr, i32 } %0, 1
116112
store i32 %2, ptr %ehselector.slot, align 4
117113
call void @onExcept(ptr %x) #18
118-
call void @llvm.lifetime.end.p0(i64 8, ptr %x)
114+
call void @llvm.lifetime.end.p0(i64 4, ptr %x)
119115
br label %eh.resume
120116

121117
eh.resume: ; preds = %lpad

llvm/test/Instrumentation/HWAddressSanitizer/exception-lifetime.ll

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ define void @test() sanitize_hwaddress personality ptr @__gxx_personality_v0 {
2222
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[TMP0]], i32 48
2323
; CHECK-NEXT: [[TMP2:%.*]] = load i64, ptr [[TMP1]], align 8
2424
; CHECK-NEXT: [[TMP3:%.*]] = ashr i64 [[TMP2]], 3
25-
; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.read_register.i64(metadata [[META1:![0-9]+]])
25+
; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.read_register.i64(metadata [[META2:![0-9]+]])
2626
; CHECK-NEXT: [[TMP5:%.*]] = call ptr @llvm.frameaddress.p0(i32 0)
2727
; CHECK-NEXT: [[TMP6:%.*]] = ptrtoint ptr [[TMP5]] to i64
2828
; CHECK-NEXT: [[TMP7:%.*]] = shl i64 [[TMP6]], 44
@@ -56,7 +56,7 @@ define void @test() sanitize_hwaddress personality ptr @__gxx_personality_v0 {
5656
; CHECK-NEXT: [[TMP26:%.*]] = getelementptr i8, ptr [[TMP16]], i64 [[TMP25]]
5757
; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 1 [[TMP26]], i8 [[TMP22]], i64 1, i1 false)
5858
; CHECK-NEXT: invoke void @mayFail(ptr [[X_HWASAN]])
59-
; CHECK-NEXT: to label [[INVOKE_CONT:%.*]] unwind label [[LPAD:%.*]]
59+
; CHECK-NEXT: to label [[INVOKE_CONT:%.*]] unwind label [[LPAD:%.*]]
6060
; CHECK: invoke.cont:
6161
; CHECK-NEXT: [[TMP27:%.*]] = trunc i64 [[HWASAN_UAR_TAG]] to i8
6262
; CHECK-NEXT: [[TMP28:%.*]] = ptrtoint ptr [[X]] to i64
@@ -68,14 +68,12 @@ define void @test() sanitize_hwaddress personality ptr @__gxx_personality_v0 {
6868
; CHECK-NEXT: ret void
6969
; CHECK: lpad:
7070
; CHECK-NEXT: [[TMP32:%.*]] = landingpad { ptr, i32 }
71-
; CHECK-NEXT: cleanup
72-
; CHECK-NEXT: [[TMP33:%.*]] = call i64 @llvm.read_register.i64(metadata [[META2:![0-9]+]])
71+
; CHECK-NEXT: cleanup
72+
; CHECK-NEXT: [[TMP33:%.*]] = call i64 @llvm.read_register.i64(metadata [[META3:![0-9]+]])
7373
; CHECK-NEXT: call void @__hwasan_handle_vfork(i64 [[TMP33]])
7474
; CHECK-NEXT: [[TMP34:%.*]] = extractvalue { ptr, i32 } [[TMP32]], 0
75-
; CHECK-NEXT: call void @llvm.hwasan.check.memaccess(ptr [[TMP16]], ptr [[EXN_SLOT]], i32 19)
7675
; CHECK-NEXT: store ptr [[TMP34]], ptr [[EXN_SLOT]], align 8
7776
; CHECK-NEXT: [[TMP35:%.*]] = extractvalue { ptr, i32 } [[TMP32]], 1
78-
; CHECK-NEXT: call void @llvm.hwasan.check.memaccess(ptr [[TMP16]], ptr [[EHSELECTOR_SLOT]], i32 18)
7977
; CHECK-NEXT: store i32 [[TMP35]], ptr [[EHSELECTOR_SLOT]], align 4
8078
; CHECK-NEXT: call void @onExcept(ptr [[X_HWASAN]])
8179
; CHECK-NEXT: [[TMP36:%.*]] = trunc i64 [[HWASAN_UAR_TAG]] to i8
@@ -87,9 +85,7 @@ define void @test() sanitize_hwaddress personality ptr @__gxx_personality_v0 {
8785
; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[X]])
8886
; CHECK-NEXT: br label [[EH_RESUME:%.*]]
8987
; CHECK: eh.resume:
90-
; CHECK-NEXT: call void @llvm.hwasan.check.memaccess(ptr [[TMP16]], ptr [[EXN_SLOT]], i32 3)
9188
; CHECK-NEXT: [[EXN:%.*]] = load ptr, ptr [[EXN_SLOT]], align 8
92-
; CHECK-NEXT: call void @llvm.hwasan.check.memaccess(ptr [[TMP16]], ptr [[EHSELECTOR_SLOT]], i32 2)
9389
; CHECK-NEXT: [[SEL:%.*]] = load i32, ptr [[EHSELECTOR_SLOT]], align 4
9490
; CHECK-NEXT: [[LPAD_VAL:%.*]] = insertvalue { ptr, i32 } undef, ptr [[EXN]], 0
9591
; CHECK-NEXT: [[LPAD_VAL1:%.*]] = insertvalue { ptr, i32 } [[LPAD_VAL]], i32 [[SEL]], 1
@@ -99,12 +95,12 @@ entry:
9995
%x = alloca i32, align 8
10096
%exn.slot = alloca ptr, align 8
10197
%ehselector.slot = alloca i32, align 4
102-
call void @llvm.lifetime.start.p0(i64 8, ptr %x)
98+
call void @llvm.lifetime.start.p0(i64 4, ptr %x)
10399
invoke void @mayFail(ptr %x) to label %invoke.cont unwind label %lpad
104100

105101
invoke.cont: ; preds = %entry
106102

107-
call void @llvm.lifetime.end.p0(i64 8, ptr %x)
103+
call void @llvm.lifetime.end.p0(i64 4, ptr %x)
108104
ret void
109105

110106
lpad: ; preds = %entry
@@ -116,7 +112,7 @@ lpad: ; preds = %entry
116112
%2 = extractvalue { ptr, i32 } %0, 1
117113
store i32 %2, ptr %ehselector.slot, align 4
118114
call void @onExcept(ptr %x) #18
119-
call void @llvm.lifetime.end.p0(i64 8, ptr %x)
115+
call void @llvm.lifetime.end.p0(i64 4, ptr %x)
120116
br label %eh.resume
121117

122118
eh.resume: ; preds = %lpad

0 commit comments

Comments
 (0)