In one SSE2 int->float split, when TARGET_USE_VECTOR_CONVERTS is true, TARGET_INTER_UNIT_MOVES is false and GENERAL_REG_P (op1) is true. we will get gcc_unreachable. This patch removes TARGET_INTER_UNIT_MOVES check. OK for trunk?
Thanks. H.J. --- 2011-06-30 H.J. Lu <hongjiu...@intel.com> PR target/49600 * config/i386/i386.md (SSE2 int->float split): Don't check TARGET_INTER_UNIT_MOVES. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index e4b96bc..96bdfbb 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -5022,7 +5022,7 @@ if (GET_CODE (op1) == SUBREG) op1 = SUBREG_REG (op1); - if (GENERAL_REG_P (op1) && TARGET_INTER_UNIT_MOVES) + if (GENERAL_REG_P (op1)) { operands[4] = simplify_gen_subreg (V4SImode, operands[0], <MODE>mode, 0); emit_insn (gen_sse2_loadld (operands[4],