xref: /aosp_15_r20/external/clang/test/CodeGen/malign-double-x86-nacl.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686-unknown-nacl | FileCheck %s
2*67e74705SXin Li // Check that i686-nacl essentially has -malign-double, which aligns
3*67e74705SXin Li // double, long double, and long long to 64-bits.
4*67e74705SXin Li 
5*67e74705SXin Li int checksize[sizeof(long double) == 8 ? 1 : -1];
6*67e74705SXin Li int checkalign[__alignof(long double) == 8 ? 1 : -1];
7*67e74705SXin Li 
8*67e74705SXin Li // CHECK-LABEL: define void @s1(double %a)
s1(long double a)9*67e74705SXin Li void s1(long double a) {}
10*67e74705SXin Li 
11*67e74705SXin Li struct st_ld {
12*67e74705SXin Li   char c;
13*67e74705SXin Li   long double ld;
14*67e74705SXin Li };
15*67e74705SXin Li int checksize2[sizeof(struct st_ld) == 16 ? 1 : -1];
16*67e74705SXin Li int checkalign2[__alignof(struct st_ld) == 8 ? 1 : -1];
17*67e74705SXin Li 
18*67e74705SXin Li int checksize3[sizeof(double) == 8 ? 1 : -1];
19*67e74705SXin Li int checkalign3[__alignof(double) == 8 ? 1 : -1];
20*67e74705SXin Li 
21*67e74705SXin Li // CHECK-LABEL: define void @s2(double %a)
s2(double a)22*67e74705SXin Li void s2(double a) {}
23*67e74705SXin Li 
24*67e74705SXin Li struct st_d {
25*67e74705SXin Li   char c;
26*67e74705SXin Li   double d;
27*67e74705SXin Li };
28*67e74705SXin Li int checksize4[sizeof(struct st_d) == 16 ? 1 : -1];
29*67e74705SXin Li int checkalign4[__alignof(struct st_d) == 8 ? 1 : -1];
30*67e74705SXin Li 
31*67e74705SXin Li 
32*67e74705SXin Li int checksize5[sizeof(long long) == 8 ? 1 : -1];
33*67e74705SXin Li int checkalign5[__alignof(long long) == 8 ? 1 : -1];
34*67e74705SXin Li 
35*67e74705SXin Li // CHECK-LABEL: define void @s3(i64 %a)
s3(long long a)36*67e74705SXin Li void s3(long long a) {}
37*67e74705SXin Li 
38*67e74705SXin Li struct st_ll {
39*67e74705SXin Li   char c;
40*67e74705SXin Li   long long ll;
41*67e74705SXin Li };
42*67e74705SXin Li int checksize6[sizeof(struct st_ll) == 16 ? 1 : -1];
43*67e74705SXin Li int checkalign6[__alignof(struct st_ll) == 8 ? 1 : -1];
44