1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686-unknown-nacl | FileCheck %s
2651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// Check that i686-nacl essentially has -malign-double, which aligns
3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// double, long double, and long long to 64-bits.
4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
5651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint checksize[sizeof(long double) == 8 ? 1 : -1];
6651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint checkalign[__alignof(long double) == 8 ? 1 : -1];
7651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
8651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-LABEL: define void @s1(double %a)
9651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesvoid s1(long double a) {}
10651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
11651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct st_ld {
12651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  char c;
13651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  long double ld;
14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines};
15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint checksize2[sizeof(struct st_ld) == 16 ? 1 : -1];
16651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint checkalign2[__alignof(struct st_ld) == 8 ? 1 : -1];
17651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
18651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint checksize3[sizeof(double) == 8 ? 1 : -1];
19651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint checkalign3[__alignof(double) == 8 ? 1 : -1];
20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-LABEL: define void @s2(double %a)
22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesvoid s2(double a) {}
23651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
24651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct st_d {
25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  char c;
26651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  double d;
27651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines};
28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint checksize4[sizeof(struct st_d) == 16 ? 1 : -1];
29651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint checkalign4[__alignof(struct st_d) == 8 ? 1 : -1];
30651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
31651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
32651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint checksize5[sizeof(long long) == 8 ? 1 : -1];
33651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint checkalign5[__alignof(long long) == 8 ? 1 : -1];
34651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
35651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-LABEL: define void @s3(i64 %a)
36651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesvoid s3(long long a) {}
37651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
38651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct st_ll {
39651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  char c;
40651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  long long ll;
41651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines};
42651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint checksize6[sizeof(struct st_ll) == 16 ? 1 : -1];
43651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint checkalign6[__alignof(struct st_ll) == 8 ? 1 : -1];
44