aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2015-05-04 20:58:33 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2015-05-04 20:58:33 +0000
commitf5322614a6fb5a0ce3cf85914e85946296271e91 (patch)
tree2e6c675a3efb74c7972b72a21781fdc4533e8487
parent467d8d51f1304b955136060db0a34e1f80f098bb (diff)
downloadgcc-f5322614a6fb5a0ce3cf85914e85946296271e91.zip
gcc-f5322614a6fb5a0ce3cf85914e85946296271e91.tar.gz
gcc-f5322614a6fb5a0ce3cf85914e85946296271e91.tar.bz2
re PR c++/66007 (Narrowing conversion inside { } results in all zero elements in C++11 mode with -Wno-error=narrowing)
/cp 2015-05-04 Paolo Carlini <paolo.carlini@oracle.com> Jakub Jelinek <jakub@redhat.com> PR c++/66007 * typeck2.c (check_narrowing): Check by-hand that the pedwarn didn't result in an actual error. /testsuite 2015-05-04 Paolo Carlini <paolo.carlini@oracle.com> Jakub Jelinek <jakub@redhat.com> PR c++/66007 * g++.dg/cpp0x/Wnarrowing4.C: New. Co-Authored-By: Jakub Jelinek <jakub@redhat.com> From-SVN: r222778
-rw-r--r--gcc/cp/ChangeLog7
-rw-r--r--gcc/cp/typeck2.c8
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/Wnarrowing4.C14
4 files changed, 32 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 65cb5be..bd9f2f3 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,10 @@
+2015-05-04 Paolo Carlini <paolo.carlini@oracle.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/66007
+ * typeck2.c (check_narrowing): Check by-hand that the pedwarn didn't
+ result in an actual error.
+
2015-05-01 Paolo Carlini <paolo.carlini@oracle.com>
Prathamesh Kulharni <prathamesh.kulkarni@linaro.org>
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index 9a491aa..c0df823 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -958,10 +958,12 @@ check_narrowing (tree type, tree init, tsubst_flags_t complain)
}
else if (complain & tf_error)
{
+ int savederrorcount = errorcount;
global_dc->pedantic_errors = 1;
- if (!pedwarn (EXPR_LOC_OR_LOC (init, input_location), OPT_Wnarrowing,
- "narrowing conversion of %qE from %qT to %qT "
- "inside { }", init, ftype, type))
+ pedwarn (EXPR_LOC_OR_LOC (init, input_location), OPT_Wnarrowing,
+ "narrowing conversion of %qE from %qT to %qT "
+ "inside { }", init, ftype, type);
+ if (errorcount == savederrorcount)
ok = true;
global_dc->pedantic_errors = flag_pedantic_errors;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3673938..a73ad28 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2015-05-04 Paolo Carlini <paolo.carlini@oracle.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/66007
+ * g++.dg/cpp0x/Wnarrowing4.C: New.
+
2015-05-04 Sandra Loosemore <sandra@codesourcery.com>
* lib/target-supports.exp
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wnarrowing4.C b/gcc/testsuite/g++.dg/cpp0x/Wnarrowing4.C
new file mode 100644
index 0000000..7defce3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/Wnarrowing4.C
@@ -0,0 +1,14 @@
+// PR c++/66007
+// { dg-do run { target c++11 } }
+// { dg-options "-Wno-error=narrowing" }
+
+extern "C" void abort();
+
+int main()
+{
+ unsigned foo[] = { 1, -1, 3 };
+ if (foo[0] != 1 || foo[1] != __INT_MAX__ * 2U + 1 || foo[2] != 3)
+ abort();
+}
+
+// { dg-prune-output "narrowing conversion" }