This is the mail archive of the gcc-patches@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: REG_SETJMP instead of NOTE_INSN_SETJMP


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


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