25
25
// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=vptr -fsanitize-recover=vptr -fsanitize-ignorelist=%t-type.ignorelist -emit-llvm %s -o - | FileCheck %s --check-prefix=VPTR-TYPE
26
26
27
27
class Bar {
28
- public:
29
- virtual ~Bar () {}
28
+ public:
29
+ virtual ~Bar () {}
30
30
};
31
31
class Foo : public Bar {};
32
32
@@ -35,21 +35,21 @@ Bar bar;
35
35
// VPTR: @_Z7checkmev
36
36
// VPTR-TYPE: @_Z7checkmev
37
37
void checkme () {
38
- // VPTR: call void @__ubsan_handle_dynamic_type_cache_miss({{.*}} (ptr @bar to
39
- // VPTR-TYPE-NOT: @__ubsan_handle_dynamic_type_cache_miss
38
+ // VPTR: call void @__ubsan_handle_dynamic_type_cache_miss({{.*}} (ptr @bar to
39
+ // VPTR-TYPE-NOT: @__ubsan_handle_dynamic_type_cache_miss
40
40
Foo* foo = static_cast <Foo*>(&bar); // down-casting
41
- // VPTR: ret void
42
- // VPTR-TYPE: ret void
41
+ // VPTR: ret void
42
+ // VPTR-TYPE: ret void
43
43
return ;
44
44
}
45
45
46
46
// INT-LABEL: ignore_int
47
47
void ignore_int (int A, int B, unsigned C, unsigned D, long E) {
48
- // INT: llvm.uadd.with.overflow.i32
48
+ // INT: llvm.uadd.with.overflow.i32
49
49
(void )(C+D);
50
- // INT-NOT: llvm.sadd.with.overflow.i32
50
+ // INT-NOT: llvm.sadd.with.overflow.i32
51
51
(void )(A+B);
52
- // INT: llvm.sadd.with.overflow.i64
52
+ // INT: llvm.sadd.with.overflow.i64
53
53
(void )(++E);
54
54
}
55
55
@@ -59,31 +59,31 @@ typedef myty derivative;
59
59
// INT-LABEL: ignore_all_except_myty
60
60
// MYTY-LABEL: ignore_all_except_myty
61
61
void ignore_all_except_myty (myty A, myty B, int C, unsigned D, derivative E) {
62
- // MYTY-NOT: llvm.sadd.with.overflow.i32
62
+ // MYTY-NOT: llvm.sadd.with.overflow.i32
63
63
(void )(++C);
64
64
65
- // MYTY-NOT: llvm.uadd.with.overflow.i32
65
+ // MYTY-NOT: llvm.uadd.with.overflow.i32
66
66
(void )(D+D);
67
67
68
- // MYTY-NOT: llvm.umul.with.overflow.i64
68
+ // MYTY-NOT: llvm.umul.with.overflow.i64
69
69
(void )(E*2 );
70
70
71
- // MYTY: llvm.uadd.with.overflow.i64
71
+ // MYTY: llvm.uadd.with.overflow.i64
72
72
(void )(A+B);
73
73
}
74
74
75
75
// INT-LABEL: truncation
76
76
// MYTY-LABEL: truncation
77
77
// TRUNC-LABEL: truncation
78
78
void truncation (char A, int B, unsigned char C, short D) {
79
- // TRUNC-NOT: %handler.implicit_conversion
79
+ // TRUNC-NOT: %handler.implicit_conversion
80
80
A = B;
81
- // TRUNC-NOT: %handler.implicit_conversion
81
+ // TRUNC-NOT: %handler.implicit_conversion
82
82
A = C;
83
- // TRUNC-NOT: %handler.implicit_conversion
83
+ // TRUNC-NOT: %handler.implicit_conversion
84
84
C = B;
85
85
86
- // TRUNC: %handler.implicit_conversion
86
+ // TRUNC: %handler.implicit_conversion
87
87
D = B;
88
88
89
89
(void )A;
0 commit comments