aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/enum-alias-3.c
blob: 322c8d82952cfc34bc63fccf6a25e6b56fa2f895 (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
25
26
27
/* { dg-do run } */
/* { dg-require-effective-target lto } */
/* { dg-options "-O2 -flto" } */

typedef int *A;

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

	typedef enum E *B;
	enum E { E1 = -1, E2 = 0, E3 = 1 };
	{
		*(B**)b = d;
	}

	return *(A**)a;
}

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