| /* Test failed on an architecture that: |
| |
| - had 16-bit registers, |
| - passed 64-bit structures in registers, |
| - only allowed SImode values in even numbered registers. |
| |
| Before reload, s.i2 in foo() was represented as: |
| |
| (subreg:SI (reg:DI 0) 2) |
| |
| find_dummy_reload would return (reg:SI 1) for the subreg reload, |
| despite that not being a valid register. */ |
| |
| struct s |
| { |
| short i1; |
| long i2; |
| short i3; |
| }; |
| |
| struct s foo (struct s s) |
| { |
| s.i2++; |
| return s; |
| } |
| |
| int main () |
| { |
| struct s s = foo ((struct s) { 1000, 2000L, 3000 }); |
| if (s.i1 != 1000 || s.i2 != 2001L || s.i3 != 3000) |
| abort (); |
| exit (0); |
| } |