Patchwork [committed] Fix PR middle-end/53823

login
register
mail settings
Submitter John David Anglin
Date Aug. 18, 2012, 11:23 p.m.
Message ID <20120818232332.GA14668@hiauly1.hia.nrc.ca>
Download mbox | patch
Permalink /patch/178500/
State New
Headers show

Comments

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.

Dave

Patch

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