diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 12e76e2..978b57a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2010-06-04 Uros Bizjak <ubizjak@gmail.com> + + * config/i386/i386.md (*addhi_1_lea) <TYPE_INCDEC, default>: Assert + that operand 0 and operand 1 are equal. + (*addqi_1_lea) <TYPE_INCDEC, default>: Ditto. + (*add<mode>_2) <TYPE_INCDEC>: Remove assert that operand 0 + and operand 1 are equal. + <default>: Ditto. Remove ??? comment. + (*add<mode>_3) <TYPE_INCDEC>: Remove assert that operand 0 + and operand 1 are equal. + <default>: Ditto. Remove ??? comment. + (*adddi_4) <default>: Remove assert that operand 0 and operand 1 + are equal. + (*add<mode>_4) <default>: Ditto. + (*add<mode>_5) <TYPE_INCDEC, default>: Ditto. + 2010-06-04 Nathan Froyd <froydnj@codesourcery.com> * config/i386/i386-protos.h (ix86_print_operand): Declare. @@ -19,8 +35,8 @@ 2010-06-04 Uros Bizjak <ubizjak@gmail.com> - * config/i386/i386.md (*addqi_2): Do not assert operands[2] == 255 - for TYPE_INCDEC operands. + * config/i386/i386.md (*addqi_2) <TYPE_INCDEC>: Do not assert that + operands[2] == 255. (*addqi_3): Ditto. (*addqi_4): Ditto. (*addqi_5): Ditto. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 468c239..d446633 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -6232,7 +6232,9 @@ { case TYPE_LEA: return "#"; + case TYPE_INCDEC: + gcc_assert (rtx_equal_p (operands[0], operands[1])); if (operands[2] == const1_rtx) return "inc{w}\t%0"; else @@ -6242,6 +6244,7 @@ } default: + gcc_assert (rtx_equal_p (operands[0], operands[1])); if (x86_maybe_negate_const_int (&operands[2], HImode)) return "sub{w}\t{%2, %0|%0, %2}"; @@ -6320,7 +6323,9 @@ { case TYPE_LEA: return "#"; + case TYPE_INCDEC: + gcc_assert (rtx_equal_p (operands[0], operands[1])); if (operands[2] == const1_rtx) return widen ? "inc{l}\t%k0" : "inc{b}\t%0"; else @@ -6330,6 +6335,7 @@ } default: + gcc_assert (rtx_equal_p (operands[0], operands[1])); if (x86_maybe_negate_const_int (&operands[2], QImode)) { if (widen) @@ -6407,7 +6413,6 @@ switch (get_attr_type (insn)) { case TYPE_INCDEC: - gcc_assert (rtx_equal_p (operands[0], operands[1])); if (operands[2] == const1_rtx) return "inc{<imodesuffix>}\t%0"; else @@ -6417,9 +6422,6 @@ } default: - gcc_assert (rtx_equal_p (operands[0], operands[1])); - /* ???? In DImode, we ought to handle there the 32bit case too - - do we need new constraint? */ if (x86_maybe_negate_const_int (&operands[2], <MODE>mode)) return "sub{<imodesuffix>}\t{%2, %0|%0, %2}"; @@ -6490,7 +6492,6 @@ switch (get_attr_type (insn)) { case TYPE_INCDEC: - gcc_assert (rtx_equal_p (operands[0], operands[1])); if (operands[2] == const1_rtx) return "inc{<imodesuffix>}\t%0"; else @@ -6500,9 +6501,6 @@ } default: - gcc_assert (rtx_equal_p (operands[0], operands[1])); - /* ???? In DImode, we ought to handle there the 32bit case too - - do we need new constraint? */ if (x86_maybe_negate_const_int (&operands[2], <MODE>mode)) return "sub{<imodesuffix>}\t{%2, %0|%0, %2}"; @@ -6588,7 +6586,6 @@ } default: - gcc_assert (rtx_equal_p (operands[0], operands[1])); if (x86_maybe_negate_const_int (&operands[2], DImode)) return "add{q}\t{%2, %0|%0, %2}"; @@ -6633,7 +6630,6 @@ } default: - gcc_assert (rtx_equal_p (operands[0], operands[1])); if (x86_maybe_negate_const_int (&operands[2], <MODE>mode)) return "add{<imodesuffix>}\t{%2, %0|%0, %2}"; @@ -6665,7 +6661,6 @@ switch (get_attr_type (insn)) { case TYPE_INCDEC: - gcc_assert (rtx_equal_p (operands[0], operands[1])); if (operands[2] == const1_rtx) return "inc{<imodesuffix>}\t%0"; else @@ -6675,7 +6670,6 @@ } default: - gcc_assert (rtx_equal_p (operands[0], operands[1])); if (x86_maybe_negate_const_int (&operands[2], <MODE>mode)) return "sub{<imodesuffix>}\t{%2, %0|%0, %2}";