This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: (i386-linux x sh-elf) build breakage
- To: Toshiyasu Morita <tm at netcom dot com>
- Subject: Re: (i386-linux x sh-elf) build breakage
- From: Richard Henderson <rth at cygnus dot com>
- Date: Mon, 17 Jul 2000 17:03:42 -0700
- Cc: gcc-bugs at gcc dot gnu dot org, Jorn Wolfgang Rennecke <amylaar at cygnus dot com>
- References: <200007112040.NAA06981@netcom.com>
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 *