aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2012-04-15 13:07:30 -0400
committerJason Merrill <jason@gcc.gnu.org>2012-04-15 13:07:30 -0400
commit04b391c164bca9a8a332d5a5b8e3ee8cf86224b9 (patch)
tree4a2774c3a084439cf23480106d39252af28343d5 /gcc
parent79617d7e2e4e868da8bca85ea3d6d61ad1e89e4c (diff)
downloadgcc-04b391c164bca9a8a332d5a5b8e3ee8cf86224b9.zip
gcc-04b391c164bca9a8a332d5a5b8e3ee8cf86224b9.tar.gz
gcc-04b391c164bca9a8a332d5a5b8e3ee8cf86224b9.tar.bz2
re PR c++/52818 (printf format %lf is erroneously rejected by C++11)
PR c++/52818 * c-format.c (CPLUSPLUS_STD_VER): C++11 inherits from C99. (C_STD_NAME): Distinguish between C++98 and C++11. From-SVN: r186468
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c-family/ChangeLog6
-rw-r--r--gcc/c-family/c-format.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/warn/format8.C7
4 files changed, 21 insertions, 2 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 121d94a..98e496a 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,9 @@
+2012-04-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/52818
+ * c-format.c (CPLUSPLUS_STD_VER): C++11 inherits from C99.
+ (C_STD_NAME): Distinguish between C++98 and C++11.
+
2012-04-11 Eric Botcazou <ebotcazou@adacore.com>
PR target/52624
diff --git a/gcc/c-family/c-format.c b/gcc/c-family/c-format.c
index 9fabc39..b967492 100644
--- a/gcc/c-family/c-format.c
+++ b/gcc/c-family/c-format.c
@@ -334,7 +334,7 @@ decode_format_attr (tree args, function_format_info *info, int validated_p)
/* The C standard version C++ is treated as equivalent to
or inheriting from, for the purpose of format features supported. */
-#define CPLUSPLUS_STD_VER STD_C94
+#define CPLUSPLUS_STD_VER (cxx_dialect < cxx11 ? STD_C94 : STD_C99)
/* The C standard version we are checking formats against when pedantic. */
#define C_STD_VER ((int) (c_dialect_cxx () \
? CPLUSPLUS_STD_VER \
@@ -345,7 +345,8 @@ decode_format_attr (tree args, function_format_info *info, int validated_p)
pedantic. FEATURE_VER is the version in which the feature warned out
appeared, which is higher than C_STD_VER. */
#define C_STD_NAME(FEATURE_VER) (c_dialect_cxx () \
- ? "ISO C++" \
+ ? (cxx_dialect < cxx11 ? "ISO C++98" \
+ : "ISO C++11") \
: ((FEATURE_VER) == STD_EXT \
? "ISO C" \
: "ISO C90"))
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1d3e820..83af065 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-04-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/52818
+ * g++.dg/warn/format8.C: New.
+
2012-04-15 Janus Weil <janus@gcc.gnu.org>
PR fortran/51082
diff --git a/gcc/testsuite/g++.dg/warn/format8.C b/gcc/testsuite/g++.dg/warn/format8.C
new file mode 100644
index 0000000..ffceb79
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/format8.C
@@ -0,0 +1,7 @@
+// PR c++/52818
+// { dg-options "-pedantic-errors -Wformat" }
+
+extern "C" int printf (const char *, ...);
+void f() {
+ printf("%lf", 0.0); // { dg-warning "%lf" "" { target c++98 } }
+}