[Bug target/29840] [4.3 Regression] build/genconditions ../../gcc/gcc/config/pa/pa.md > tmp-condmd.c: /bin/sh: 13354 Memory fault(coredump)
danglin at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Sat Nov 25 20:15:00 GMT 2006
------- Comment #3 from danglin at gcc dot gnu dot org 2006-11-25 20:15 -------
In print_c_condition, we have these two calls:
print_rtx_ptr_loc (cond);
printf ("(%s)", cond);
The generated assembly code is:
0x400000000000d4d0 <print_c_condition+216>: ldd -40(ret1),r26
0x400000000000d4d4 <print_c_condition+220>: ldo -30(sp),ret1
0x400000000000d4d8 <print_c_condition+224>: b,l 0x400000000000d3b8
<print_rtx_ptr_loc>,rp
0x400000000000d4dc <print_c_condition+228>: copy dp,r4
0x400000000000d4e0 <print_c_condition+232>: ldd -40(ret1),r25
0x400000000000d4e4 <print_c_condition+236>: copy r4,dp
0x400000000000d4e8 <print_c_condition+240>: addil L%0,dp,r1
0x400000000000d4ec <print_c_condition+244>: ldd 80(r1),r26
0x400000000000d4f0 <print_c_condition+248>: ldo -30(sp),ret1
0x400000000000d4f4 <print_c_condition+252>: b,l 0x400000000000d994
<.stub+60>,rp
0x400000000000d4f8 <print_c_condition+256>: nop
The insn at 0x400000000000d4e0 is the problem. Register ret1 is the argument
pointer. It's call clobbered, so it must be saved and restored if an argument
(in this case cond) needs to be reloaded from the argument block on the stack.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29840
More information about the Gcc-bugs
mailing list