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

Reply via email to