diff options
author | Nathan Froyd <froydnj@codesourcery.com> | 2010-11-15 15:24:31 +0000 |
---|---|---|
committer | Nathan Froyd <froydnj@gcc.gnu.org> | 2010-11-15 15:24:31 +0000 |
commit | bb0a9581a52f313a54bf55efb8f3f679eeac468a (patch) | |
tree | 6e418dc0ff807b9ab6f27b6df17a998720393508 | |
parent | c636a4fbf67f2d5344ba102fd55896587ab189c4 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-family/c-cppbuiltin.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/pr45038.C | 9 |
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__; +} |