1 /* PR tree-optimization/83337 */
2 /* { dg-do run { target int32plus } } */
3 /* { dg-options "-O2 -floop-interchange" } */
4 /* { dg-require-effective-target alloca } */
5 /* { dg-skip-if "too big stack" { visium-*-* } } */
7 /* Copied from graphite/interchange-5.c */
19 static void __attribute__((noipa
))
23 struct S
{ char d
[n
]; int a
: 3; int b
: 17; int c
: 12; };
26 for (i
= 0; i
< N
; i
++)
28 asm volatile ("" : : "g" (&A
[0][0]) : "memory");
29 for (j
= 0; j
< M
; j
++)
32 asm volatile ("" : : "g" (&A
[0][0]) : "memory");
34 for (i
= 0; i
< M
; i
++)
35 for (j
= 0; j
< N
; j
++)
36 A
[j
][i
].b
= 5 * A
[j
][i
].b
;
38 asm volatile ("" : : "g" (&A
[0][0]) : "memory");
39 int res
= A
[0][0].b
+ A
[N
-1][M
-1].b
;
42 fprintf (stderr
, "res = %d \n", res
);