Skip to content

Commit 384c35f

Browse files
committed
Fixup tests
1 parent 2edb5d3 commit 384c35f

File tree

16 files changed

+1482
-156
lines changed

16 files changed

+1482
-156
lines changed

clang/test/CodeGen/sanitize-type-outlined.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
// UNSUPPORTED: target={{.*}}-windows-{{.*}}
22

3-
// RUN: %clang -S -fsanitize=type -emit-llvm -o - -fsanitize=type %s \
4-
// RUN: | FileCheck %s --check-prefixes=CHECK-NO-OUTLINE
53
// RUN: %clang -S -fsanitize=type -emit-llvm -o - -fsanitize=type %s \
64
// RUN: -fsanitize-type-outline-instrumentation \
75
// RUN: | FileCheck %s --check-prefixes=CHECK-OUTLINE
6+
// RUN: %clang -S -fsanitize=type -emit-llvm -o - -fsanitize=type %s \
7+
// RUN: -fno-sanitize-type-outline-instrumentation \
8+
// RUN: | FileCheck %s --check-prefixes=CHECK-NO-OUTLINE
89

9-
// CHECK-NO-OUTLINE-NOT: call{{.*}}@__tysan_instrument_mem_inst
1010
// CHECK-OUTLINE: call{{.*}}@__tysan_instrument_mem_inst
11+
// CHECK-NO-OUTLINE-NOT: call{{.*}}@__tysan_instrument_mem_inst
1112

