/* { dg-do compile } */ /* { dg-options "-O -mgpopt=local -mr0rel-sec=\\.frog.+" } */ extern int a __attribute__ ((section (".frog1"))); static volatile int b __attribute__ ((section (".frog2"))) = 1; extern int c __attribute__ ((section (".data"))); static volatile int d __attribute__ ((section (".data"))) = 2; extern int e; static volatile int f = 3; volatile int g __attribute__ ((weak)) = 4; extern int h[100]; static int i[100]; static int j[100] __attribute__ ((section (".sdata"))); typedef int (*ftype) (int); extern int foo (int); extern int bar (int, int*, int*, int*, ftype); int baz (void) { return bar (a + b + c + d + e + f + g, h, i, j, foo); } /* { dg-final { scan-assembler "%lo\\(a\\)\\(r0\\)" } } */ /* { dg-final { scan-assembler "%lo\\(b\\)\\(r0\\)" } } */ /* { dg-final { scan-assembler-not "%gprel\\(c\\)" } } */ /* { dg-final { scan-assembler-not "%gprel\\(d\\)" } } */ /* { dg-final { scan-assembler-not "%gprel\\(e\\)" } } */ /* { dg-final { scan-assembler "%gprel\\(f\\)" } } */ /* { dg-final { scan-assembler-not "%gprel\\(g\\)" } } */ /* { dg-final { scan-assembler-not "%gprel\\(h\\)" } } */ /* { dg-final { scan-assembler-not "%gprel\\(i\\)" } } */ /* { dg-final { scan-assembler "%gprel\\(j\\)" } } */ /* { dg-final { scan-assembler-not "%gprel\\(foo\\)" } } */