------- 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 | |(gc...@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