mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-05 17:43:35 +03:00
52 lines
1.8 KiB
D
52 lines
1.8 KiB
D
// RUN: %ldc -c -output-ll -of=%t.ll %s && FileCheck %s < %t.ll
|
|
// RUN: %ldc -run %s
|
|
|
|
struct S0 { uint x; }
|
|
struct S1 { S0 y; this(this) { y.x = 1; } }
|
|
struct S2 { S1[3] z; }
|
|
|
|
struct C0 { int *x; }
|
|
|
|
void testNested() {
|
|
int x;
|
|
// The 'x' here is accessed via the nested context pointer
|
|
struct N1 { ~this() { ++x; } }
|
|
struct N0 { N1[3] x; }
|
|
{ N0 n; }
|
|
assert(x == 3);
|
|
}
|
|
|
|
// CHECK: @.immutablearray{{.*}} = internal constant [4 x i32]
|
|
// CHECK: @.immutablearray{{.*}} = internal constant [2 x float]
|
|
// CHECK: @.immutablearray{{.*}} = internal constant [2 x double]
|
|
// CHECK: @.immutablearray{{.*}} = internal constant [2 x { i{{32|64}}, i8* }]
|
|
// CHECK: @.immutablearray{{.*}} = internal constant [1 x %const_struct.S2]
|
|
// CHECK: @.immutablearray{{.*}} = internal constant [2 x i32*] {{.*}}globVar
|
|
// CHECK: @.immutablearray{{.*}} = internal constant [2 x void ()*] {{.*}}Dmain
|
|
|
|
void main () {
|
|
// Simple types
|
|
immutable int[] aA = [ 1, 2, 3, 4 ];
|
|
immutable float[] aB = [ 3.14, 3.33 ];
|
|
immutable double[] aC = [ 3.14, 3.33 ];
|
|
immutable string[] aD = [ "one", "two" ];
|
|
|
|
// Complex type
|
|
immutable S2[] aE = [ { [ { { 42 } }, { { 43 } }, { { 44 } } ] } ];
|
|
// Complex type with non-constant initializer
|
|
// CHECK: %.gc_mem = call { i{{32|64}}, i8* } @_d_newarrayU
|
|
// CHECK-SAME: @{{.*}}_D29TypeInfo_yAS12const_struct2C06__initZ
|
|
immutable C0[] aF = [ { new int(42) }, { new int(24) } ];
|
|
|
|
// Pointer types
|
|
static immutable int globVar;
|
|
immutable auto globalVariables = [ &globVar, &globVar ];
|
|
immutable auto functionPointers = [ &main, &main ];
|
|
// Pointer arrays with non-const initializer
|
|
immutable int localVar;
|
|
immutable auto locA = [ &localVar, &localVar ];
|
|
// CHECK: %.gc_mem{{.*}} = call { i{{32|64}}, i8* } @_d_newarrayU
|
|
// CHECK-SAME: @{{.*}}_D13TypeInfo_yAPi6__initZ
|
|
|
|
testNested();
|
|
}
|