This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch, mips] Fix for PR target/56942
- From: Richard Sandiford <rdsandiford at googlemail dot com>
- To: "Steve Ellcey " <sellcey at imgtec dot com>
- Cc: <rsandiford at googlemail dot com>, <gcc-patches at gcc dot gnu dot org>, <andrew dot bennett at imgtec dot com>, stevenb dot gcc at gmail dot com
- Date: Wed, 24 Apr 2013 07:45:41 +0100
- Subject: Re: [patch, mips] Fix for PR target/56942
- References: <2c243f55-9b58-4e4a-86cf-9dd5be8ea183 at BAMAIL02 dot ba dot imgtec dot org>
"Steve Ellcey " <sellcey@imgtec.com> writes:
> 2013-04-19 Andrew Bennett <andrew.bennett@imgtec.com>
> Steve Ellcey <sellcey@imgtec.com>
>
> PR target/56942
> * config/mips/mips.md (casesi_internal_mips16_<mode>): Use
> next_active_insn instead of next_real_insn.
Hmm, I don't really like this. Steven said from ARM in
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56809:
-----------------------------------------------------------------------
Target bug, this is wrong:
rtx diff_vec = PATTERN (next_real_insn (operands[2]));
A jump_table_data is not a real insn. Before my patch this worked
by accident because the jump table would hide in a JUMP_INSN and
next_real_insn returned any JUMP_P insn.
Use next_active_insn instead.
-----------------------------------------------------------------------
But using next_real_insn was at least as correct (IMO, more correct)
as next_active_insn before r197266. It seems counterintuitive that
something can be "active" but not "real".
Richard