comparison clang/test/CodeGen/catch-nullptr-and-nonzero-offset-in-offsetof-idiom.c @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents 1d019706d866
children c4bab56944e8
comparison
equal deleted inserted replaced
173:0572611fdcc8 207:2e18cbf3894f
12 12
13 struct S { 13 struct S {
14 int x, y; 14 int x, y;
15 }; 15 };
16 16
17 // CHECK-LABEL: define i64 @{{.*}}get_offset_of_y_naively{{.*}}( 17 // CHECK-LABEL: define{{.*}} i64 @{{.*}}get_offset_of_y_naively{{.*}}(
18 uintptr_t get_offset_of_y_naively() { 18 uintptr_t get_offset_of_y_naively() {
19 // CHECK: [[ENTRY:.*]]: 19 // CHECK: [[ENTRY:.*]]:
20 // CHECK-NEXT: ret i64 ptrtoint (i32* getelementptr (i32, i32* null, i32 1) to i64) 20 // CHECK-NEXT: ret i64 ptrtoint (i32* getelementptr (i32, i32* null, i32 1) to i64)
21 // CHECK-NEXT: } 21 // CHECK-NEXT: }
22 return ((uintptr_t)(&(((struct S *)0)->y))); 22 return ((uintptr_t)(&(((struct S *)0)->y)));
23 } 23 }
24 24
25 // CHECK-LABEL: define i64 @{{.*}}get_offset_of_y_via_builtin{{.*}}( 25 // CHECK-LABEL: define{{.*}} i64 @{{.*}}get_offset_of_y_via_builtin{{.*}}(
26 uintptr_t get_offset_of_y_via_builtin() { 26 uintptr_t get_offset_of_y_via_builtin() {
27 // CHECK: [[ENTRY:.*]]: 27 // CHECK: [[ENTRY:.*]]:
28 // CHECK-NEXT: ret i64 4 28 // CHECK-NEXT: ret i64 4
29 // CHECK-NEXT: } 29 // CHECK-NEXT: }
30 return __builtin_offsetof(struct S, y); 30 return __builtin_offsetof(struct S, y);