aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/enum-alias-1.c
blob: 8fa30eb78970eb6e073bd2b278ef6bec6ed98f62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* { dg-do run } */
/* { dg-options "-O2" } */

enum E { E1 = -1, E2 = 0, E3 = 1 };

typedef int A;
typedef enum E B;

_Static_assert(_Generic((A){ 0 }, B: 1), "");

void* foo(void* a, void *b, A *c, B *d)
{
	*(A**)a = c;
	*(B**)b = d;
	return *(A**)a;
}

int main()
{
	A *a, b, c;
	if (&c != (A*)foo(&a, &a, &b, &c))
		__builtin_abort();
}