brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · e5bc1bf Raw
42 lines · c
1// RUN: %clang_cc1 -std=c2x -emit-llvm %s -o - | FileCheck %s2 3void basic_types(void) {4  auto nb = 4;          // CHECK: alloca i325  auto dbl = 4.3;       // CHECK: alloca double6  auto lng = 4UL;       // CHECK: alloca i{{32|64}}7  auto bl = true;       // CHECK: alloca i88  auto chr = 'A';       // CHECK: alloca i{{8|32}}9  auto str = "Test";    // CHECK: alloca ptr10  auto str2[] = "Test"; // CHECK: alloca [5 x i8]11  auto nptr = nullptr;  // CHECK: alloca ptr12}13 14void misc_declarations(void) {15  // FIXME: this should end up being rejected when we implement underspecified16  // declarations in N3006.17  auto strct_ptr = (struct { int a; } *)0;  // CHECK: alloca ptr18  auto int_cl = (int){13};                  // CHECK: alloca i3219  auto double_cl = (double){2.5};           // CHECK: alloca double20 21  auto se = ({      // CHECK: alloca i3222    auto snb = 12;  // CHECK: alloca i3223    snb;24  });25}26 27void loop(void) {28  auto j = 4;                       // CHECK: alloca i3229  for (auto i = j; i < 2 * j; i++); // CHECK: alloca i3230}31 32#define AUTO_MACRO(_NAME, ARG, ARG2, ARG3) auto _NAME = ARG + (ARG2 / ARG3);33 34#define AUTO_INT_MACRO(_NAME, ARG, ARG2, ARG3) auto _NAME = (ARG ^ ARG2) & ARG3;35 36int macros(int in_int) {37  auto a = in_int + 1;             // CHECK: alloca i3238  AUTO_MACRO(b, 1.3, 2.5f, 3);     // CHECK: alloca double39  AUTO_INT_MACRO(c, 64, 23, 0xff); // CHECK: alloca i3240  return (a + (int)b) - c;         // CHECK: ret i32 %{{.*}}41}42