OSDN Git Service

PR c++/7804
authorlerdsuwa <lerdsuwa@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 5 Oct 2002 12:28:16 +0000 (12:28 +0000)
committerlerdsuwa <lerdsuwa@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 5 Oct 2002 12:28:16 +0000 (12:28 +0000)
* error.c (dump_expr) [REAL_CST]: Output in decimal format.

* g++.dg/other/warning1.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57843 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/error.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/other/warning1.C [new file with mode: 0644]

index 78ffd60..e32c516 100644 (file)
@@ -1,3 +1,8 @@
+2002-10-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+       PR c++/7804
+       * error.c (dump_expr) [REAL_CST]: Output in decimal format.
+
 2002-10-03  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/7931
index 7d270b2..314cf70 100644 (file)
@@ -1508,13 +1508,7 @@ dump_expr (t, flags)
       break;
 
     case REAL_CST:
-      {
-       const unsigned char *p = (const unsigned char *) &TREE_REAL_CST (t);
-       size_t i;
-       strcpy (digit_buffer, "0x");
-       for (i = 0; i < sizeof TREE_REAL_CST (t); i++)
-         sprintf (digit_buffer + 2 + 2*i, "%02x", *p++);
-      }
+      REAL_VALUE_TO_DECIMAL (TREE_REAL_CST (t), digit_buffer, -1);
       output_add_string (scratch_buffer, digit_buffer);
       break;
 
index e3e11ed..f5cfa35 100644 (file)
@@ -1,3 +1,8 @@
+2002-10-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+       PR c++/7804
+       * g++.dg/other/warning1.C: New test.
+
 2002-10-04  Roger Sayle  <roger@eyesopen.com>
 
        * gcc.c-torture/execute/20020720-1.x:  XFAIL instead of skipping
diff --git a/gcc/testsuite/g++.dg/other/warning1.C b/gcc/testsuite/g++.dg/other/warning1.C
new file mode 100644 (file)
index 0000000..109fc46
--- /dev/null
@@ -0,0 +1,18 @@
+// { dg-do compile }
+
+// PR c++/7804
+// Floating point formatting in error and warning messages
+
+extern "C" int printf(const char *, ...);
+
+struct S
+{
+  static const float inf = 1.0f / 0.0f; // { dg-warning "1.0|initialization" }
+  static const float nan = 0.0f / 0.0f; // { dg-warning "0.0|initialization" }
+};
+
+int main()
+{
+  printf("%f\n%f\n", S::inf, S::nan);
+  return 0;
+}