aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/c11-alignas.c
blob: b7ae2abc3be3794287e15a995704bbedee73eab9 (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
28
29
30
31
32
33
34
35
36
37
38
39
40
static _Alignas(8)	int v;
static _Alignas(long)	int t;
static _Alignas(void *)	int p;
static _Alignas(int[4])	int a;
static _Alignas(0)	int z;
static _Alignas(3)	int bnpow2;
static _Alignas(-1)	int bneg;
static _Alignas(-2)	int bnegpow2;
static _Alignas(v)	int bnc;
static _Alignas(+)	int bsyn;

static int check(void)
{
	if (_Alignof(v) != 8)
		return -1;
	if (_Alignof(t) != _Alignof(long))
		return -1;
	if (_Alignof(p) != _Alignof(void *))
		return -1;
	if (_Alignof(a) != _Alignof(int))
		return -1;

	return 0;
}

/*
 * check-name: c11-alignas
 * check-command: test-linearize -std=c11 $file
 *
 * check-error-start
c11-alignas.c:6:25: warning: non-power-of-2 alignment
c11-alignas.c:7:25: warning: non-positive alignment
c11-alignas.c:8:25: warning: non-positive alignment
c11-alignas.c:9:17: error: bad constant expression
c11-alignas.c:10:17: error: Syntax error in unary expression
 * check-error-end
 *
 * check-output-ignore
 * check-output-contains: ret\\.32 *\\$0
 */