re PR middle-end/53823 (FAIL: gcc.c-torture/execute/930921-1.c execution at -O0 and -O1)
PR middle-end/53823 * expmed.c (expand_mult): Skip synth_mult for negative coefficients if the mode is larger than a wide int and it is too costly to multiply by a positive multiplier and negate the result. From-SVN: r190505
This commit is contained in:
parent
b44e2c4cfb
commit
b216b86b7e
@ -1,3 +1,10 @@
|
||||
2012-08-18 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
PR middle-end/53823
|
||||
* expmed.c (expand_mult): Skip synth_mult for negative coefficients
|
||||
if the mode is larger than a wide int and it is too costly to multiply
|
||||
by a positive multiplier and negate the result.
|
||||
|
||||
2012-08-18 Steven Bosscher <steven@gcc.gnu.org>
|
||||
|
||||
* sparseset.c (sparseset_alloc): Use non-clearing allocation. Tell
|
||||
|
@ -3261,7 +3261,6 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
|
||||
/* Attempt to handle multiplication of DImode values by negative
|
||||
coefficients, by performing the multiplication by a positive
|
||||
multiplier and then inverting the result. */
|
||||
/* ??? How is this not slightly redundant with the neg variant? */
|
||||
if (is_neg && mode_bitsize > HOST_BITS_PER_WIDE_INT)
|
||||
{
|
||||
/* Its safe to use -coeff even for INT_MIN, as the
|
||||
@ -3278,6 +3277,7 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
|
||||
&algorithm, variant);
|
||||
return expand_unop (mode, neg_optab, temp, target, 0);
|
||||
}
|
||||
goto skip_synth;
|
||||
}
|
||||
|
||||
/* Exclude cost of op0 from max_cost to match the cost
|
||||
|
Loading…
Reference in New Issue
Block a user