Mercurial > hg > CbC > CbC_llvm
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); |