This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/29840] [4.3 Regression] build/genconditions ../../gcc/gcc/config/pa/pa.md > tmp-condmd.c: /bin/sh: 13354 Memory fault(coredump)
- From: "danglin at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 25 Nov 2006 20:15:05 -0000
- Subject: [Bug target/29840] [4.3 Regression] build/genconditions ../../gcc/gcc/config/pa/pa.md > tmp-condmd.c: /bin/sh: 13354 Memory fault(coredump)
- References: <bug-29840-276@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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