Mercurial > hg > CbC > CbC_llvm
comparison clang/test/CodeGen/malign-double.cpp @ 207:2e18cbf3894f
LLVM12
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Jun 2021 06:07:14 +0900 |
parents | 1d019706d866 |
children |
comparison
equal
deleted
inserted
replaced
173:0572611fdcc8 | 207:2e18cbf3894f |
---|---|
13 char c; | 13 char c; |
14 }; | 14 }; |
15 | 15 |
16 unsigned S1_align = __alignof(struct S1); | 16 unsigned S1_align = __alignof(struct S1); |
17 unsigned S1_size = sizeof(struct S1); | 17 unsigned S1_size = sizeof(struct S1); |
18 // CHECK: @S1_align = global i32 1, align 4 | 18 // CHECK: @S1_align ={{.*}} global i32 1, align 4 |
19 // CHECK: @S1_size = global i32 1, align 4 | 19 // CHECK: @S1_size ={{.*}} global i32 1, align 4 |
20 | 20 |
21 unsigned S1_c_offset = (unsigned) &((struct S1*) 0)->c; | 21 unsigned S1_c_offset = (unsigned) &((struct S1*) 0)->c; |
22 // CHECK: @S1_c_offset = global i32 0, align 4 | 22 // CHECK: @S1_c_offset ={{.*}} global i32 0, align 4 |
23 | 23 |
24 struct S2{ | 24 struct S2{ |
25 char c; | 25 char c; |
26 char d; | 26 char d; |
27 short s; | 27 short s; |
28 int n; | 28 int n; |
29 }; | 29 }; |
30 | 30 |
31 unsigned S2_align = __alignof(struct S2); | 31 unsigned S2_align = __alignof(struct S2); |
32 unsigned S2_size = sizeof(struct S2); | 32 unsigned S2_size = sizeof(struct S2); |
33 // CHECK: @S2_align = global i32 4, align 4 | 33 // CHECK: @S2_align ={{.*}} global i32 4, align 4 |
34 // CHECK: @S2_size = global i32 8, align 4 | 34 // CHECK: @S2_size ={{.*}} global i32 8, align 4 |
35 | 35 |
36 unsigned S2_c_offset = (unsigned) &((struct S2*) 0)->c; | 36 unsigned S2_c_offset = (unsigned) &((struct S2*) 0)->c; |
37 unsigned S2_d_offset = (unsigned) &((struct S2*) 0)->d; | 37 unsigned S2_d_offset = (unsigned) &((struct S2*) 0)->d; |
38 unsigned S2_s_offset = (unsigned) &((struct S2*) 0)->s; | 38 unsigned S2_s_offset = (unsigned) &((struct S2*) 0)->s; |
39 unsigned S2_n_offset = (unsigned) &((struct S2*) 0)->n; | 39 unsigned S2_n_offset = (unsigned) &((struct S2*) 0)->n; |
40 // CHECK: @S2_c_offset = global i32 0, align 4 | 40 // CHECK: @S2_c_offset ={{.*}} global i32 0, align 4 |
41 // CHECK: @S2_d_offset = global i32 1, align 4 | 41 // CHECK: @S2_d_offset ={{.*}} global i32 1, align 4 |
42 // CHECK: @S2_s_offset = global i32 2, align 4 | 42 // CHECK: @S2_s_offset ={{.*}} global i32 2, align 4 |
43 // CHECK: @S2_n_offset = global i32 4, align 4 | 43 // CHECK: @S2_n_offset ={{.*}} global i32 4, align 4 |
44 | 44 |
45 struct S3 { | 45 struct S3 { |
46 char c; | 46 char c; |
47 short s; | 47 short s; |
48 }; | 48 }; |
49 | 49 |
50 unsigned S3_align = __alignof(struct S3); | 50 unsigned S3_align = __alignof(struct S3); |
51 unsigned S3_size = sizeof(struct S3); | 51 unsigned S3_size = sizeof(struct S3); |
52 // CHECK: @S3_align = global i32 2, align 4 | 52 // CHECK: @S3_align ={{.*}} global i32 2, align 4 |
53 // CHECK: @S3_size = global i32 4, align 4 | 53 // CHECK: @S3_size ={{.*}} global i32 4, align 4 |
54 | 54 |
55 unsigned S3_c_offset = (unsigned) &((struct S3*) 0)->c; | 55 unsigned S3_c_offset = (unsigned) &((struct S3*) 0)->c; |
56 unsigned S3_s_offset = (unsigned) &((struct S3*) 0)->s; | 56 unsigned S3_s_offset = (unsigned) &((struct S3*) 0)->s; |
57 // CHECK: @S3_c_offset = global i32 0, align 4 | 57 // CHECK: @S3_c_offset ={{.*}} global i32 0, align 4 |
58 // CHECK: @S3_s_offset = global i32 2, align 4 | 58 // CHECK: @S3_s_offset ={{.*}} global i32 2, align 4 |
59 | 59 |
60 struct S4 { | 60 struct S4 { |
61 char c; | 61 char c; |
62 double d; | 62 double d; |
63 short s; | 63 short s; |
64 }; | 64 }; |
65 | 65 |
66 unsigned S4_align = __alignof(struct S4); | 66 unsigned S4_align = __alignof(struct S4); |
67 unsigned S4_size = sizeof(struct S4); | 67 unsigned S4_size = sizeof(struct S4); |
68 // CHECK-ON: @S4_align = global i32 8, align 4 | 68 // CHECK-ON: @S4_align ={{.*}} global i32 8, align 4 |
69 // CHECK-ON: @S4_size = global i32 24, align 4 | 69 // CHECK-ON: @S4_size ={{.*}} global i32 24, align 4 |
70 // CHECK-OFF: @S4_align = global i32 4, align 4 | 70 // CHECK-OFF: @S4_align ={{.*}} global i32 4, align 4 |
71 // CHECK-OFF: @S4_size = global i32 16, align 4 | 71 // CHECK-OFF: @S4_size ={{.*}} global i32 16, align 4 |
72 | 72 |
73 unsigned S4_c_offset = (unsigned) &((struct S4*) 0)->c; | 73 unsigned S4_c_offset = (unsigned) &((struct S4*) 0)->c; |
74 unsigned S4_d_offset = (unsigned) &((struct S4*) 0)->d; | 74 unsigned S4_d_offset = (unsigned) &((struct S4*) 0)->d; |
75 unsigned S4_s_offset = (unsigned) &((struct S4*) 0)->s; | 75 unsigned S4_s_offset = (unsigned) &((struct S4*) 0)->s; |
76 // CHECK: @S4_c_offset = global i32 0, align 4 | 76 // CHECK: @S4_c_offset ={{.*}} global i32 0, align 4 |
77 // CHECK-ON: @S4_d_offset = global i32 8, align 4 | 77 // CHECK-ON: @S4_d_offset ={{.*}} global i32 8, align 4 |
78 // CHECK-ON: @S4_s_offset = global i32 16, align 4 | 78 // CHECK-ON: @S4_s_offset ={{.*}} global i32 16, align 4 |
79 // CHECK-OFF: @S4_d_offset = global i32 4, align 4 | 79 // CHECK-OFF: @S4_d_offset ={{.*}} global i32 4, align 4 |
80 // CHECK-OFF: @S4_s_offset = global i32 12, align 4 | 80 // CHECK-OFF: @S4_s_offset ={{.*}} global i32 12, align 4 |
81 | 81 |
82 union S5 { | 82 union S5 { |
83 char c; | 83 char c; |
84 short s; | 84 short s; |
85 int j; | 85 int j; |
86 }; | 86 }; |
87 | 87 |
88 unsigned S5_align = __alignof(union S5); | 88 unsigned S5_align = __alignof(union S5); |
89 unsigned S5_size = sizeof(union S5); | 89 unsigned S5_size = sizeof(union S5); |
90 // CHECK: @S5_align = global i32 4, align 4 | 90 // CHECK: @S5_align ={{.*}} global i32 4, align 4 |
91 // CHECK: @S5_size = global i32 4, align 4 | 91 // CHECK: @S5_size ={{.*}} global i32 4, align 4 |
92 | 92 |
93 unsigned S5_c_offset = (unsigned) &((union S5*) 0)->c; | 93 unsigned S5_c_offset = (unsigned) &((union S5*) 0)->c; |
94 unsigned S5_s_offset = (unsigned) &((union S5*) 0)->s; | 94 unsigned S5_s_offset = (unsigned) &((union S5*) 0)->s; |
95 unsigned S5_j_offset = (unsigned) &((union S5*) 0)->j; | 95 unsigned S5_j_offset = (unsigned) &((union S5*) 0)->j; |
96 // CHECK: @S5_c_offset = global i32 0, align 4 | 96 // CHECK: @S5_c_offset ={{.*}} global i32 0, align 4 |
97 // CHECK: @S5_s_offset = global i32 0, align 4 | 97 // CHECK: @S5_s_offset ={{.*}} global i32 0, align 4 |
98 // CHECK: @S5_j_offset = global i32 0, align 4 | 98 // CHECK: @S5_j_offset ={{.*}} global i32 0, align 4 |
99 | 99 |
100 union S6 { | 100 union S6 { |
101 char c; | 101 char c; |
102 double d; | 102 double d; |
103 }; | 103 }; |
104 | 104 |
105 unsigned S6_align = __alignof(union S6); | 105 unsigned S6_align = __alignof(union S6); |
106 unsigned S6_size = sizeof(union S6); | 106 unsigned S6_size = sizeof(union S6); |
107 // CHECK-ON: @S6_align = global i32 8, align 4 | 107 // CHECK-ON: @S6_align ={{.*}} global i32 8, align 4 |
108 // CHECK-ON: @S6_size = global i32 8, align 4 | 108 // CHECK-ON: @S6_size ={{.*}} global i32 8, align 4 |
109 // CHECK-OFF: @S6_align = global i32 4, align 4 | 109 // CHECK-OFF: @S6_align ={{.*}} global i32 4, align 4 |
110 // CHECK-OFF: @S6_size = global i32 8, align 4 | 110 // CHECK-OFF: @S6_size ={{.*}} global i32 8, align 4 |
111 | 111 |
112 unsigned S6_c_offset = (unsigned) &((union S6*) 0)->c; | 112 unsigned S6_c_offset = (unsigned) &((union S6*) 0)->c; |
113 unsigned S6_d_offset = (unsigned) &((union S6*) 0)->d; | 113 unsigned S6_d_offset = (unsigned) &((union S6*) 0)->d; |
114 // CHECK: @S6_c_offset = global i32 0, align 4 | 114 // CHECK: @S6_c_offset ={{.*}} global i32 0, align 4 |
115 // CHECK: @S6_d_offset = global i32 0, align 4 | 115 // CHECK: @S6_d_offset ={{.*}} global i32 0, align 4 |