[committed] Fix PR middle-end/53823

Message ID 20120818232332.GA14668@hiauly1.hia.nrc.ca
State New
Headers show

Commit Message

John David Anglin Aug. 18, 2012, 11:23 p.m.
This change fixes PR middle-end/53823.  The negative variant of
synth_mult doesn't handle modes larger than a host wide int.

Approved by rth in PR.

Tested on hppa2.0w-hp-hpux11.11 and hppa64-hp-hpux11.11.



Index: expmed.c
--- expmed.c	(revision 190317)
+++ expmed.c	(working copy)
@@ -3261,7 +3261,6 @@ 
       /* 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 @@ 
 					    &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