On 08/18/11 03:45, Andrew Pinski wrote: > Forwarding this to the gcc list. Also Adding RTH to the CC since he > helped Bernd to get the dwarf2 parts working correctly.
> You probably know this already. The c6x-elf target fails to build > libgcc with the current FSF mainline sources: > > gcc/libgcc2.c: In function ‘__gnu_mulsc3’: > gcc/libgcc2.c:1928:1: internal compiler error: in scan_trace, at > dwarf2cfi.c:2433 > Please submit a full bug report, Thanks Richard for fixing this (I've been on vacation). There are some testsuite failures at -O3 in another part of dwarf2cfi, which are caused by computed_jump_p returning 0 for the indirect_jump_shadow pattern. There isn't really a sensible way to represent this pattern in RTL, but we can take advantage of the fact that computed_jump_p returns true for constants. I committed the following patch. Bernd
Index: gcc/ChangeLog =================================================================== --- gcc/ChangeLog (revision 177967) +++ gcc/ChangeLog (working copy) @@ -1,3 +1,8 @@ +2011-08-22 Bernd Schmidt <ber...@codesourcery.com> + + * config/c6x/c6x.md (indirect_jump_shadow): Tweak representation + to make computed_jump_p return true. + 2011-08-22 Rainer Orth <r...@cebitec.uni-bielefeld.de> * configure.ac (GCC_PICFLAG_FOR_TARGET): Call it. Index: gcc/config/c6x/c6x.md =================================================================== --- gcc/config/c6x/c6x.md (revision 177952) +++ gcc/config/c6x/c6x.md (working copy) @@ -1427,8 +1427,10 @@ (define_insn "real_ret" (set_attr "cross" "y,n") (set_attr "dest_regfile" "b")]) +;; computed_jump_p returns true if it finds a constant; so use one in the +;; unspec. (define_insn "indirect_jump_shadow" - [(set (pc) (unspec [(pc)] UNSPEC_JUMP_SHADOW))] + [(set (pc) (unspec [(const_int 1)] UNSPEC_JUMP_SHADOW))] "" ";; indirect jump occurs" [(set_attr "type" "shadow")])