Fix ix86 rtx costs for the pr30315 testcase (PR target/30315)

* config/i386/i386.c (ix86_rtx_costs): Handle care of a PLUS in a
	COMPARE, representing an overflow detection.

From-SVN: r278654
This commit is contained in:
Bernd Schmidt 2019-11-24 13:08:27 +00:00 committed by Bernd Schmidt
parent 74bc2a43ce
commit cc2ccbcedd
2 changed files with 14 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2019-11-24 Bernd Schmidt <bernds_cb1@t-online.de>
* config/i386/i386.c (ix86_rtx_costs): Handle care of a PLUS in a
COMPARE, representing an overflow detection.
2019-11-23 Jan Hubicka <hubicka@ucw.cz>
* cif-code.def (MAX_INLINE_INSNS_SINGLE_O2_LIMIT): Remove.

View File

@ -19501,6 +19501,15 @@ ix86_rtx_costs (rtx x, machine_mode mode, int outer_code_i, int opno,
return true;
}
if (GET_CODE (XEXP (x, 0)) == PLUS
&& rtx_equal_p (XEXP (XEXP (x, 0), 0), XEXP (x, 1)))
{
/* This is an overflow detection, count it as a normal compare. */
*total = rtx_cost (XEXP (x, 0), GET_MODE (XEXP (x, 0)),
COMPARE, 0, speed);
return true;
}
/* The embedded comparison operand is completely free. */
if (!general_operand (XEXP (x, 0), GET_MODE (XEXP (x, 0)))
&& XEXP (x, 1) == const0_rtx)