This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: REG_SETJMP instead of NOTE_INSN_SETJMP
- To: Jan Hubicka <jh at suse dot cz>
- Subject: Re: REG_SETJMP instead of NOTE_INSN_SETJMP
- From: Roman Zippel <zippel at linux-m68k dot org>
- Date: Sat, 11 Aug 2001 21:16:48 +0200
- CC: gcc-patches at gcc dot gnu dot org, rth at cygnus dot com
- References: <20010807133440.O30939@atrey.karlin.mff.cuni.cz>
Hi,
Jan Hubicka wrote:
> current way of signalizing setjmp using INSN notes looks fragile. IMO much better
> is to use REG_ note as we do with noreturn calls and friends.
It seems to cause a regression on m68k:
/home/roman/src/gcc/egcs/gcc/testsuite/gcc.c-torture/compile/920501-20.c:
In function `f':
/home/roman/src/gcc/egcs/gcc/testsuite/gcc.c-torture/compile/920501-20.c:1:
Internal compiler error in distribute_notes, at combine.c:12464
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
Backtrace is:
#0 fancy_abort (file=0x801ecbd4 "../../egcs/gcc/combine.c", line=12464,
function=0x801eccb2 "distribute_notes") at
../../egcs/gcc/diagnostic.c:1713
#1 0x8016f496 in distribute_notes (notes=0xc00fe580,
from_insn=0xc00fcdc0,
i3=0xc00fcdc0, i2=0x0, elim_i2=0xc00faf70, elim_i1=0x0)
at ../../egcs/gcc/combine.c:12464
#2 0x80162544 in try_combine (i3=0xc00fcdc0, i2=0xc00fbc80, i1=0x0,
new_direct_jump_p=0xeffff284) at ../../egcs/gcc/combine.c:2614
#3 0x8015fc9a in combine_instructions (f=0xc00fba80, nregs=37)
at ../../egcs/gcc/combine.c:614
#4 0x8013f698 in rest_of_compilation (decl=0xc00de5cc)
at ../../egcs/gcc/toplev.c:3267
#5 0x80017e36 in c_expand_body (fndecl=0xc00de5cc, nested_p=0)
at ../../egcs/gcc/c-decl.c:6724
#6 0x80017bf0 in finish_function (nested=0) at
../../egcs/gcc/c-decl.c:6641
#7 0x800026f0 in yyparse_1 () at c-parse.y:359
#8 0x80007d76 in yyparse () at ../../egcs/gcc/c-lex.c:161
#9 0x8013e040 in compile_file (
name=0xeffffc6f
"/home/roman/src/gcc/egcs/gcc/testsuite/gcc.c-torture/compile/920501-20.c")
at ../../egcs/gcc/toplev.c:2318
#10 0x80141d1c in toplev_main (argc=38, argv=0xeffff934)
at ../../egcs/gcc/toplev.c:4918
#11 0x8004745a in main (argc=38, argv=0xeffff934) at
../../egcs/gcc/main.c:34
notes is:
(expr_list:REG_DEAD (reg/f:SI 34)
(expr_list:REG_SETJMP (const_int 0 [0x0])
(nil)))
and from_insn is:
(call_insn 21 20 23 (set (reg:SI 0 %d0)
(call (mem:QI (symbol_ref:SI ("setjmp")) 0)
(const_int 4 [0x4]))) 345 {*m68k.md:6878} (nil)
(nil)
(nil))
bye, Roman