diff options
Diffstat (limited to 'gcc/config/i386/i386.c')
-rw-r--r-- | gcc/config/i386/i386.c | 68 |
1 files changed, 20 insertions, 48 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index f7f5873829f..36d85765457 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -1,6 +1,6 @@ /* Subroutines used for code generation on IA-32. - Copyright (C) 1988, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 + Copyright (C) 1988, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, + 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. This file is part of GCC. @@ -13255,8 +13255,7 @@ ix86_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED, rtx val = force_operand (XEXP (x, 1), temp); if (val != temp) { - if (GET_MODE (val) != Pmode) - val = convert_to_mode (Pmode, val, 1); + val = convert_to_mode (Pmode, val, 1); emit_move_insn (temp, val); } @@ -13270,8 +13269,7 @@ ix86_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED, rtx val = force_operand (XEXP (x, 0), temp); if (val != temp) { - if (GET_MODE (val) != Pmode) - val = convert_to_mode (Pmode, val, 1); + val = convert_to_mode (Pmode, val, 1); emit_move_insn (temp, val); } @@ -15939,8 +15937,7 @@ ix86_expand_move (enum machine_mode mode, rtx operands[]) op1 = force_operand (op1, op0); if (op1 == op0) return; - if (GET_MODE (op1) != mode) - op1 = convert_to_mode (mode, op1, 1); + op1 = convert_to_mode (mode, op1, 1); } else if (TARGET_DLLIMPORT_DECL_ATTRIBUTES && SYMBOL_REF_DLLIMPORT_P (op1)) @@ -15968,8 +15965,7 @@ ix86_expand_move (enum machine_mode mode, rtx operands[]) op0, 1, OPTAB_DIRECT); if (tmp == op0) return; - if (GET_MODE (tmp) != mode) - op1 = convert_to_mode (mode, tmp, 1); + op1 = convert_to_mode (mode, tmp, 1); } } @@ -16022,8 +16018,7 @@ ix86_expand_move (enum machine_mode mode, rtx operands[]) op1 = legitimize_pic_address (op1, reg); if (op0 == op1) return; - if (GET_MODE (op1) != mode) - op1 = convert_to_mode (mode, op1, 1); + op1 = convert_to_mode (mode, op1, 1); } } } @@ -21659,9 +21654,7 @@ ix86_adjust_counter (rtx countreg, HOST_WIDE_INT value) rtx ix86_zero_extend_to_Pmode (rtx exp) { - if (GET_MODE (exp) != Pmode) - exp = convert_to_mode (Pmode, exp, 1); - return force_reg (Pmode, exp); + return force_reg (Pmode, convert_to_mode (Pmode, exp, 1)); } /* Divide COUNTREG by SCALE. */ @@ -23633,9 +23626,7 @@ ix86_expand_call (rtx retval, rtx fnaddr, rtx callarg1, ? !sibcall_insn_operand (XEXP (fnaddr, 0), word_mode) : !call_insn_operand (XEXP (fnaddr, 0), word_mode)) { - fnaddr = XEXP (fnaddr, 0); - if (GET_MODE (fnaddr) != word_mode) - fnaddr = convert_to_mode (word_mode, fnaddr, 1); + fnaddr = convert_to_mode (word_mode, XEXP (fnaddr, 0), 1); fnaddr = gen_rtx_MEM (QImode, copy_to_mode_reg (word_mode, fnaddr)); } @@ -31285,9 +31276,8 @@ ix86_expand_special_args_builtin (const struct builtin_description *d, gcc_assert (target == 0); if (memory) { - if (GET_MODE (op) != Pmode) - op = convert_to_mode (Pmode, op, 1); - target = gen_rtx_MEM (tmode, force_reg (Pmode, op)); + op = force_reg (Pmode, convert_to_mode (Pmode, op, 1)); + target = gen_rtx_MEM (tmode, op); } else target = force_reg (tmode, op); @@ -31331,9 +31321,8 @@ ix86_expand_special_args_builtin (const struct builtin_description *d, if (i == memory) { /* This must be the memory operand. */ - if (GET_MODE (op) != Pmode) - op = convert_to_mode (Pmode, op, 1); - op = gen_rtx_MEM (mode, force_reg (Pmode, op)); + op = force_reg (Pmode, convert_to_mode (Pmode, op, 1)); + op = gen_rtx_MEM (mode, op); gcc_assert (GET_MODE (op) == mode || GET_MODE (op) == VOIDmode); } @@ -31581,9 +31570,8 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, mode1 = insn_data[icode].operand[1].mode; mode2 = insn_data[icode].operand[2].mode; - if (GET_MODE (op0) != Pmode) - op0 = convert_to_mode (Pmode, op0, 1); - op0 = gen_rtx_MEM (mode1, force_reg (Pmode, op0)); + op0 = force_reg (Pmode, convert_to_mode (Pmode, op0, 1)); + op0 = gen_rtx_MEM (mode1, op0); if (!insn_data[icode].operand[0].predicate (op0, mode0)) op0 = copy_to_mode_reg (mode0, op0); @@ -31614,11 +31602,7 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, op0 = expand_normal (arg0); icode = CODE_FOR_sse2_clflush; if (!insn_data[icode].operand[0].predicate (op0, Pmode)) - { - if (GET_MODE (op0) != Pmode) - op0 = convert_to_mode (Pmode, op0, 1); - op0 = force_reg (Pmode, op0); - } + op0 = force_reg (Pmode, convert_to_mode (Pmode, op0, 1)); emit_insn (gen_sse2_clflush (op0)); return 0; @@ -31631,11 +31615,7 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, op1 = expand_normal (arg1); op2 = expand_normal (arg2); if (!REG_P (op0)) - { - if (GET_MODE (op0) != Pmode) - op0 = convert_to_mode (Pmode, op0, 1); - op0 = force_reg (Pmode, op0); - } + op0 = force_reg (Pmode, convert_to_mode (Pmode, op0, 1)); if (!REG_P (op1)) op1 = copy_to_mode_reg (SImode, op1); if (!REG_P (op2)) @@ -31872,11 +31852,7 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, op0 = expand_normal (arg0); icode = CODE_FOR_lwp_llwpcb; if (!insn_data[icode].operand[0].predicate (op0, Pmode)) - { - if (GET_MODE (op0) != Pmode) - op0 = convert_to_mode (Pmode, op0, 1); - op0 = force_reg (Pmode, op0); - } + op0 = force_reg (Pmode, convert_to_mode (Pmode, op0, 1)); emit_insn (gen_lwp_llwpcb (op0)); return 0; @@ -32022,9 +31998,7 @@ addcarryx: /* Generate CF from input operand. */ op1 = expand_normal (arg0); - if (GET_MODE (op1) != QImode) - op1 = convert_to_mode (QImode, op1, 1); - op1 = copy_to_mode_reg (QImode, op1); + op1 = copy_to_mode_reg (QImode, convert_to_mode (QImode, op1, 1)); emit_insn (gen_addqi3_cc (op0, op1, constm1_rtx)); /* Gen ADCX instruction to compute X+Y+CF. */ @@ -32174,9 +32148,7 @@ addcarryx: /* Force memory operand only with base register here. But we don't want to do it on memory operand for other builtin functions. */ - if (GET_MODE (op1) != Pmode) - op1 = convert_to_mode (Pmode, op1, 1); - op1 = force_reg (Pmode, op1); + op1 = force_reg (Pmode, convert_to_mode (Pmode, op1, 1)); if (!insn_data[icode].operand[1].predicate (op0, mode0)) op0 = copy_to_mode_reg (mode0, op0); |