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