aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2015-04-20 21:46:59 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2015-04-20 21:46:59 +0000
commit2821fc6b76973dd6cb956229027e8e065a020424 (patch)
treec480f351c7ba24f67f191101ecd98811337923b2
parent0cfabb3780b23de06e8fd52bfe15b2aea7b56f42 (diff)
downloadgcc-2821fc6b76973dd6cb956229027e8e065a020424.zip
gcc-2821fc6b76973dd6cb956229027e8e065a020424.tar.gz
gcc-2821fc6b76973dd6cb956229027e8e065a020424.tar.bz2
re PR c++/65801 (Allow -Wno-narrowing to silence stricter C++11 narrowing rules)
/cp 2015-04-20 Paolo Carlini <paolo.carlini@oracle.com> PR c++/65801 * typeck2.c (check_narrowing): In C++11 mode too, -Wno-narrowing suppresses the diagnostic. 2015-04-20 Paolo Carlini <paolo.carlini@oracle.com> PR c++/65801 * doc/invoke.texi ([-Wnarrowing]): Update. /testsuite 2015-04-20 Paolo Carlini <paolo.carlini@oracle.com> PR c++/65801 * g++.dg/cpp0x/Wnarrowing2.C: New. From-SVN: r222249
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/typeck2.c10
-rw-r--r--gcc/doc/invoke.texi8
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/Wnarrowing2.C5
6 files changed, 32 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2262e09..659ac013 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2015-04-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/65801
+ * doc/invoke.texi ([-Wnarrowing]): Update.
+
2015-04-20 Jeff Law <law@redhat.com>
PR tree-optimization/65658
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index f7da7c6..91c3890 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2015-04-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/65801
+ * typeck2.c (check_narrowing): In C++11 mode too, -Wno-narrowing
+ suppresses the diagnostic.
+
2015-04-20 Ville Voutilainen <ville.voutilainen@gmail.com>
Reject trailing return type for an operator auto().
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index 80a6939..884957b 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -957,9 +957,13 @@ check_narrowing (tree type, tree init, tsubst_flags_t complain)
}
}
else if (complain & tf_error)
- error_at (EXPR_LOC_OR_LOC (init, input_location),
- "narrowing conversion of %qE from %qT to %qT inside { }",
- init, ftype, type);
+ {
+ global_dc->pedantic_errors = 1;
+ pedwarn (EXPR_LOC_OR_LOC (init, input_location), OPT_Wnarrowing,
+ "narrowing conversion of %qE from %qT to %qT inside { }",
+ init, ftype, type);
+ global_dc->pedantic_errors = flag_pedantic_errors;
+ }
}
return cxx_dialect == cxx98 || ok;
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index f5f79b8..c20dd4d 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -2706,10 +2706,10 @@ int i = @{ 2.2 @}; // error: narrowing from double to int
This flag is included in @option{-Wall} and @option{-Wc++11-compat}.
-With @option{-std=c++11}, @option{-Wno-narrowing} suppresses for
-non-constants the diagnostic required by the standard. Note that this
-does not affect the meaning of well-formed code; narrowing conversions
-are still considered ill-formed in SFINAE context.
+With @option{-std=c++11}, @option{-Wno-narrowing} suppresses the diagnostic
+required by the standard. Note that this does not affect the meaning
+of well-formed code; narrowing conversions are still considered
+ill-formed in SFINAE context.
@item -Wnoexcept @r{(C++ and Objective-C++ only)}
@opindex Wnoexcept
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e768f57..8ffe2ea 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-04-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/65801
+ * g++.dg/cpp0x/Wnarrowing2.C: New.
+
2015-04-20 Jeff Law <law@redhat.com>
PR tree-optimization/65658
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wnarrowing2.C b/gcc/testsuite/g++.dg/cpp0x/Wnarrowing2.C
new file mode 100644
index 0000000..fc806f9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/Wnarrowing2.C
@@ -0,0 +1,5 @@
+// PR c++/65801
+// { dg-do compile { target c++11 } }
+// { dg-options "-Wno-narrowing" }
+
+static struct zai { unsigned int x; } x = {-1};