public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* NOTE_INSN_LOOP_END note crept in between casesi-insn and addr_diff_vec?
@ 2004-09-02 15:20 Hans-Peter Nilsson
  2004-09-03 16:43 ` Jeffrey A Law
  0 siblings, 1 reply; 2+ messages in thread
From: Hans-Peter Nilsson @ 2004-09-02 15:20 UTC (permalink / raw)
  To: gcc

The CRIS port inspects PREV_INSN (PREV_INSN (jump_table)) in
ASM_OUTPUT_CASE_END and expects the casesi insn to be there.
Now a note has crept in between the jump table insn (last insn
in the casesi expansion) and the jump_table.  This breaks cris-*
as follows (for a while, but for the record this particular
checkout was from "Thu Sep 2 12:32:53 GMT 2004" (with the
"WARNing" in toplev.c updated)):

...
/home/hp/builds2/cris-xsim/gcc/xgcc -B/home/hp/builds2/cris-xsim/gcc/ -B/home/hp/work/axis/build/gcc3testprefix/cris-elf/bin/ -B/\
home/hp/work/axis/build/gcc3testprefix/cris-elf/lib/ -isystem /home/hp/work/axis/build/gcc3testprefix/cris-elf/include -isystem /\
home/hp/work/axis/build/gcc3testprefix/cris-elf/sys-include -c -DHAVE_CONFIG_H -O2 -g -O2  -I. -I/home/hp/cvs_areas/combined/cvs_\
write/libiberty/../include  -W -Wall -Wtraditional -pedantic /home/hp/cvs_areas/combined/cvs_write/libiberty/cplus-dem.c -o cplus\
-dem.o
/home/hp/cvs_areas/combined/cvs_write/libiberty/cplus-dem.c: In function `do_type':
/home/hp/cvs_areas/combined/cvs_write/libiberty/cplus-dem.c:3813: internal compiler error: Segmentation fault

The SEGV is when outputting the end of a case table.  The RTL at
final output is as follows:

(jump_insn 1685 2172 1719 /home/hp/cvs_areas/combined/cvs_write/libiberty/cplus-dem.c:3844 (parallel [
            (set (pc)
                (if_then_else (ltu (reg:SI 9 r9 [473])
                        (const_int 51 [0x33]))
                    (plus:SI (sign_extend:SI (mem:HI (plus:SI (mult:SI (reg:SI 9 r9 [473])
                                        (const_int 2 [0x2]))
                                    (pc)) [0 S2 A8]))
                        (pc))
                    (label_ref 959)))
            (use (label_ref 1686))
        ]) 91 {*casesi_adds_w} (insn_list 1684 (nil))
    (expr_list:REG_BR_PRED (const_int 12 [0xc])
        (expr_list (reg:SI 9 r9 [473])
            (nil))))

(note 1719 1685 1686 NOTE_INSN_LOOP_END)

(code_label 1686 1719 1687 1042 "" [1 uses])

(jump_insn 1687 1686 1688 (addr_diff_vec:HI (label_ref:SI 1686)
         [
            (label_ref:SI 825)
            (label_ref:SI 959)
	...])

Eh, I'm sure that NOTE_INSN_LOOP_END didn't use to be there.
Anyway, it seems I have been relying on an undocumented relation
in the CRIS port (not documented at ASM_OUTPUT_CASE_END at
least).  Maybe that was supposed to change, but maybe a bug
caused the NOTE_INSN_LOOP_END to move there.  I'll find out soon
anyway, I'm just fishing for a quick answer.

brgds, H-P

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: NOTE_INSN_LOOP_END note crept in between casesi-insn and addr_diff_vec?
  2004-09-02 15:20 NOTE_INSN_LOOP_END note crept in between casesi-insn and addr_diff_vec? Hans-Peter Nilsson
@ 2004-09-03 16:43 ` Jeffrey A Law
  0 siblings, 0 replies; 2+ messages in thread
From: Jeffrey A Law @ 2004-09-03 16:43 UTC (permalink / raw)
  To: Hans-Peter Nilsson; +Cc: gcc

On Thu, 2004-09-02 at 09:20, Hans-Peter Nilsson wrote:
> The CRIS port inspects PREV_INSN (PREV_INSN (jump_table)) in
> ASM_OUTPUT_CASE_END and expects the casesi insn to be there.
> Now a note has crept in between the jump table insn (last insn
> in the casesi expansion) and the jump_table.  This breaks cris-*
> as follows (for a while, but for the record this particular
> checkout was from "Thu Sep 2 12:32:53 GMT 2004" (with the
> "WARNing" in toplev.c updated)):
IIRC, nothing should exist between the jump and its associated
jump table.  I'd start by looking into who moved the note into
the bogus location.

jeff


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-09-03 16:43 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-09-02 15:20 NOTE_INSN_LOOP_END note crept in between casesi-insn and addr_diff_vec? Hans-Peter Nilsson
2004-09-03 16:43 ` Jeffrey A Law

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).