http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55426
--- Comment #5 from Manjunath S Matti <mmatti.gcc at gmail dot com> 2012-11-30 09:28:04 UTC --- The "define_insn_and_split "neon_vld1_dupv2di" contains the DI move pattern as second instruction in split. The pattern generated for the move are subreg:DI (Reg:VDI) to subreg:DI (Reg:VDI). Ideally, this pattern should use "*movdi_vfp" in vfp.md file as suggested by Ramana. However, the "*movdi_vfp" specifies that at least one of the operands should be placed in register. So, subreg in our move pattern should satisfy the condition. However, the condition is not satisfied and hence the move pattern is not being recognized for DImode. Hence, to allow the register in one of the operands, "neon_vld1_dupv2di" pattern was modified to use register in one of the operand. Reload condition was removed as a pseudo register is used in one of the operands. This modification fixed the ICE. Tested with no extra regressions.