1213
float alias(int *ptr){
1314
float *aliasedPtr = (float *)ptr;

llvm/test/Instrumentation/TypeSanitizer/access-with-offset.ll

Lines changed: 64 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals all --version 6
2-
; RUN: opt -passes='tysan' -S %s | FileCheck %s
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
2+
3+
; RUN: opt -passes='tysan' -tysan-outline-instrumentation=false -S %s | FileCheck %s --check-prefix=CHECK-INLINE
4+
; RUN: opt -passes='tysan' -S %s | FileCheck %s --check-prefix=CHECK-OUTLINE
35

4-
;.
56
; CHECK: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 0, ptr @tysan.module_ctor, ptr null }]
67
; CHECK: @__tysan_v1_Simple_20C_2fC_2b_2b_20TBAA = linkonce_odr constant { i64, i64, [18 x i8] } { i64 2, i64 0, [18 x i8] c"Simple C/C++ TBAA\00" }, comdat
78
; CHECK: @__tysan_v1_omnipotent_20char = linkonce_odr constant { i64, i64, ptr, i64, [16 x i8] } { i64 2, i64 1, ptr @__tysan_v1_Simple_20C_2fC_2b_2b_20TBAA, i64 0, [16 x i8] c"omnipotent char\00" }, comdat
@@ -10,7 +11,6 @@
1011
; CHECK: @llvm.used = appending global [5 x ptr] [ptr @tysan.module_ctor, ptr @__tysan_v1_Simple_20C_2fC_2b_2b_20TBAA, ptr @__tysan_v1_omnipotent_20char, ptr @__tysan_v1_any_20pointer, ptr @__tysan_v1_any_20pointer_o_0], section "llvm.metadata"
1112
; CHECK: @__tysan_shadow_memory_address = external global i64
1213
; CHECK: @__tysan_app_memory_mask = external global i64
13-
;.
1414
define ptr @test_load_offset(ptr %argv) {
1515
; CHECK-LABEL: define ptr @test_load_offset(
1616
; CHECK-SAME: ptr [[ARGV:%.*]]) {
@@ -52,6 +52,55 @@ define ptr @test_load_offset(ptr %argv) {
5252
; CHECK-NEXT: [[L:%.*]] = load ptr, ptr null, align 8, !tbaa [[ANYPTR_TBAA1:![0-9]+]]
5353
; CHECK-NEXT: ret ptr [[L]]
5454
;
55+
; CHECK-INLINE-LABEL: define ptr @test_load_offset(
56+
; CHECK-INLINE-SAME: ptr [[ARGV:%.*]]) {
57+
; CHECK-INLINE-NEXT: [[ENTRY:.*:]]
58+
; CHECK-INLINE-NEXT: [[APP_MEM_MASK:%.*]] = load i64, ptr @__tysan_app_memory_mask, align 4
59+
; CHECK-INLINE-NEXT: [[SHADOW_BASE:%.*]] = load i64, ptr @__tysan_shadow_memory_address, align 4
60+
; CHECK-INLINE-NEXT: [[APP_PTR_MASKED:%.*]] = and i64 0, [[APP_MEM_MASK]]
61+
; CHECK-INLINE-NEXT: [[APP_PTR_SHIFTED:%.*]] = shl i64 [[APP_PTR_MASKED]], 3
62+
; CHECK-INLINE-NEXT: [[SHADOW_PTR_INT:%.*]] = add i64 [[APP_PTR_SHIFTED]], [[SHADOW_BASE]]
63+
; CHECK-INLINE-NEXT: [[SHADOW_PTR:%.*]] = inttoptr i64 [[SHADOW_PTR_INT]] to ptr
64+
; CHECK-INLINE-NEXT: [[SHADOW_DESC:%.*]] = load ptr, ptr [[SHADOW_PTR]], align 8
65+
; CHECK-INLINE-NEXT: [[DESC_SET:%.*]] = icmp eq ptr [[SHADOW_DESC]], null
66+
; CHECK-INLINE-NEXT: br i1 [[DESC_SET]], label %[[SET_TYPE:.*]], label %[[BB0:.*]], !prof [[PROF0:![0-9]+]]
67+
; CHECK-INLINE: [[SET_TYPE]]:
68+
; CHECK-INLINE-NEXT: store ptr @__tysan_v1_any_20pointer_o_0, ptr [[SHADOW_PTR]], align 8
69+
; CHECK-INLINE-NEXT: [[SHADOW_BYTE_1_OFFSET:%.*]] = add i64 [[SHADOW_PTR_INT]], 8
70+
; CHECK-INLINE-NEXT: [[SHADOW_BYTE_1_PTR:%.*]] = inttoptr i64 [[SHADOW_BYTE_1_OFFSET]] to ptr
71+
; CHECK-INLINE-NEXT: store ptr inttoptr (i64 -1 to ptr), ptr [[SHADOW_BYTE_1_PTR]], align 8
72+
; CHECK-INLINE-NEXT: [[SHADOW_BYTE_2_OFFSET:%.*]] = add i64 [[SHADOW_PTR_INT]], 16
73+
; CHECK-INLINE-NEXT: [[SHADOW_BYTE_2_PTR:%.*]] = inttoptr i64 [[SHADOW_BYTE_2_OFFSET]] to ptr
74+
; CHECK-INLINE-NEXT: store ptr inttoptr (i64 -2 to ptr), ptr [[SHADOW_BYTE_2_PTR]], align 8
75+
; CHECK-INLINE-NEXT: [[SHADOW_BYTE_3_OFFSET:%.*]] = add i64 [[SHADOW_PTR_INT]], 24
76+
; CHECK-INLINE-NEXT: [[SHADOW_BYTE_3_PTR:%.*]] = inttoptr i64 [[SHADOW_BYTE_3_OFFSET]] to ptr
77+
; CHECK-INLINE-NEXT: store ptr inttoptr (i64 -3 to ptr), ptr [[SHADOW_BYTE_3_PTR]], align 8
78+
; CHECK-INLINE-NEXT: [[SHADOW_BYTE_4_OFFSET:%.*]] = add i64 [[SHADOW_PTR_INT]], 32
79+
; CHECK-INLINE-NEXT: [[SHADOW_BYTE_4_PTR:%.*]] = inttoptr i64 [[SHADOW_BYTE_4_OFFSET]] to ptr
80+
; CHECK-INLINE-NEXT: store ptr inttoptr (i64 -4 to ptr), ptr [[SHADOW_BYTE_4_PTR]], align 8
81+
; CHECK-INLINE-NEXT: [[SHADOW_BYTE_5_OFFSET:%.*]] = add i64 [[SHADOW_PTR_INT]], 40
82+
; CHECK-INLINE-NEXT: [[SHADOW_BYTE_5_PTR:%.*]] = inttoptr i64 [[SHADOW_BYTE_5_OFFSET]] to ptr
83+
; CHECK-INLINE-NEXT: store ptr inttoptr (i64 -5 to ptr), ptr [[SHADOW_BYTE_5_PTR]], align 8
84+
; CHECK-INLINE-NEXT: [[SHADOW_BYTE_6_OFFSET:%.*]] = add i64 [[SHADOW_PTR_INT]], 48
85+
; CHECK-INLINE-NEXT: [[SHADOW_BYTE_6_PTR:%.*]] = inttoptr i64 [[SHADOW_BYTE_6_OFFSET]] to ptr
86+
; CHECK-INLINE-NEXT: store ptr inttoptr (i64 -6 to ptr), ptr [[SHADOW_BYTE_6_PTR]], align 8
87+
; CHECK-INLINE-NEXT: [[SHADOW_BYTE_7_OFFSET:%.*]] = add i64 [[SHADOW_PTR_INT]], 56
88+
; CHECK-INLINE-NEXT: [[SHADOW_BYTE_7_PTR:%.*]] = inttoptr i64 [[SHADOW_BYTE_7_OFFSET]] to ptr
89+
; CHECK-INLINE-NEXT: store ptr inttoptr (i64 -7 to ptr), ptr [[SHADOW_BYTE_7_PTR]], align 8
90+
; CHECK-INLINE-NEXT: br label %[[BB0]]
91+
; CHECK-INLINE: [[BB0]]:
92+
; CHECK-INLINE-NEXT: [[L:%.*]] = load ptr, ptr null, align 8, !tbaa [[ANYPTR_TBAA1:![0-9]+]]
93+
; CHECK-INLINE-NEXT: ret ptr [[L]]
94+
;
95+
; CHECK-OUTLINE-LABEL: define ptr @test_load_offset(
96+
; CHECK-OUTLINE-SAME: ptr [[ARGV:%.*]]) {
97+
; CHECK-OUTLINE-NEXT: [[ENTRY:.*:]]
98+
; CHECK-OUTLINE-NEXT: [[APP_MEM_MASK:%.*]] = load i64, ptr @__tysan_app_memory_mask, align 4
99+
; CHECK-OUTLINE-NEXT: [[SHADOW_BASE:%.*]] = load i64, ptr @__tysan_shadow_memory_address, align 4
100+
; CHECK-OUTLINE-NEXT: call void @__tysan_instrument_with_shadow_update(ptr null, ptr @__tysan_v1_any_20pointer_o_0, i1 false, i64 8, i32 1)
101+
; CHECK-OUTLINE-NEXT: [[L:%.*]] = load ptr, ptr null, align 8, !tbaa [[ANYPTR_TBAA0:![0-9]+]]
102+
; CHECK-OUTLINE-NEXT: ret ptr [[L]]
103+
;
55104
entry:
56105
%l = load ptr, ptr null, align 8, !tbaa !0
57106
ret ptr %l
@@ -61,12 +110,21 @@ entry:
61110
!1 = !{!"any pointer", !2, i64 0}
62111
!2 = !{!"omnipotent char", !3, i64 0}
63112
!3 = !{!"Simple C/C++ TBAA"}
64-
;.
65113
; CHECK: attributes #[[ATTR0:[0-9]+]] = { nounwind }
66-
;.
67114
; CHECK: [[PROF0]] = !{!"branch_weights", i32 1, i32 100000}
68115
; CHECK: [[ANYPTR_TBAA1]] = !{[[META2:![0-9]+]], [[META2]], i64 0}
69116
; CHECK: [[META2]] = !{!"any pointer", [[META3:![0-9]+]], i64 0}
70117
; CHECK: [[META3]] = !{!"omnipotent char", [[META4:![0-9]+]], i64 0}
71118
; CHECK: [[META4]] = !{!"Simple C/C++ TBAA"}
72119
;.
120+
; CHECK-INLINE: [[PROF0]] = !{!"branch_weights", i32 1, i32 100000}
121+
; CHECK-INLINE: [[ANYPTR_TBAA1]] = !{[[META2:![0-9]+]], [[META2]], i64 0}
122+
; CHECK-INLINE: [[META2]] = !{!"any pointer", [[META3:![0-9]+]], i64 0}
123+
; CHECK-INLINE: [[META3]] = !{!"omnipotent char", [[META4:![0-9]+]], i64 0}
124+
; CHECK-INLINE: [[META4]] = !{!"Simple C/C++ TBAA"}
125+
;.
126+
; CHECK-OUTLINE: [[ANYPTR_TBAA0]] = !{[[META1:![0-9]+]], [[META1]], i64 0}
127+
; CHECK-OUTLINE: [[META1]] = !{!"any pointer", [[META2:![0-9]+]], i64 0}
128+
; CHECK-OUTLINE: [[META2]] = !{!"omnipotent char", [[META3:![0-9]+]], i64 0}
129+
; CHECK-OUTLINE: [[META3]] = !{!"Simple C/C++ TBAA"}
130+
;.

llvm/test/Instrumentation/TypeSanitizer/alloca-only.ll

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,26 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals
22
; Test basic type sanitizer instrumentation.
33
;
4-
; RUN: opt -passes='tysan' -S %s | FileCheck %s
4+
; RUN: opt -passes='tysan' -tysan-outline-instrumentation=false -S %s | FileCheck %s --check-prefix=CHECK-INLINE
5+
; RUN: opt -passes='tysan' -S %s | FileCheck %s --check-prefix=CHECK-OUTLINE
56

67
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
78

8-
;.
99
; CHECK: @llvm.used = appending global [1 x ptr] [ptr @tysan.module_ctor], section "llvm.metadata"
1010
; CHECK: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 0, ptr @tysan.module_ctor, ptr null }]
1111
; CHECK: @__tysan_shadow_memory_address = external global i64
1212
; CHECK: @__tysan_app_memory_mask = external global i64
1313
;.
14+
; CHECK-INLINE: @llvm.used = appending global [1 x ptr] [ptr @tysan.module_ctor], section "llvm.metadata"
15+
; CHECK-INLINE: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 0, ptr @tysan.module_ctor, ptr null }]
16+
; CHECK-INLINE: @__tysan_shadow_memory_address = external global i64
17+
; CHECK-INLINE: @__tysan_app_memory_mask = external global i64
18+
;.
19+
; CHECK-OUTLINE: @llvm.used = appending global [1 x ptr] [ptr @tysan.module_ctor], section "llvm.metadata"
20+
; CHECK-OUTLINE: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 0, ptr @tysan.module_ctor, ptr null }]
21+
; CHECK-OUTLINE: @__tysan_shadow_memory_address = external global i64
22+
; CHECK-OUTLINE: @__tysan_app_memory_mask = external global i64
23+
;.
1424
define void @test_alloca_only() sanitize_type {
1525
; CHECK-LABEL: @test_alloca_only(
1626
; CHECK-NEXT: entry:
@@ -26,6 +36,29 @@ define void @test_alloca_only() sanitize_type {
2636
; CHECK-NEXT: call void @foo(ptr [[TMP1]])
2737
; CHECK-NEXT: ret void
2838
;
39+
; CHECK-INLINE-LABEL: @test_alloca_only(
40+
; CHECK-INLINE-NEXT: entry:
41+
; CHECK-INLINE-NEXT: [[APP_MEM_MASK:%.*]] = load i64, ptr @__tysan_app_memory_mask, align 8
42+
; CHECK-INLINE-NEXT: [[SHADOW_BASE:%.*]] = load i64, ptr @__tysan_shadow_memory_address, align 8
43+
; CHECK-INLINE-NEXT: [[A:%.*]] = alloca i32, align 4
44+
; CHECK-INLINE-NEXT: [[TMP0:%.*]] = ptrtoint ptr [[A]] to i64
45+
; CHECK-INLINE-NEXT: [[TMP1:%.*]] = and i64 [[TMP0]], [[APP_MEM_MASK]]
46+
; CHECK-INLINE-NEXT: [[TMP2:%.*]] = shl i64 [[TMP1]], 3
47+
; CHECK-INLINE-NEXT: [[TMP3:%.*]] = add i64 [[TMP2]], [[SHADOW_BASE]]
48+
; CHECK-INLINE-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
49+
; CHECK-INLINE-NEXT: call void @llvm.memset.p0.i64(ptr align 8 [[TMP4]], i8 0, i64 32, i1 false)
50+
; CHECK-INLINE-NEXT: call void @foo(ptr [[A]])
51+
; CHECK-INLINE-NEXT: ret void
52+
;
53+
; CHECK-OUTLINE-LABEL: @test_alloca_only(
54+
; CHECK-OUTLINE-NEXT: entry:
55+
; CHECK-OUTLINE-NEXT: [[APP_MEM_MASK:%.*]] = load i64, ptr @__tysan_app_memory_mask, align 8
56+
; CHECK-OUTLINE-NEXT: [[SHADOW_BASE:%.*]] = load i64, ptr @__tysan_shadow_memory_address, align 8
57+
; CHECK-OUTLINE-NEXT: [[A:%.*]] = alloca i32, align 4
58+
; CHECK-OUTLINE-NEXT: call void @__tysan_instrument_mem_inst(ptr [[A]], ptr null, i64 4, i1 false)
59+
; CHECK-OUTLINE-NEXT: call void @foo(ptr [[A]])
60+
; CHECK-OUTLINE-NEXT: ret void
61+
;
2962
entry:
3063
%a = alloca i32
3164
call void @foo(ptr %a)
@@ -42,8 +75,14 @@ declare void @foo(ptr)
4275
!4 = !{!"_ZTS1x", !2, i64 0, !2, i64 4}
4376
!5 = !{!"_ZTS1v", !2, i64 8, !2, i64 12, !4, i64 16}
4477
!6 = !{!5, !2, i64 12}
45-
;.
4678
; CHECK: attributes #[[ATTR0:[0-9]+]] = { sanitize_type }
4779
; CHECK: attributes #[[ATTR1:[0-9]+]] = { nounwind }
4880
; CHECK: attributes #[[ATTR2:[0-9]+]] = { nocallback nofree nounwind willreturn memory(argmem: write) }
4981
;.
82+
; CHECK-INLINE: attributes #[[ATTR0:[0-9]+]] = { sanitize_type }
83+
; CHECK-INLINE: attributes #[[ATTR1:[0-9]+]] = { nounwind }
84+
; CHECK-INLINE: attributes #[[ATTR2:[0-9]+]] = { nocallback nofree nounwind willreturn memory(argmem: write) }
85+
;.
86+
; CHECK-OUTLINE: attributes #[[ATTR0:[0-9]+]] = { sanitize_type }
87+
; CHECK-OUTLINE: attributes #[[ATTR1:[0-9]+]] = { nounwind }
88+
;.

0 commit comments

Comments
 (0)