* 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).