1 /* Check if load-relative instructions are created */
2 /* { dg-do compile { target { s390*-*-* } } } */
3 /* { dg-options "-O2 -march=z10 -mzarch" } */
4 
5 /* { dg-final { scan-assembler "lgfrl\t%r.?,b.4" { target { lp64 } } } } */
6 /* { dg-final { scan-assembler "lgfrl\t%r.?,s.12" { target { lp64 } } } } */
7 /* { dg-final { scan-assembler "lgrl\t%r.?,s" { target { lp64 } } } } */
8 
9 /* { dg-final { scan-assembler "lrl\t%r.?,b.4" { target { ! lp64 } } } } */
10 /* { dg-final { scan-assembler "lrl\t%r.?,s.8" { target { ! lp64 } } } } */
11 /* { dg-final { scan-assembler "lrl\t%r.?,s" { target { ! lp64 } } } } */
12 
13 int b[20];
14 
15 struct s
16 {
17   long a;
18   int  b;
19   int  c;
20 } s;
21 
22 struct __attribute__((packed)) s2
23 {
24   char a;
25   char b;
26   char c;
27 } s2;
28 
29 char __attribute__((aligned(1))) arr[10];
30 
foo()31 int foo()
32   {
33     return b[1];
34   }
35 
bar()36 int bar()
37   {
38     return s.c;
39   }
40 
bar2()41 long bar2()
42   {
43     return s.a;
44   }
45 
baz()46 int baz()
47   {
48     return arr[1];
49   }
50