This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: (i386-linux x sh-elf) build breakage


On Tue, Jul 11, 2000 at 01:40:06PM -0700, Toshiyasu Morita wrote:
> ../../egcs/gcc/libgcc2.c:958: Internal compiler error in `final',
> at final.c:2027

Here's a temporary workaround.  I'm not installing this.
The comment describes a better fix.

The best fix may be to expand into multiple jumps during initial rtl
generation.  Since this code was written I enhanced the expr.c routines
to be able to handle multiple jumps from the bcc expanders to handle
something similar to this from the new x86 backend.


r~


Index: sh.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/sh/sh.c,v
retrieving revision 1.53
diff -c -p -d -r1.53 sh.c
*** sh.c	2000/05/23 20:10:17	1.53
--- sh.c	2000/07/17 23:58:07
*************** output_branchy_insn (code, template, ins
*** 808,813 ****
--- 808,818 ----
       rtx insn;
       rtx *operands;
  {
+ #if 0
+   /* ??? Final complains about adding insns after shorten branches.
+      Ought to rewrite insn_addresses into a varray so that it can
+      easily be extended.  */
+ 
    rtx next_insn = NEXT_INSN (insn);
  
    if (next_insn && GET_CODE (next_insn) == JUMP_INSN && condjump_p (next_insn))
*************** output_branchy_insn (code, template, ins
*** 837,842 ****
--- 842,854 ----
    operands[9] = gen_label_rtx ();
    emit_label_after (operands[9], insn);
    return template;
+ #else
+   operands[9] = gen_label_rtx ();
+   output_asm_insn (template, operands);
+   ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L",
+                              CODE_LABEL_NUMBER (operands[9]));
+   return "";
+ #endif
  }
  
  const char *

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]