Skip to content

Commit

Permalink
test: Add missing linkage to global variables.
Browse files Browse the repository at this point in the history
  • Loading branch information
Jezurko committed Sep 25, 2024
1 parent 46554b5 commit bde05ff
Show file tree
Hide file tree
Showing 40 changed files with 148 additions and 148 deletions.
2 changes: 1 addition & 1 deletion test/vast/Conversion/cmake-platform-test.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

#define SIZE (sizeof(unsigned short))

// CHECK: constant @info_size() {{.*}} !llvm.array
// CHECK: @info_size() {{.*}} !llvm.array
static char info_size[] = {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',
('0' + ((SIZE / 10000)%10)),
('0' + ((SIZE / 1000)%10)),
Expand Down
6 changes: 3 additions & 3 deletions test/vast/Conversion/subscript-b.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
// RUN: %check-lower-value-categories %s | %file-check %s -check-prefix=VAL_CAT
// RUN: %check-core-to-llvm %s | %file-check %s -check-prefix=C_LLVM

// STD_TYPES: hl.var @arr1 : !hl.lvalue<!hl.array<3, si32>> = {
// STD_TYPES: hl.var @arr1, <external> : !hl.lvalue<!hl.array<3, si32>> = {


// VAL_CAT: hl.var @arr1 : !hl.ptr<!hl.array<3, si32>> = {
// VAL_CAT: hl.var @arr1, <external> : !hl.ptr<!hl.array<3, si32>> = {
// VAL_CAT: hl.value.yield {{.*}} : !hl.array<3, si32>


// C_LLVM: llvm.mlir.global internal constant @arr1() {addr_space = 0 : i32} : !llvm.array<3 x i32> {
// C_LLVM: llvm.mlir.global external @arr1() {addr_space = 0 : i32} : !llvm.array<3 x i32> {

int arr1[] = { 0, 2, 4 };

Expand Down
16 changes: 8 additions & 8 deletions test/vast/Dialect/HighLevel/array-a.c
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
// RUN: %vast-cc1 -vast-emit-mlir=hl %s -o - | %file-check %s
// RUN: %vast-cc1 -vast-emit-mlir=hl %s -o %t && %vast-opt %t | diff -B %t -

// CHECK: hl.var @ai : !hl.lvalue<!hl.array<10, !hl.int>>
// CHECK: hl.var @ai, <common> : !hl.lvalue<!hl.array<10, !hl.int>>
int ai[10];

// CHECK: hl.var @aci : !hl.lvalue<!hl.array<5, !hl.int< const >>>
// CHECK: hl.var @aci, <common> : !hl.lvalue<!hl.array<5, !hl.int< const >>>
const int aci[5];

// CHECK: hl.var @avi : !hl.lvalue<!hl.array<5, !hl.int< volatile >>>
// CHECK: hl.var @avi, <common> : !hl.lvalue<!hl.array<5, !hl.int< volatile >>>
volatile int avi[5];

// CHECK: hl.var @acvi : !hl.lvalue<!hl.array<5, !hl.int< const, volatile >>>
// CHECK: hl.var @acvi, <common> : !hl.lvalue<!hl.array<5, !hl.int< const, volatile >>>
const volatile int acvi[5];

// CHECK: hl.var @acvui : !hl.lvalue<!hl.array<5, !hl.int< unsigned, const, volatile >>>
// CHECK: hl.var @acvui, <common> : !hl.lvalue<!hl.array<5, !hl.int< unsigned, const, volatile >>>
const volatile unsigned int acvui[5];

// CHECK: hl.var @af : !hl.lvalue<!hl.array<10, !hl.float>>
// CHECK: hl.var @af, <common> : !hl.lvalue<!hl.array<10, !hl.float>>
float af[10];

// CHECK: hl.var @a3d : !hl.lvalue<!hl.array<2, !hl.array<4, !hl.array<3, !hl.float>>>>
// CHECK: hl.var @a3d, <common> : !hl.lvalue<!hl.array<2, !hl.array<4, !hl.array<3, !hl.float>>>>
float a3d[2][4][3];

// CHECK: hl.var @ae : !hl.lvalue<!hl.array<404, !hl.int>>
// CHECK: hl.var @ae, <common> : !hl.lvalue<!hl.array<404, !hl.int>>
int ae[4 + 4*100];
2 changes: 1 addition & 1 deletion test/vast/Dialect/HighLevel/array-b.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// RUN: %vast-cc1 -vast-emit-mlir=hl %s -o - | %file-check %s
// RUN: %vast-cc1 -vast-emit-mlir=hl %s -o %t && %vast-opt %t | diff -B %t -

// CHECK: hl.var @earr sc_extern : !hl.lvalue<!hl.array<?, !hl.int>>
// CHECK: hl.var @earr, <external> sc_extern : !hl.lvalue<!hl.array<?, !hl.int>>
extern int earr[];
2 changes: 1 addition & 1 deletion test/vast/Dialect/HighLevel/array-c.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// RUN: %vast-cc1 -vast-emit-mlir=hl %s -o - | %file-check %s
// RUN: %vast-cc1 -vast-emit-mlir=hl %s -o %t && %vast-opt %t | diff -B %t -

// CHECK: hl.var @cai : !hl.lvalue<!hl.array<3, !hl.int< const >>> = {
// CHECK: hl.var @cai, <external> : !hl.lvalue<!hl.array<3, !hl.int< const >>> = {
// CHECK: [[V1:%[0-9]+]] = hl.const #core.integer<1> : !hl.int
// CHECK: [[V2:%[0-9]+]] = hl.const #core.integer<2> : !hl.int
// CHECK: [[V3:%[0-9]+]] = hl.const #core.integer<3> : !hl.int
Expand Down
2 changes: 1 addition & 1 deletion test/vast/Dialect/HighLevel/cast-b.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
// CHECK: hl.typedef @function_type : !core.fn<(!hl.lvalue<!hl.int>, !hl.lvalue<!hl.int>) -> (!hl.int)>
typedef int function_type(int a, int b);

// CHECK: hl.var @p : !hl.lvalue<!hl.array<2, !hl.ptr<!hl.elaborated<!hl.typedef<@function_type>>>>>
// CHECK: hl.var @p, <common> : !hl.lvalue<!hl.array<2, !hl.ptr<!hl.elaborated<!hl.typedef<@function_type>>>>>
function_type *p[2];

int test_func(void) {
Expand Down
14 changes: 7 additions & 7 deletions test/vast/Dialect/HighLevel/constants-a.c
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
// RUN: %vast-cc1 -vast-emit-mlir=hl %s -o - | %file-check %s
// RUN: %vast-cc1 -vast-emit-mlir=hl %s -o %t && %vast-opt %t | diff -B %t -

// CHECK: hl.var @i : !hl.lvalue<!hl.int>
// CHECK: hl.var @i, <external> : !hl.lvalue<!hl.int>
// CHECK: hl.const #core.integer<0> : !hl.int
int i = 0;

// CHECK: hl.var @ui : !hl.lvalue<!hl.int< unsigned >>
// CHECK: hl.var @ui, <external> : !hl.lvalue<!hl.int< unsigned >>
// CHECK: hl.const #core.integer<0> : !hl.int< unsigned >
unsigned int ui = 0u;

// CHECK: hl.var @lli : !hl.lvalue<!hl.longlong>
// CHECK: hl.var @lli, <external> : !hl.lvalue<!hl.longlong>
// CHECK: hl.const #core.integer<0> : !hl.longlong
long long int lli = 0ll;

// CHECK: hl.var @f : !hl.lvalue<!hl.float>
// CHECK: hl.var @f, <external> : !hl.lvalue<!hl.float>
// CHECK: hl.const #core.float<0.000000e+00> : !hl.float
float f = 0.f;

// CHECK: hl.var @d : !hl.lvalue<!hl.double>
// CHECK: hl.var @d, <external> : !hl.lvalue<!hl.double>
// CHECK: hl.const #core.float<0.000000e+00> : !hl.double
double d = 0.0;

// CHECK: hl.var @str : !hl.lvalue<!hl.ptr<!hl.char< const >>>
// CHECK: hl.var @str, <external> : !hl.lvalue<!hl.ptr<!hl.char< const >>>
// CHECK: hl.const "hello" : !hl.lvalue<!hl.array<6, !hl.char>>
const char *str = "hello";

// CHECK: hl.var @arr : !hl.lvalue<!hl.array<3, !hl.int< const >>>
// CHECK: hl.var @arr, <external> : !hl.lvalue<!hl.array<3, !hl.int< const >>>
// CHECK: hl.const #core.integer<1> : !hl.int
// CHECK: hl.const #core.integer<2> : !hl.int
// CHECK: hl.const #core.integer<3> : !hl.int
Expand Down
4 changes: 2 additions & 2 deletions test/vast/Dialect/HighLevel/enum-a.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// CHECK: }
enum color { RED, GREEN, BLUE };

// CHECK: hl.var @c : !hl.lvalue<!hl.elaborated<!hl.enum<@color>>>
// CHECK: hl.var @c, <external> : !hl.lvalue<!hl.elaborated<!hl.enum<@color>>>
// CHECK: [[V1:%[0-9]+]] = hl.enumref @GREEN : !hl.int
// CHECK: [[V2:%[0-9]+]] = hl.implicit_cast [[V1]] IntegralCast : !hl.int -> !hl.elaborated<!hl.enum<@color>>
// CHECK: hl.value.yield [[V2]] : !hl.elaborated<!hl.enum<@color>>
Expand All @@ -17,5 +17,5 @@ enum color c = GREEN;
// CHECK: hl.typedef @color : !hl.elaborated<!hl.enum<@color>>
typedef enum color color;

// CHECK: hl.var @tc : !hl.lvalue<!hl.elaborated<!hl.typedef<@color>>>
// CHECK: hl.var @tc, <common> : !hl.lvalue<!hl.elaborated<!hl.typedef<@color>>>
color tc;
4 changes: 2 additions & 2 deletions test/vast/Dialect/HighLevel/enum-d.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@

// CHECK: hl.enum @color : !hl.int< unsigned >
enum color { RED, GREEN, BLUE };
// CHECK: hl.var @r : !hl.lvalue<!hl.elaborated<!hl.enum<@color>>>
// CHECK: hl.var @r, <external> : !hl.lvalue<!hl.elaborated<!hl.enum<@color>>>
// CHECK: hl.enumref @RED : !hl.int
enum color r = RED;

// CHECK: hl.typedef @color_t : !hl.elaborated<!hl.enum<@color>>
// CHECK: hl.var @x : !hl.lvalue<!hl.elaborated<!hl.typedef<@color_t>>>
// CHECK: hl.var @x, <external> : !hl.lvalue<!hl.elaborated<!hl.typedef<@color_t>>>
// CHECK: hl.enumref @GREEN : !hl.int
typedef enum color color_t;
color_t x = GREEN;
2 changes: 1 addition & 1 deletion test/vast/Dialect/HighLevel/enum-e.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ struct Element {
int z;
enum State { SOLID, LIQUID, GAS, PLASMA } state;

// CHECK: hl.var @oxygen : !hl.lvalue<!hl.elaborated<!hl.record<@Element>>>
// CHECK: hl.var @oxygen, <external> : !hl.lvalue<!hl.elaborated<!hl.record<@Element>>>
// CHECK: [[V1:%[0-9]+]] = hl.const #core.integer<8> : !hl.int
// CHECK: [[V2:%[0-9]+]] = hl.enumref @GAS : !hl.int
// CHECK: [[V3:%[0-9]+]] = hl.implicit_cast [[V2]] IntegralCast : !hl.int -> !hl.elaborated<!hl.enum<@State>>
Expand Down
8 changes: 4 additions & 4 deletions test/vast/Dialect/HighLevel/floats-a.c
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
// RUN: %vast-cc1 -vast-emit-mlir=hl %s -o - | %file-check %s
// RUN: %vast-cc1 -vast-emit-mlir=hl %s -o %t && %vast-opt %t | diff -B %t -

// CHECK: hl.var @fp16 : !hl.lvalue<!hl.half>
// CHECK: hl.var @fp16, <external> : !hl.lvalue<!hl.half>
__fp16 fp16 = 0.5;

// CHECK: hl.var @f : !hl.lvalue<!hl.float>
// CHECK: hl.var @f, <external> : !hl.lvalue<!hl.float>
// CHECK: hl.const #core.float<5.000000e-01> : !hl.float
float f = 0.5f;

// CHECK: hl.var @d : !hl.lvalue<!hl.double>
// CHECK: hl.var @d, <external> : !hl.lvalue<!hl.double>
// CHECK: hl.const #core.float<5.000000e-01> : !hl.double
double d = 0.5;

// CHECK: hl.var @ld : !hl.lvalue<!hl.longdouble>
// CHECK: hl.var @ld, <external> : !hl.lvalue<!hl.longdouble>
// CHECK: hl.const #core.float<5.000000e-01> : !hl.longdouble
long double ld = 0.5L;
2 changes: 1 addition & 1 deletion test/vast/Dialect/HighLevel/glob-a.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// RUN: %vast-cc1 -vast-emit-mlir=hl %s -o - | %file-check %s
// RUN: %vast-cc1 -vast-emit-mlir=hl %s -o %t && %vast-opt %t | diff -B %t -

// CHECK: hl.var @a : !hl.lvalue<!hl.int>
// CHECK: hl.var @a, <external> : !hl.lvalue<!hl.int>
int a = 0;

// CHECK-LABEL: hl.func @main
Expand Down
2 changes: 1 addition & 1 deletion test/vast/Dialect/HighLevel/glob-front-d.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// RUN: %vast-front %s -vast-emit-mlir=hl -o - | %file-check %s

// CHECK: hl.var @a sc_static
// CHECK: hl.var @a, <internal> sc_static
static int a = 2;

int main() {
Expand Down
4 changes: 2 additions & 2 deletions test/vast/Dialect/HighLevel/indirect-call-a.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

// CHECK: hl.typedef @ck_rv_t : !hl.long< unsigned >
typedef unsigned long ck_rv_t;
// CHECK: hl.var @global_lock sc_static : !hl.lvalue<!hl.ptr<!hl.void>>
// CHECK: hl.var @global_lock, <internal> sc_static : !hl.lvalue<!hl.ptr<!hl.void>>
static void *global_lock = 0;

// CHECK: hl.typedef @ck_createmutex_t : !hl.ptr<!hl.paren<!core.fn<(!hl.lvalue<!hl.ptr<!hl.ptr<!hl.void>>>) -> (!hl.elaborated<!hl.typedef<@ck_rv_t>>)>>>
Expand Down Expand Up @@ -33,7 +33,7 @@ struct ck_c_initialize_args
// CHECK: hl.typedef @CK_C_INITIALIZE_ARGS_PTR : !hl.ptr<!hl.elaborated<!hl.record<@ck_c_initialize_args>>>
typedef struct ck_c_initialize_args *CK_C_INITIALIZE_ARGS_PTR;

// CHECK: hl.var @global_locking sc_static : !hl.lvalue<!hl.elaborated<!hl.typedef<@CK_C_INITIALIZE_ARGS_PTR>>>
// CHECK: hl.var @global_locking, <internal> sc_static : !hl.lvalue<!hl.elaborated<!hl.typedef<@CK_C_INITIALIZE_ARGS_PTR>>>
static CK_C_INITIALIZE_ARGS_PTR global_locking;

// CHECK: hl.func @sc_pkcs11_lock {{.*}} () -> !hl.long
Expand Down
22 changes: 11 additions & 11 deletions test/vast/Dialect/HighLevel/literals-a.c
Original file line number Diff line number Diff line change
@@ -1,55 +1,55 @@
// // RUN: %vast-cc1 -vast-emit-mlir=hl %s -o - | %file-check %s
// // RUN: %vast-cc1 -vast-emit-mlir=hl %s -o %t && %vast-opt %t | diff -B %t -

// CHECK: hl.var @li : !hl.lvalue<!hl.int< const >>
// CHECK: hl.var @li, <external> : !hl.lvalue<!hl.int< const >>
// CHECK: hl.const #core.integer<10> : !hl.int
const int li = 10;

// CHECK: hl.var @lui : !hl.lvalue<!hl.int< unsigned, const >>
// CHECK: hl.var @lui, <external> : !hl.lvalue<!hl.int< unsigned, const >>
// CHECK: hl.const #core.integer<10> : !hl.int< unsigned >
const unsigned int lui = 10u;

// CHECK: hl.var @ll : !hl.lvalue<!hl.long< const >>
// CHECK: hl.var @ll, <external> : !hl.lvalue<!hl.long< const >>
// CHECK: hl.const #core.integer<10> : !hl.long
const long ll = 10l;

// CHECK: hl.var @lf : !hl.lvalue<!hl.float< const >>
// CHECK: hl.var @lf, <external> : !hl.lvalue<!hl.float< const >>
// CHECK: hl.const #core.float<5.000000e-01> : !hl.float
const float lf = 0.5f;

// CHECK: hl.var @ld : !hl.lvalue<!hl.double< const >>
// CHECK: hl.var @ld, <external> : !hl.lvalue<!hl.double< const >>
// CHECK: hl.const #core.float<5.000000e-01> : !hl.double
const double ld = 0.5;

// CHECK: hl.var @lc : !hl.lvalue<!hl.char< const >>
// CHECK: hl.var @lc, <external> : !hl.lvalue<!hl.char< const >>
// CHECK: hl.const #core.integer<97> : !hl.int
// CHECK: IntegralCast : !hl.int -> !hl.char
const char lc = 'a';

// CHECK: hl.var @null : !hl.lvalue<!hl.ptr<!hl.void< const >>>
// CHECK: hl.var @null, <external> : !hl.lvalue<!hl.ptr<!hl.void< const >>>
// CHECK: hl.const #core.integer<0> : !hl.int
// CHECK: NullToPointer : !hl.int -> !hl.ptr<!hl.void< const >>
const void *null = 0;

// CHECK: hl.var @lb : !hl.lvalue<!hl.bool< const >>
// CHECK: hl.var @lb, <external> : !hl.lvalue<!hl.bool< const >>
// CHECK: hl.const #core.integer<1> : !hl.int
// CHECK: IntegralToBoolean : !hl.int -> !hl.bool
const _Bool lb = 1;

#define SCHAR_MIN (-128)
#define SCHAR_MAX 127

// CHECK: hl.var @scmin : !hl.lvalue<!hl.char< const >>
// CHECK: hl.var @scmin, <external> : !hl.lvalue<!hl.char< const >>
// CHECK: hl.const #core.integer<128> : !hl.int
// CHECK: hl.minus
const char scmin = SCHAR_MIN;

// CHECK: hl.var @scmax : !hl.lvalue<!hl.char< const >>
// CHECK: hl.var @scmax, <external> : !hl.lvalue<!hl.char< const >>
// CHECK: hl.const #core.integer<127> : !hl.int
const char scmax = SCHAR_MAX;

#define UCHAR_MAX 255

// CHECK: hl.var @ucmax : !hl.lvalue<!hl.char< unsigned, const >>
// CHECK: hl.var @ucmax, <external> : !hl.lvalue<!hl.char< unsigned, const >>
// CHECK: hl.const #core.integer<255> : !hl.int
const unsigned char ucmax = UCHAR_MAX;
30 changes: 15 additions & 15 deletions test/vast/Dialect/HighLevel/pointers-a.c
Original file line number Diff line number Diff line change
@@ -1,47 +1,47 @@
// RUN: %vast-cc1 -vast-emit-mlir=hl %s -o - | %file-check %s
// RUN: %vast-cc1 -vast-emit-mlir=hl %s -o %t && %vast-opt %t | diff -B %t -

// CHECK: hl.var @vp : !hl.lvalue<!hl.ptr<!hl.void>>
// CHECK: hl.var @vp, <external> : !hl.lvalue<!hl.ptr<!hl.void>>
void * vp = 0;

// CHECK: hl.var @vpp : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.void>>>
// CHECK: hl.var @vpp, <external> : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.void>>>
void ** vpp = 0;

// CHECK: hl.var @ip : !hl.lvalue<!hl.ptr<!hl.int>>
// CHECK: hl.var @ip, <external> : !hl.lvalue<!hl.ptr<!hl.int>>
int * ip = 0;

// CHECK: hl.var @icp : !hl.lvalue<!hl.ptr<!hl.int< const >>>
// CHECK: hl.var @icp, <external> : !hl.lvalue<!hl.ptr<!hl.int< const >>>
int const * icp = 0;

// CHECK: hl.var @cip : !hl.lvalue<!hl.ptr<!hl.int< const >>>
// CHECK: hl.var @cip, <external> : !hl.lvalue<!hl.ptr<!hl.int< const >>>
const int * cip = 0;

// CHECK: hl.var @ipc : !hl.lvalue<!hl.ptr<!hl.int, const >>
// CHECK: hl.var @ipc, <external> : !hl.lvalue<!hl.ptr<!hl.int, const >>
int * const ipc = 0;

// CHECK: hl.var @icpc : !hl.lvalue<!hl.ptr<!hl.int< const >, const >>
// CHECK: hl.var @icpc, <external> : !hl.lvalue<!hl.ptr<!hl.int< const >, const >>
int const * const icpc = 0;

// CHECK: hl.var @cipc : !hl.lvalue<!hl.ptr<!hl.int< const >, const >>
// CHECK: hl.var @cipc, <external> : !hl.lvalue<!hl.ptr<!hl.int< const >, const >>
const int * const cipc = 0;

// CHECK: hl.var @ipp : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.int>>>
// CHECK: hl.var @ipp, <external> : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.int>>>
int ** ipp = 0;

// CHECK: hl.var @ippc : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.int>, const >>
// CHECK: hl.var @ippc, <external> : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.int>, const >>
int ** const ippc = 0;

// CHECK: hl.var @ipcp : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.int, const >>>
// CHECK: hl.var @ipcp, <external> : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.int, const >>>
int * const * ipcp = 0;

// CHECK: hl.var @icpp : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.int< const >>>>
// CHECK: hl.var @icpp, <external> : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.int< const >>>>
int const ** icpp = 0;

// CHECK: hl.var @ipcpc : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.int, const >, const >>
// CHECK: hl.var @ipcpc, <external> : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.int, const >, const >>
int * const * const ipcpc = 0;

// CHECK: hl.var @ippp : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.ptr<!hl.int>>>>
// CHECK: hl.var @ippp, <external> : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.ptr<!hl.int>>>>
int *** ippp = 0;

// CHECK: hl.var @uip : !hl.lvalue<!hl.ptr<!hl.int< unsigned >>>
// CHECK: hl.var @uip, <external> : !hl.lvalue<!hl.ptr<!hl.int< unsigned >>>
unsigned int *uip = 0;
20 changes: 10 additions & 10 deletions test/vast/Dialect/HighLevel/pointers-b.c
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
// RUN: %vast-cc1 -vast-emit-mlir=hl %s -o - | %file-check %s
// RUN: %vast-cc1 -vast-emit-mlir=hl %s -o %t && %vast-opt %t | diff -B %t -

// CHECK: hl.var @p : !hl.lvalue<!hl.ptr<!hl.float>>
// CHECK: hl.var @pp : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.float>>>
// CHECK: hl.var @p, <common> : !hl.lvalue<!hl.ptr<!hl.float>>
// CHECK: hl.var @pp, <common> : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.float>>>
float *p, **pp; // p is a pointer to float
// pp is a pointer to a pointer to float

// CHECK: hl.var @fp : !hl.lvalue<!hl.ptr<!hl.paren<!core.fn<(!hl.lvalue<!hl.int>) -> (!hl.int)>>>>
// CHECK: hl.var @fp, <common> : !hl.lvalue<!hl.ptr<!hl.paren<!core.fn<(!hl.lvalue<!hl.int>) -> (!hl.int)>>>>
int (*fp)(int); // fp is a pointer to function with type int(int)

// CHECK: hl.var @pc : !hl.lvalue<!hl.ptr<!hl.int< const >>>
// CHECK: hl.var @pc, <external> : !hl.lvalue<!hl.ptr<!hl.int< const >>>
int n;
const int * pc = &n; // pc is a non-const pointer to a const int

// CHECK: hl.var @cp : !hl.lvalue<!hl.ptr<!hl.int, const >>
// CHECK: hl.var @cp, <external> : !hl.lvalue<!hl.ptr<!hl.int, const >>
int * const cp = &n; // cp is a const pointer to a non-const int

// CHECK: hl.var @pcp : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.int, const >>>
// CHECK: hl.var @pcp, <external> : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.int, const >>>
int * const * pcp = &cp; // non-const pointer to const pointer to non-const int

// CHECK: hl.var @np : !hl.lvalue<!hl.ptr<!hl.int>>
// CHECK: hl.var @np, <external> : !hl.lvalue<!hl.ptr<!hl.int>>
int *np = &n; // pointer to int
// CHECK: hl.var @npp : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.int, const >>>
// CHECK: hl.var @npp, <external> : !hl.lvalue<!hl.ptr<!hl.ptr<!hl.int, const >>>
int *const *npp = &np; // non-const pointer to const pointer to non-const int

int a[2];
// CHECK: hl.var @ap : !hl.lvalue<!hl.ptr<!hl.paren<!hl.array<2, !hl.int>>>>
// CHECK: hl.var @ap, <external> : !hl.lvalue<!hl.ptr<!hl.paren<!hl.array<2, !hl.int>>>>
int (*ap)[2] = &a; // pointer to array of int

struct S { int n; } s = {1};
// CHECK: hl.var @sp : !hl.lvalue<!hl.ptr<!hl.int>>
// CHECK: hl.var @sp, <external> : !hl.lvalue<!hl.ptr<!hl.int>>
int* sp = &s.n; // pointer to the int that is a member of s
Loading

0 comments on commit bde05ff

Please sign in to comment.