This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug regression/41188] move_invariant_reg() damages CBRANCH instructions with CLOBBER attribute
- From: "amylaar at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 2 Sep 2009 12:18:34 -0000
- Subject: [Bug regression/41188] move_invariant_reg() damages CBRANCH instructions with CLOBBER attribute
- References: <bug-41188-18129@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #6 from amylaar at gcc dot gnu dot org 2009-09-02 12:18 -------
Note that I discovered this bug in the milepost code only after single-stepping
through the SIMD co-processor code to find out what was going wrong.
A match_dup is only effective when an instruction is recognized, and reload
only cares about all the constraints being satisfied. Since the instruction
was recognized before move_invariant_reg, its insn_code was cached, and as far
as all the subsequent passes were concerned, there was no reason to
re-recognize the instruction which had the invalid change.
In other cases, e.g. when reload has to do some real work, you might see an
ICE.
--
amylaar at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
GCC build triplet|independent (i686-cygwin) |independent (i686-cygwin) /
| |x86_64-unknown-linux-gnu
| |(gcc13@fsff
GCC target triplet|msp430 (see below) |msp430 (see below) / --
| |target=arc-elf32 --with-
| |extra-target-list
Keywords| |ice-on-valid-code, wrong-
| |code
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41188