dmd/compiler/test/compilable/ctests2.c

208 lines
4.2 KiB
C

/*************************************************/
// https://issues.dlang.org/show_bug.cgi?id=22304
int * __attribute__((__always_inline__)) foo(void)
{
return 0;
}
/*************************************************/
// https://issues.dlang.org/show_bug.cgi?id=22312
typedef int Integer;
typedef int Integer;
/*************************************************/
// https://issues.dlang.org/show_bug.cgi?id=22333
enum E {
oldval __attribute__((deprecated)) = 0,
newval
};
int
fn (void)
{
return oldval;
}
/*************************************************/
// https://issues.dlang.org/show_bug.cgi?id=22342
void func();
void booc(int);
void cooc(i)
int i;
{
}
void test22342()
{
func(3);
booc(3);
cooc(1, 3);
}
/*************************************************/
// https://issues.dlang.org/show_bug.cgi?id=22398
const int a;
int b = a;
/*************************************************/
// https://issues.dlang.org/show_bug.cgi?id=22415
int test22415(int a)
{
switch (a)
{
case 0:
a = 1;
case 1:
return a;
case 2:
default:
return -1;
}
}
/*************************************************/
// https://issues.dlang.org/show_bug.cgi?id=22422
int foo22422(void *p __attribute__((align_value(64))))
{
}
/*************************************************/
// https://issues.dlang.org/show_bug.cgi?id=22432
struct S {
int x;
};
typedef int T;
struct S F(struct S);
void test22432()
{
struct S s;
int x1 = (int)(s).x;
int x2 = (T)(s).x;
int x3 = (F)(s).x;
struct S s1 = (F)(s);
double d = 1.0;
int x4 = (T)(d);
int x5 = (T)(d)++;
int x6 = (T)(d)--;
struct S* p;
int x7 = (T)(p)->x;
int a[3];
int x8 = (T)(a)[1]++;
}
/*************************************************/
// https://issues.dlang.org/show_bug.cgi?id=22534
struct S22534 { int x; };
void test22534(struct S22534 *const p)
{
p->x = 1;
}
/*************************************************/
// https://issues.dlang.org/show_bug.cgi?id=22560
;;;
; struct S22560 { int x; };;;;
; int func22560();;;
;;;
/*************************************************/
// typeof()
void testTypeof(void)
{
// general declarations
short a;
_Static_assert(sizeof(a) == sizeof(short), "1");
typeof(a) b;
_Static_assert(sizeof(b) == sizeof(short), "2");
typeof(short) c;
_Static_assert(sizeof(c) == sizeof(short), "3");
typeof(a + 1) d;
_Static_assert(sizeof(d) == sizeof(int), "4"); // promoted
typeof(a += 1) e;
_Static_assert(sizeof(e) == sizeof(short), "5");
typeof(1, 1) f;
_Static_assert(sizeof(f) == sizeof(int), "6");
typeof(_Generic(1, default: 0)) g;
_Static_assert(sizeof(g) == sizeof(int), "7");
const typeof(a) h = (typeof(a))0;
_Static_assert(sizeof(h) == sizeof(short), "8");
typeof(const short) i = h;
_Static_assert(sizeof(i) == sizeof(short), "9");
// function parameters
typeof(a) fun(typeof(a), typeof(h));
fun(a, h);
_Static_assert(sizeof(fun(a, h)) == sizeof(short), "10");
// aggregate fields
struct Foo { typeof(a) x; };
typeof(((struct Foo){0}).x) fa;
_Static_assert(sizeof(fa) == sizeof(short), "11");
// typedefs
typedef short Bar;
Bar ta;
_Static_assert(sizeof(ta) == sizeof(short), "12");
typeof(ta) tb;
_Static_assert(sizeof(tb) == sizeof(short), "13");
typeof(Bar) tc;
_Static_assert(sizeof(tc) == sizeof(short), "14");
// pointers
typeof(&a) pa;
_Static_assert(sizeof(pa) == sizeof(void*), "15");
typeof(*pa) pb;
_Static_assert(sizeof(pb) == sizeof(short), "16");
}
short testTypeofA;
const typeof(testTypeofA) testTypeofB = 0;
_Static_assert(sizeof(testTypeofB) == sizeof(short), "17");
/*************************************************/
// https://issues.dlang.org/show_bug.cgi?id=23752
void *c23752 = &*((void*)(0));
/*************************************************/
// https://issues.dlang.org/show_bug.cgi?id=23767
const int arr23767[4];
void f23767(void)
{
int x = *(0 ? (void*)0 : arr23767);
int y = *(1 ? arr23767 : (void*)(3-3));
int* p = (1 ? (void*)0 : (void*)0);
}
/*************************************************/