1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-optimized" } */
3
4 char *my_alloc1 (int len, int align) __attribute__((__alloc_align__ (2)));
5 char *my_alloc2 (int align, int len) __attribute__((alloc_align (1)));
6
7 int
test1(int len)8 test1 (int len)
9 {
10 int i;
11 char *p = my_alloc1 (len, 32);
12 return ((__INTPTR_TYPE__) p) & 31;
13 }
14
15 int
test2(int len)16 test2 (int len)
17 {
18 int i;
19 char *p = my_alloc2 (32, len);
20 return ((__INTPTR_TYPE__) p) & 31;
21 }
22
23 int
test3(int len)24 test3 (int len)
25 {
26 int i;
27 char *p = my_alloc1 (len, 16);
28 return ((__INTPTR_TYPE__) p) & 15;
29 }
30
31 int
test4(int len)32 test4 (int len)
33 {
34 int i;
35 char *p = my_alloc2 (16, len);
36 return ((__INTPTR_TYPE__) p) & 15;
37 }
38
39 int
test5(int len,int align)40 test5 (int len, int align)
41 {
42 int i;
43 char *p = my_alloc1 (len, align);
44 return ((__INTPTR_TYPE__) p) & 15;
45 }
46
47 int
test6(int len,int align)48 test6 (int len, int align)
49 {
50 int i;
51 char *p = my_alloc2 (align, len);
52 return ((__INTPTR_TYPE__) p) & 15;
53 }
54
55 /* { dg-final { scan-tree-dump-times "return 0" 4 "optimized" } } */
56 /* { dg-final { cleanup-tree-dump "optimized" } } */
57