1 /* Check if load-relative instructions are created */
2 /* { dg-do compile { target { s390*-*-* } } } */
3 /* { dg-options "-O2 -march=z10 -mzarch -fno-section-anchors" } */
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