i386: Apply LRA reload workaround to insns with high registers [PR82524]
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / pr82524-2.c
blob766dd1aae1e3bb4be4b6ecd4ea9070772eab1bc0
1 /* PR target/82524 */
2 /* { dg-do compile } */
3 /* { dg-options "-O2 -masm=att" } */
4 /* { dg-additional-options "-mregparm=3" { target ia32 } } */
5 /* { dg-final { scan-assembler-not "mov\[sz\]bl" } } */
7 struct S
9 char pad1;
10 char val;
11 char pad2;
12 char pad3;
15 struct S
16 test_plus (struct S a, struct S b, char *c)
18 a.val = b.val + *c;
20 return a;
23 /* { dg-final { scan-assembler "\[ \t\]addb" } } */
25 struct S
26 test_minus (struct S a, struct S b, char *c)
28 a.val = b.val - *c;
30 return a;
33 /* { dg-final { scan-assembler "\[ \t\]subb" } } */
35 struct S
36 test_and (struct S a, struct S b, char *c)
38 a.val = b.val & *c;
40 return a;
43 /* { dg-final { scan-assembler "\[ \t\]andb" } } */
45 struct S
46 test_or (struct S a, struct S b, char *c)
48 a.val = b.val | *c;
50 return a;
53 /* { dg-final { scan-assembler "\[ \t\]orb" } } */
55 struct S
56 test_xor (struct S a, struct S b, char *c)
58 a.val = b.val ^ *c;
60 return a;
63 /* { dg-final { scan-assembler "\[ \t\]xorb" } } */