|
1 | 1 | // RUN: %clang_cc1 -std=c2x -emit-llvm %s -o - | FileCheck %s
|
2 | 2 |
|
3 | 3 | void basic_types(void) {
|
4 |
| - auto nb = 4; // CHECK: %nb = alloca i32, align 4 |
5 |
| - auto dbl = 4.3; // CHECK: %dbl = alloca double, align 8 |
6 |
| - auto lng = 4UL; // CHECK: %lng = alloca i{{32|64}}, align {{4|8}} |
7 |
| - auto bl = true; // CHECK: %bl = alloca i8, align 1 |
8 |
| - auto chr = 'A'; // CHECK: %chr = alloca i{{8|32}}, align {{1|4}} |
9 |
| - auto str = "Test"; // CHECK: %str = alloca ptr, align 8 |
10 |
| - auto str2[] = "Test"; // CHECK: %str2 = alloca [5 x i8], align 1 |
11 |
| - auto nptr = nullptr; // CHECK: %nptr = alloca ptr, align 8 |
| 4 | + auto nb = 4; // CHECK: alloca i32 |
| 5 | + auto dbl = 4.3; // CHECK: alloca double |
| 6 | + auto lng = 4UL; // CHECK: alloca i{{32|64}} |
| 7 | + auto bl = true; // CHECK: alloca i8 |
| 8 | + auto chr = 'A'; // CHECK: alloca i{{8|32}} |
| 9 | + auto str = "Test"; // CHECK: alloca ptr |
| 10 | + auto str2[] = "Test"; // CHECK: alloca [5 x i8] |
| 11 | + auto nptr = nullptr; // CHECK: alloca ptr |
12 | 12 | }
|
13 | 13 |
|
14 | 14 | void misc_declarations(void) {
|
15 | 15 | // FIXME: this should end up being rejected when we implement underspecified
|
16 | 16 | // declarations in N3006.
|
17 |
| - auto strct_ptr = (struct { int a; } *)0; // CHECK: %strct_ptr = alloca ptr, align 8 |
18 |
| - auto int_cl = (int){13}; // CHECK: %int_cl = alloca i32, align 4 |
19 |
| - auto double_cl = (double){2.5}; // CHECK: %double_cl = alloca double, align 8 |
| 17 | + auto strct_ptr = (struct { int a; } *)0; // CHECK: alloca ptr |
| 18 | + auto int_cl = (int){13}; // CHECK: alloca i32 |
| 19 | + auto double_cl = (double){2.5}; // CHECK: alloca double |
20 | 20 |
|
21 |
| - auto se = ({ // CHECK: %se = alloca i32, align 4 |
22 |
| - auto snb = 12; // CHECK: %snb = alloca i32, align 4 |
| 21 | + auto se = ({ // CHECK: alloca i32 |
| 22 | + auto snb = 12; // CHECK: alloca i32 |
23 | 23 | snb;
|
24 | 24 | });
|
25 | 25 | }
|
26 | 26 |
|
27 | 27 | void loop(void) {
|
28 |
| - auto j = 4; // CHECK: %j = alloca i32, align 4 |
29 |
| - for (auto i = j; i < 2 * j; i++); // CHECK: %i = alloca i32, align 4 |
| 28 | + auto j = 4; // CHECK: alloca i32 |
| 29 | + for (auto i = j; i < 2 * j; i++); // CHECK: alloca i32 |
30 | 30 | }
|
31 | 31 |
|
32 | 32 | #define AUTO_MACRO(_NAME, ARG, ARG2, ARG3) auto _NAME = ARG + (ARG2 / ARG3);
|
33 | 33 |
|
34 | 34 | #define AUTO_INT_MACRO(_NAME, ARG, ARG2, ARG3) auto _NAME = (ARG ^ ARG2) & ARG3;
|
35 | 35 |
|
36 | 36 | int macros(int in_int) {
|
37 |
| - auto a = in_int + 1; // CHECK: %a = alloca i32, align 4 |
38 |
| - AUTO_MACRO(b, 1.3, 2.5f, 3); // CHECK: %b = alloca double, align 8 |
39 |
| - AUTO_INT_MACRO(c, 64, 23, 0xff); // CHECK: %c = alloca i32, align 4 |
40 |
| - return (a + (int)b) - c; // CHECK: ret i32 %sub |
| 37 | + auto a = in_int + 1; // CHECK: alloca i32 |
| 38 | + AUTO_MACRO(b, 1.3, 2.5f, 3); // CHECK: alloca double |
| 39 | + AUTO_INT_MACRO(c, 64, 23, 0xff); // CHECK: alloca i32 |
| 40 | + return (a + (int)b) - c; // CHECK: ret i32 %{{.*}} |
41 | 41 | }
|
0 commit comments