Committed. Richard.
2014-09-10 Richard Biener <rguent...@suse.de> * match-conversions.pd: Fix unsigned type used for shortened multiplication. Index: gcc/match-conversions.pd =================================================================== --- gcc/match-conversions.pd (revision 215057) +++ gcc/match-conversions.pd (working copy) @@ -59,10 +59,9 @@ && TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (@0))) (if (TYPE_OVERFLOW_WRAPS (type)) (mult (convert @0) (convert @1))) - (with { tree utype = unsigned_type_for (TREE_TYPE (@0)); } + (with { tree utype = unsigned_type_for (type); } (convert (mult (convert:utype @0) (convert:utype @1)))))) - /* For integral conversions with the same precision or pointer conversions use a NOP_EXPR instead. */ (simplify