This is the second part of PR 61084, which it seems I'd forgotten to post. pdist calculates a wide result from narrower inputs, so I should have used widest_int rather than wide_int.
Tested by Rainer on SPARC Solaris. OK to install? Thanks, Richard gcc/ PR target/61084 * config/sparc/sparc.c (sparc_fold_builtin): Use widest_int rather than wide_int. Index: gcc/config/sparc/sparc.c =================================================================== --- gcc/config/sparc/sparc.c 2014-05-15 13:49:25.425654068 +0100 +++ gcc/config/sparc/sparc.c 2014-05-16 12:56:48.578349758 +0100 @@ -10915,8 +10915,8 @@ sparc_fold_builtin (tree fndecl, int n_a && TREE_CODE (arg2) == INTEGER_CST) { bool overflow = false; - wide_int result = arg2; - wide_int tmp; + widest_int result = wi::to_widest (arg2); + widest_int tmp; unsigned i; for (i = 0; i < VECTOR_CST_NELTS (arg0); ++i) @@ -10926,8 +10926,8 @@ sparc_fold_builtin (tree fndecl, int n_a bool neg1_ovf, neg2_ovf, add1_ovf, add2_ovf; - tmp = wi::neg (e1, &neg1_ovf); - tmp = wi::add (e0, tmp, SIGNED, &add1_ovf); + tmp = wi::neg (wi::to_widest (e1), &neg1_ovf); + tmp = wi::add (wi::to_widest (e0), tmp, SIGNED, &add1_ovf); if (wi::neg_p (tmp)) tmp = wi::neg (tmp, &neg2_ovf); else