On Mon, Sep 12, 2005 at 01:29:38PM +0200, Max Vozeler wrote: > I've been able to find a reduced testcase that shows the problem. > can find below the results using gcc-3.4 and gcc-4.0 with -O1/-O2 each. > The problem only shows with gcc-4.0 and -O2 on hppa.
In case this helps analyze the problem, attached is the difference in generated code as seen by objdump -d. Both binaries were compiled using gcc-4.0 on paer, one with -O1 and the other with -O2. cheers, Max
--- test.O1.disas 2005-09-12 11:23:31.000000000 +0000 +++ test.O2.disas 2005-09-12 11:23:24.000000000 +0000 @@ -118,41 +118,41 @@ 00010550 <main>: 10550: 6b c2 3f d9 stw rp,-14(,sp) - 10554: 37 de 05 80 ldo 2c0(sp),sp - 10558: 34 13 00 00 ldi 0,r19 - 1055c: 37 df 3a 91 ldo -2b8(sp),r31 - 10560: 22 a0 62 46 ldil 12341000,r21 - 10564: 36 b5 04 68 ldo 234(r21),r21 - 10568: 22 c0 62 46 ldil 12341000,r22 - 1056c: 36 d6 04 68 ldo 234(r22),r22 + 10554: 34 13 00 00 ldi 0,r19 + 10558: 37 de 05 80 ldo 2c0(sp),sp + 1055c: 22 a0 62 46 ldil 12341000,r21 + 10560: 36 b5 04 68 ldo 234(r21),r21 + 10564: 22 c0 62 46 ldil 12341000,r22 + 10568: 36 d6 04 68 ldo 234(r22),r22 + 1056c: 37 df 3a 91 ldo -2b8(sp),r31 10570: 34 14 05 00 ldi 280,r20 10574: 0b f3 0a 1c add,l r19,r31,ret0 - 10578: 0f 95 12 80 stw r21,0(,ret0) - 1057c: 0f 96 12 88 stw r22,4(,ret0) - 10580: 36 73 00 10 ldo 8(r19),r19 + 10578: 36 73 00 10 ldo 8(r19),r19 + 1057c: 0f 95 12 80 stw r21,0(,ret0) + 10580: 0f 96 12 88 stw r22,4(,ret0) 10584: 8a 74 3f dd cmpb,<> r20,r19,10578 <main+0x28> 10588: 0b f3 0a 1c add,l r19,r31,ret0 - 1058c: 4b d7 3b 71 ldw -248(,sp),r23 - 10590: 4b d8 3b 79 ldw -244(,sp),r24 - 10594: 08 17 02 55 copy r23,r21 - 10598: d3 15 09 94 shrpw r21,r24,19,r20 - 1059c: d2 f8 09 93 shrpw r24,r23,19,r19 - 105a0: d2 f8 08 5d shrpw r24,r23,29,ret1 - 105a4: d3 15 08 5c shrpw r21,r24,29,ret0 - 105a8: 0b 93 02 93 xor r19,ret0,r19 - 105ac: 0b b4 02 94 xor r20,ret1,r20 - 105b0: d6 b5 0b 5a depw,z r21,5,6,r21 - 105b4: d3 18 1b 26 extrw,u r24,25,26,r24 - 105b8: 0b 15 02 58 or r21,r24,r24 - 105bc: d2 f7 1b 26 extrw,u r23,25,26,r23 - 105c0: 23 48 10 00 ldil 10800,r26 - 105c4: 37 5a 02 70 ldo 138(r26),r26 - 105c8: 0a f3 02 97 xor r19,r23,r23 - 105cc: 0b 14 02 98 xor r20,r24,r24 + 1058c: 4b dc 3b 71 ldw -248(,sp),ret0 + 10590: 4b dd 3b 79 ldw -244(,sp),ret1 + 10594: 08 1c 02 56 copy ret0,r22 + 10598: d3 93 1b 26 extrw,u ret0,25,26,r19 + 1059c: d3 b6 09 98 shrpw r22,ret1,19,r24 + 105a0: d3 9d 09 97 shrpw ret1,ret0,19,r23 + 105a4: d3 b4 1b 26 extrw,u ret1,25,26,r20 + 105a8: d3 9d 08 5d shrpw ret1,ret0,29,ret1 + 105ac: d6 b6 0b 5a depw,z r22,5,6,r21 + 105b0: d3 b6 08 5c shrpw r22,ret1,29,ret0 + 105b4: 0a 95 02 54 or r21,r20,r20 + 105b8: 0b 97 02 97 xor r23,ret0,r23 + 105bc: 0b b8 02 98 xor r24,ret1,r24 + 105c0: 34 19 00 20 ldi 10,r25 + 105c4: 0a 77 02 97 xor r23,r19,r23 + 105c8: 0a 98 02 98 xor r24,r20,r24 + 105cc: 23 48 10 00 ldil 10800,r26 105d0: e8 5f 1c b5 b,l 10430 <_end_init+0x14>,rp - 105d4: 34 19 00 20 ldi 10,r25 - 105d8: 34 1c 00 00 ldi 0,ret0 - 105dc: 4b c2 3a 59 ldw -2d4(,sp),rp + 105d4: 37 5a 02 70 ldo 138(r26),r26 + 105d8: 4b c2 3a 59 ldw -2d4(,sp),rp + 105dc: 34 1c 00 00 ldi 0,ret0 105e0: e8 40 c0 00 bv r0(rp) 105e4: 37 de 3a 81 ldo -2c0(sp),sp