
This change adds support for the CIRGlobalValueInterface and attributes for visibility and comdat to GlobalOp. The comdat attribute isn't correctly calculated yet, but it was required for the CIRGlobalValueInterface interface. There are also some cases where dso_local isn't set correctly, but it is better than it was before this change. Those issues will be addressed in a future patch.
102 lines
2.8 KiB
C++
102 lines
2.8 KiB
C++
// Global variables of scalar typees with initial values
|
|
// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o - | FileCheck %s
|
|
|
|
char c;
|
|
// CHECK: cir.global external @c = #cir.int<0> : !s8i
|
|
|
|
signed char sc;
|
|
// CHECK: cir.global external @sc = #cir.int<0> : !s8i
|
|
|
|
unsigned char uc;
|
|
// CHECK: cir.global external @uc = #cir.int<0> : !u8i
|
|
|
|
short ss;
|
|
// CHECK: cir.global external @ss = #cir.int<0> : !s16i
|
|
|
|
unsigned short us = 100;
|
|
// CHECK: cir.global external @us = #cir.int<100> : !u16i
|
|
|
|
int si = 42;
|
|
// CHECK: cir.global external @si = #cir.int<42> : !s32i
|
|
|
|
unsigned ui;
|
|
// CHECK: cir.global external @ui = #cir.int<0> : !u32i
|
|
|
|
long sl;
|
|
// CHECK: cir.global external @sl = #cir.int<0> : !s64i
|
|
|
|
unsigned long ul;
|
|
// CHECK: cir.global external @ul = #cir.int<0> : !u64i
|
|
|
|
long long sll;
|
|
// CHECK: cir.global external @sll = #cir.int<0> : !s64i
|
|
|
|
unsigned long long ull = 123456;
|
|
// CHECK: cir.global external @ull = #cir.int<123456> : !u64i
|
|
|
|
__int128 s128;
|
|
// CHECK: cir.global external @s128 = #cir.int<0> : !s128i
|
|
|
|
unsigned __int128 u128;
|
|
// CHECK: cir.global external @u128 = #cir.int<0> : !u128i
|
|
|
|
wchar_t wc;
|
|
// CHECK: cir.global external @wc = #cir.int<0> : !s32i
|
|
|
|
char8_t c8;
|
|
// CHECK: cir.global external @c8 = #cir.int<0> : !u8i
|
|
|
|
char16_t c16;
|
|
// CHECK: cir.global external @c16 = #cir.int<0> : !u16i
|
|
|
|
char32_t c32;
|
|
// CHECK: cir.global external @c32 = #cir.int<0> : !u32i
|
|
|
|
_BitInt(20) sb20;
|
|
// CHECK: cir.global external @sb20 = #cir.int<0> : !cir.int<s, 20>
|
|
|
|
unsigned _BitInt(48) ub48;
|
|
// CHECK: cir.global external @ub48 = #cir.int<0> : !cir.int<u, 48>
|
|
|
|
bool boolfalse = false;
|
|
// CHECK: cir.global external @boolfalse = #false
|
|
|
|
_Float16 f16;
|
|
// CHECK: cir.global external @f16 = #cir.fp<0.000000e+00> : !cir.f16
|
|
|
|
__bf16 bf16;
|
|
// CHECK: cir.global external @bf16 = #cir.fp<0.000000e+00> : !cir.bf16
|
|
|
|
float f;
|
|
// CHECK: cir.global external @f = #cir.fp<0.000000e+00> : !cir.float
|
|
|
|
double d = 1.25;
|
|
// CHECK: cir.global external @d = #cir.fp<1.250000e+00> : !cir.double
|
|
|
|
long double ld;
|
|
// CHECK: cir.global external @ld = #cir.fp<0.000000e+00> : !cir.long_double<!cir.f80>
|
|
|
|
__float128 f128;
|
|
// CHECK: cir.global external @f128 = #cir.fp<0.000000e+00> : !cir.f128
|
|
|
|
void *vp;
|
|
// CHECK: cir.global external @vp = #cir.ptr<null> : !cir.ptr<!void>
|
|
|
|
int *ip = 0;
|
|
// CHECK: cir.global external @ip = #cir.ptr<null> : !cir.ptr<!s32i>
|
|
|
|
double *dp;
|
|
// CHECK: cir.global external @dp = #cir.ptr<null> : !cir.ptr<!cir.double>
|
|
|
|
char **cpp;
|
|
// CHECK: cir.global external @cpp = #cir.ptr<null> : !cir.ptr<!cir.ptr<!s8i>>
|
|
|
|
void (*fp)();
|
|
// CHECK: cir.global external @fp = #cir.ptr<null> : !cir.ptr<!cir.func<()>>
|
|
|
|
int (*fpii)(int) = 0;
|
|
// CHECK: cir.global external @fpii = #cir.ptr<null> : !cir.ptr<!cir.func<(!s32i) -> !s32i>>
|
|
|
|
void (*fpvar)(int, ...);
|
|
// CHECK: cir.global external @fpvar = #cir.ptr<null> : !cir.ptr<!cir.func<(!s32i, ...)>>
|