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")])

Reply via email to