Skip to content

Commit 9fc152d

Browse files
committed
[TBAA] Add Clang pointer TBAA test with void *.
1 parent edf14ed commit 9fc152d

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

clang/test/CodeGen/tbaa-pointers.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,24 @@ void unamed_struct_typedef(TypedefS *ptr) {
205205
ptr->i1 = 0;
206206
}
207207

208+
int void_ptrs(void **ptr) {
209+
// COMMON-LABEL: define i32 @void_ptrs(
210+
// COMMON-SAME: ptr noundef [[PTRA:%.+]])
211+
// COMMON: [[PTR_ADDR:%.+]] = alloca ptr, align 8
212+
// DISABLE-NEXT: store ptr [[PTRA]], ptr [[PTR_ADDR]], align 8, !tbaa [[ANYPTR]]
213+
// DISABLE-NEXT: [[L0:%.+]] = load ptr, ptr [[PTR_ADDR]], align 8, !tbaa [[ANYPTR]]
214+
// DISABLE-NEXT: [[L1:%.+]] = load ptr, ptr [[L0]], align 8, !tbaa [[ANYPTR]]
215+
// DEFAULT-NEXT: store ptr [[PTRA]], ptr [[PTR_ADDR]], align 8, !tbaa [[P2VOID:!.+]]
216+
// DEFAULT-NEXT: [[L0:%.+]] = load ptr, ptr [[PTR_ADDR]], align 8, !tbaa [[P2VOID]]
217+
// DEFAULT-NEXT: [[L1:%.+]] = load ptr, ptr [[L0]], align 8, !tbaa [[P1VOID:!.+]]
218+
// COMMON-NEXT: [[BOOL:%.+]] = icmp ne ptr [[L1]], null
219+
// COMMON-NEXT: [[BOOL_EXT:%.+]] = zext i1 [[BOOL]] to i64
220+
// COMMON-NEXT: [[COND:%.+]] = select i1 [[BOOL]], i32 0, i32 1
221+
// COMMON-NEXT: ret i32 [[COND]]
222+
223+
return *ptr ? 0 : 1;
224+
}
225+
208226
// DEFAULT: [[P2INT_0]] = !{[[P2INT:!.+]], [[P2INT]], i64 0}
209227
// DEFAULT: [[P2INT]] = !{!"p2 int", [[ANY_POINTER:!.+]], i64 0}
210228
// DISABLE: [[ANYPTR]] = !{[[ANY_POINTER:!.+]], [[ANY_POINTER]], i64 0}
@@ -237,3 +255,7 @@ void unamed_struct_typedef(TypedefS *ptr) {
237255
// COMMON: [[INT_TAG]] = !{[[INT_TY:!.+]], [[INT_TY]], i64 0}
238256
// COMMON: [[INT_TY]] = !{!"int", [[CHAR]], i64 0}
239257
// DEFAULT: [[P1TYPEDEF]] = !{[[ANY_POINTER]], [[ANY_POINTER]], i64 0}
258+
// DEFAULT: [[P2VOID]] = !{[[P2VOID_TY:!.+]], [[P2VOID_TY]], i64 0}
259+
// DEFAULT: [[P2VOID_TY]] = !{!"p2 void", [[ANY_POINTER]], i64 0}
260+
// DEFAULT: [[P1VOID]] = !{[[P1VOID_TY:!.+]], [[P1VOID_TY]], i64 0}
261+
// DEFAULT: [[P1VOID_TY]] = !{!"p1 void", [[ANY_POINTER]], i64 0}

0 commit comments

Comments
 (0)