The failure is caused by an (gdb) r Starting program: /mnt/gnu/gcc-3.3/objdir/gcc/testsuite/strct-pack-3.xg Program received signal SIGBUS, Bus error. 0x000029a8 in f () (gdb) disass f Dump of assembler code for function f: 0x00002998 <f+0>: ldh 8(,r26),ret0 0x0000299c <f+4>: extrw,s ret0,31,15,ret0 0x000029a0 <f+8>: depw,z ret0,30,31,r19 0x000029a4 <f+12>: ldi 2,r20 0x000029a8 <f+16>: ldw 2(,r26),ret0 ... (gdb) p/x $r26 $1 = 0x7eff05b8
The r26 base register and the displacement of 2 must sum to zero modulo 4. Since it's the sum that matters for this insn, we don't require both the base and the displacement to be aligned. This worked in 3.[34]. -- Summary: [4.0 Regression] FAIL: gcc.c-torture/execute/strct-pack- 3.c execution, -O1 Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: danglin at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: hppa2.0w-hp-hpux11.11 GCC host triplet: hppa2.0w-hp-hpux11.11 GCC target triplet: hppa2.0w-hp-hpux11.11 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19083