aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2016-05-24 16:41:39 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2016-05-24 16:41:39 +0000
commit72f382fbb85a77a75e839077a7df59197799e2f4 (patch)
tree4f9fbe543d45236309df3af03e28b466ef83a978 /gcc
parentef2ec9d9a2c2d7380d2cf992db20cf8599fc0e3d (diff)
downloadgcc-72f382fbb85a77a75e839077a7df59197799e2f4.zip
gcc-72f382fbb85a77a75e839077a7df59197799e2f4.tar.gz
gcc-72f382fbb85a77a75e839077a7df59197799e2f4.tar.bz2
re PR c++/69872 (-Wnarrowing note without warning/errror)
/cp 2016-05-24 Paolo Carlini <paolo.carlini@oracle.com> PR c++/69872 * typeck2.c (check_narrowing): Check pedwarn return value. /testsuite 2016-05-24 Paolo Carlini <paolo.carlini@oracle.com> PR c++/69872 * g++.dg/warn/Wno-narrowing1.C: New. From-SVN: r236651
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/typeck2.c10
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/warn/Wno-narrowing1.C7
4 files changed, 23 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index c77dee6..4e06a71 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2016-05-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/69872
+ * typeck2.c (check_narrowing): Check pedwarn return value.
+
2016-05-24 Jakub Jelinek <jakub@redhat.com>
PR c++/71257
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index 833be20..835a44f 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -950,10 +950,12 @@ check_narrowing (tree type, tree init, tsubst_flags_t complain)
{
if (complain & tf_warning_or_error)
{
- if (!almost_ok || pedantic)
- pedwarn (loc, OPT_Wnarrowing, "narrowing conversion of %qE "
- "from %qT to %qT inside { }", init, ftype, type);
- if (pedantic && almost_ok)
+ if ((!almost_ok || pedantic)
+ && pedwarn (loc, OPT_Wnarrowing,
+ "narrowing conversion of %qE "
+ "from %qT to %qT inside { }",
+ init, ftype, type)
+ && almost_ok)
inform (loc, " the expression has a constant value but is not "
"a C++ constant-expression");
ok = true;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e2b2466..d27369c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-05-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/69872
+ * g++.dg/warn/Wno-narrowing1.C: New.
+
2016-05-24 Marek Polacek <polacek@redhat.com>
PR c/71249
diff --git a/gcc/testsuite/g++.dg/warn/Wno-narrowing1.C b/gcc/testsuite/g++.dg/warn/Wno-narrowing1.C
new file mode 100644
index 0000000..285f05a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wno-narrowing1.C
@@ -0,0 +1,7 @@
+// PR c++/69872
+// { dg-options "-Wall -Wextra -pedantic -Wno-narrowing" }
+
+struct s { int x, y; };
+short offsets[1] = {
+ ((char*) &(((struct s*)16)->y) - (char *)16), // { dg-bogus "note" }
+};