Fix for ipa/PR64503
authorMartin Liska <mliska@suse.cz>
Fri, 9 Jan 2015 10:38:49 +0000 (11:38 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Fri, 9 Jan 2015 10:38:49 +0000 (10:38 +0000)
PR ipa/64503
* sreal.c (sreal::dump): Change unsigned format to signed for
m_exp value.
(sreal::to_double): Replace exp2 with scalbln.

From-SVN: r219378

gcc/ChangeLog
gcc/sreal.c

index eb69b39cf36624be7414b62f27594b252ee8ba37..9cf712c32ece843ba4853b3319fa45d220318a50 100644 (file)
@@ -1,3 +1,10 @@
+2015-01-09  Martin Liska  <mliska@suse.cz>
+
+       PR ipa/64503
+       * sreal.c (sreal::dump): Change unsigned format to signed for
+       m_exp value.
+       (sreal::to_double): Replace exp2 with scalbln.
+
 2015-01-09  Martin Liska  <mliska@suse.cz>
 
        * cgraphunit.c (cgraph_node::create_wrapper): Fix level of indentation.
index 82ebcb829d6dab2c9f0a8c6070438d05197f3c42..622fc2d2136e778a719190f3a10a9f4390e22a74 100644 (file)
@@ -58,7 +58,7 @@ along with GCC; see the file COPYING3.  If not see
 void
 sreal::dump (FILE *file) const
 {
-  fprintf (file, "(%" PRIu64 " * 2^%d)", m_sig, m_exp);
+  fprintf (file, "(%" PRIi64 " * 2^%d)", m_sig, m_exp);
 }
 
 DEBUG_FUNCTION void
@@ -122,7 +122,7 @@ sreal::to_double () const
 {
   double val = m_sig;
   if (m_exp)
-    val *= exp2 (m_exp);
+    val = scalbln (val, m_exp);
   return val;
 }