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