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
+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
 
       /* 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
                                            &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