aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Froyd <froydnj@codesourcery.com>2010-11-15 15:24:31 +0000
committerNathan Froyd <froydnj@gcc.gnu.org>2010-11-15 15:24:31 +0000
commitbb0a9581a52f313a54bf55efb8f3f679eeac468a (patch)
tree6e418dc0ff807b9ab6f27b6df17a998720393508
parentc636a4fbf67f2d5344ba102fd55896587ab189c4 (diff)
downloadgcc-bb0a9581a52f313a54bf55efb8f3f679eeac468a.zip
gcc-bb0a9581a52f313a54bf55efb8f3f679eeac468a.tar.gz
gcc-bb0a9581a52f313a54bf55efb8f3f679eeac468a.tar.bz2
re PR preprocessor/45038 (__DBL_MIN__ result in old-style-cast)
gcc/c-family/ PR preprocessor/45038 * c-cppbuiltin.c (c_cpp_builtins): Use different format for C++ dialects. gcc/testsuite/ PR preprocessor/45038 * g++.dg/pr45038.C: New test. From-SVN: r166756
-rw-r--r--gcc/c-family/ChangeLog6
-rw-r--r--gcc/c-family/c-cppbuiltin.c10
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/pr45038.C9
4 files changed, 27 insertions, 3 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index bb0472e..4e31d6a 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,9 @@
+2010-11-15 Nathan Froyd <froydnj@codesourcery.com>
+
+ PR preprocessor/45038
+ * c-cppbuiltin.c (c_cpp_builtins): Use different format for C++
+ dialects.
+
2010-11-12 Joseph Myers <joseph@codesourcery.com>
* c-common.h (c_family_lang_mask): Declare.
diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c
index 7b5a14d..ca77964 100644
--- a/gcc/c-family/c-cppbuiltin.c
+++ b/gcc/c-family/c-cppbuiltin.c
@@ -657,9 +657,13 @@ c_cpp_builtins (cpp_reader *pfile)
/* Cast the double precision constants. This is needed when single
precision constants are specified or when pragma FLOAT_CONST_DECIMAL64
is used. The correct result is computed by the compiler when using
- macros that include a cast. */
- builtin_define_float_constants ("DBL", "L", "((double)%s)", "",
- double_type_node);
+ macros that include a cast. We use a different cast for C++ to avoid
+ problems with -Wold-style-cast. */
+ builtin_define_float_constants ("DBL", "L",
+ (c_dialect_cxx ()
+ ? "double(%s)"
+ : "((double)%s)"),
+ "", double_type_node);
builtin_define_float_constants ("LDBL", "L", "%s", "L",
long_double_type_node);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index bad83cd..79ec4a9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-11-15 Nathan Froyd <froydnj@codesourcery.com>
+
+ PR preprocessor/45038
+ * g++.dg/pr45038.C: New test.
+
2010-11-15 Richard Guenther <rguenther@suse.de>
PR tree-optimization/46467
diff --git a/gcc/testsuite/g++.dg/pr45038.C b/gcc/testsuite/g++.dg/pr45038.C
new file mode 100644
index 0000000..57c0c44
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr45038.C
@@ -0,0 +1,9 @@
+// PR preprocessor/45038
+// { dg-do compile }
+// { dg-options "-Werror -Wold-style-cast" }
+
+double f(void)
+{
+ // We used to produce old-style casts for this.
+ return __DBL_MIN__;
+}