diff options
author | John David Anglin <dave.anglin@nrc-cnrc.gc.ca> | 2012-08-18 23:16:53 +0000 |
---|---|---|
committer | John David Anglin <danglin@gcc.gnu.org> | 2012-08-18 23:16:53 +0000 |
commit | b216b86b7ee3b1f6a83daebab8aadf77d69bd5d0 (patch) | |
tree | cce054ce1aba013927a269a47a19b00fcd6964a0 /gcc/expmed.c | |
parent | b44e2c4cfb03d46d3969039fc54461a1f8afb5d0 (diff) | |
download | gcc-b216b86b7ee3b1f6a83daebab8aadf77d69bd5d0.zip gcc-b216b86b7ee3b1f6a83daebab8aadf77d69bd5d0.tar.gz gcc-b216b86b7ee3b1f6a83daebab8aadf77d69bd5d0.tar.bz2 |
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
Diffstat (limited to 'gcc/expmed.c')
-rw-r--r-- | gcc/expmed.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c index ac944f1..6c94a90 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -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 |