Skip to content

Commit 539f916

Browse files
[Instrumentation] Precommit tests for PR108552 (NFC)
1 parent 827dd1e commit 539f916

File tree

1 file changed

+115
-0
lines changed

1 file changed

+115
-0
lines changed
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2+
; RUN: opt < %s -passes=asan -S | FileCheck %s --check-prefixes=CHECK,CHECK-ASAN
3+
; RUN: opt < %s -passes=tsan -S | FileCheck %s --check-prefixes=CHECK,CHECK-TSAN
4+
; RUN: opt < %s -passes=msan -S | FileCheck %s --check-prefixes=CHECK,CHECK-MSAN
5+
; RUN: opt < %s -passes=hwasan -S | FileCheck %s --check-prefixes=CHECK,CHECK-HWASAN
6+
; RUN: opt < %s -passes='module(sancov-module)' -sanitizer-coverage-level=3 -sanitizer-coverage-control-flow -S | FileCheck %s --check-prefixes=CHECK,CHECK-SANCOV
7+
; RUN: opt < %s -passes='module(sanmd-module)' -sanitizer-metadata-atomics -S | FileCheck %s --check-prefixes=CHECK,CHECK-SANMD
8+
9+
; REQUIRES: x86-registered-target
10+
11+
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
12+
target triple = "x86_64-unknown-linux-gnu"
13+
14+
define void @naked_function(ptr byval(i32) %p) {
15+
; CHECK-ASAN-LABEL: define void @naked_function(
16+
; CHECK-ASAN-SAME: ptr byval(i32) [[P:%.*]]) {
17+
; CHECK-ASAN-NEXT: call void asm sideeffect "nop", ""()
18+
; CHECK-ASAN-NEXT: unreachable
19+
;
20+
; CHECK-TSAN-LABEL: define void @naked_function(
21+
; CHECK-TSAN-SAME: ptr byval(i32) [[P:%.*]]) personality ptr @__gcc_personality_v0 {
22+
; CHECK-TSAN-NEXT: [[TMP1:%.*]] = call ptr @llvm.returnaddress(i32 0)
23+
; CHECK-TSAN-NEXT: call void @__tsan_func_entry(ptr [[TMP1]])
24+
; CHECK-TSAN-NEXT: invoke void asm sideeffect "nop", ""()
25+
; CHECK-TSAN-NEXT: to [[DOTNOEXC:label %.*]] unwind label %[[TSAN_CLEANUP:.*]]
26+
; CHECK-TSAN: [[_NOEXC:.*:]]
27+
; CHECK-TSAN-NEXT: unreachable
28+
; CHECK-TSAN: [[TSAN_CLEANUP]]:
29+
; CHECK-TSAN-NEXT: [[CLEANUP_LPAD:%.*]] = landingpad { ptr, i32 }
30+
; CHECK-TSAN-NEXT: cleanup
31+
; CHECK-TSAN-NEXT: call void @__tsan_func_exit()
32+
; CHECK-TSAN-NEXT: resume { ptr, i32 } [[CLEANUP_LPAD]]
33+
;
34+
; CHECK-MSAN-LABEL: define void @naked_function(
35+
; CHECK-MSAN-SAME: ptr byval(i32) [[P:%.*]]) {
36+
; CHECK-MSAN-NEXT: call void @llvm.donothing()
37+
; CHECK-MSAN-NEXT: call void asm sideeffect "nop", ""()
38+
; CHECK-MSAN-NEXT: unreachable
39+
;
40+
; CHECK-HWASAN-LABEL: define void @naked_function(
41+
; CHECK-HWASAN-SAME: ptr byval(i32) [[P:%.*]]) {
42+
; CHECK-HWASAN-NEXT: call void asm sideeffect "nop", ""()
43+
; CHECK-HWASAN-NEXT: unreachable
44+
;
45+
; CHECK-SANCOV-LABEL: define void @naked_function(
46+
; CHECK-SANCOV-SAME: ptr byval(i32) [[P:%.*]]) {
47+
; CHECK-SANCOV-NEXT: call void asm sideeffect "nop", ""()
48+
; CHECK-SANCOV-NEXT: unreachable
49+
;
50+
; CHECK-SANMD-LABEL: define void @naked_function(
51+
; CHECK-SANMD-SAME: ptr byval(i32) [[P:%.*]]) !pcsections [[META0:![0-9]+]] {
52+
; CHECK-SANMD-NEXT: call void asm sideeffect "nop", ""()
53+
; CHECK-SANMD-NEXT: unreachable
54+
;
55+
call void asm sideeffect "nop", ""()
56+
unreachable
57+
}
58+
59+
define void @naked_function_with_asan(ptr byval(i32) %p) sanitize_address {
60+
; CHECK-ASAN-LABEL: define void @naked_function_with_asan(
61+
; CHECK-ASAN-SAME: ptr byval(i32) [[P:%.*]]) #[[ATTR0:[0-9]+]] {
62+
; CHECK-ASAN-NEXT: [[P_BYVAL:%.*]] = alloca i32, align 4
63+
; CHECK-ASAN-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[P_BYVAL]], ptr align 4 [[P]], i64 4, i1 false)
64+
; CHECK-ASAN-NEXT: call void asm sideeffect "nop", ""()
65+
; CHECK-ASAN-NEXT: unreachable
66+
;
67+
call void asm sideeffect "nop", ""()
68+
unreachable
69+
}
70+
71+
define void @naked_function_with_tsan(ptr byval(i32) %p) sanitize_thread {
72+
; CHECK-TSAN-LABEL: define void @naked_function_with_tsan(
73+
; CHECK-TSAN-SAME: ptr byval(i32) [[P:%.*]]) #[[ATTR1:[0-9]+]] personality ptr @__gcc_personality_v0 {
74+
; CHECK-TSAN-NEXT: [[TMP1:%.*]] = call ptr @llvm.returnaddress(i32 0)
75+
; CHECK-TSAN-NEXT: call void @__tsan_func_entry(ptr [[TMP1]])
76+
; CHECK-TSAN-NEXT: invoke void asm sideeffect "nop", ""()
77+
; CHECK-TSAN-NEXT: to [[DOTNOEXC:label %.*]] unwind label %[[TSAN_CLEANUP:.*]]
78+
; CHECK-TSAN: [[_NOEXC:.*:]]
79+
; CHECK-TSAN-NEXT: unreachable
80+
; CHECK-TSAN: [[TSAN_CLEANUP]]:
81+
; CHECK-TSAN-NEXT: [[CLEANUP_LPAD:%.*]] = landingpad { ptr, i32 }
82+
; CHECK-TSAN-NEXT: cleanup
83+
; CHECK-TSAN-NEXT: call void @__tsan_func_exit()
84+
; CHECK-TSAN-NEXT: resume { ptr, i32 } [[CLEANUP_LPAD]]
85+
;
86+
call void asm sideeffect "nop", ""()
87+
unreachable
88+
}
89+
90+
define void @naked_function_with_msan(ptr byval(i32) %p) sanitize_memory {
91+
; CHECK-MSAN-LABEL: define void @naked_function_with_msan(
92+
; CHECK-MSAN-SAME: ptr byval(i32) [[P:%.*]]) #[[ATTR2:[0-9]+]] {
93+
; CHECK-MSAN-NEXT: call void @llvm.donothing()
94+
; CHECK-MSAN-NEXT: call void asm sideeffect "nop", ""()
95+
; CHECK-MSAN-NEXT: unreachable
96+
;
97+
call void asm sideeffect "nop", ""()
98+
unreachable
99+
}
100+
101+
define void @naked_function_with_hwasan(ptr byval(i32) %p) sanitize_hwaddress {
102+
; CHECK-HWASAN-LABEL: define void @naked_function_with_hwasan(
103+
; CHECK-HWASAN-SAME: ptr byval(i32) [[P:%.*]]) #[[ATTR3:[0-9]+]] {
104+
; CHECK-HWASAN-NEXT: call void asm sideeffect "nop", ""()
105+
; CHECK-HWASAN-NEXT: unreachable
106+
;
107+
call void asm sideeffect "nop", ""()
108+
unreachable
109+
}
110+
;.
111+
; CHECK-SANMD: [[META0]] = !{!"sanmd_covered2!C", [[META1:![0-9]+]]}
112+
; CHECK-SANMD: [[META1]] = !{i64 1}
113+
;.
114+
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
115+
; CHECK: {{.*}}

0 commit comments

Comments
 (0)