aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2017-03-09 09:53:03 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2017-03-09 09:53:03 +0000
commit410a590c2a718861487e2fc354da02c1394bbcb1 (patch)
tree393d20fe3d284a100d6bf59d7c0938881e9e3534 /gcc
parentf084a22e98e995d405569046bde9bb009017d4a1 (diff)
downloadgcc-410a590c2a718861487e2fc354da02c1394bbcb1.zip
gcc-410a590c2a718861487e2fc354da02c1394bbcb1.tar.gz
gcc-410a590c2a718861487e2fc354da02c1394bbcb1.tar.bz2
re PR c++/79672 (ICE with -Wduplicated-branches -fopenmp)
PR c++/79672 * tree.c (inchash::add_expr): Handle TREE_VEC. * g++.dg/warn/Wduplicated-branches2.C: Fix PR. * g++.dg/warn/Wduplicated-branches3.C: New test. From-SVN: r245996
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/warn/Wduplicated-branches2.C2
-rw-r--r--gcc/testsuite/g++.dg/warn/Wduplicated-branches3.C18
-rw-r--r--gcc/tree.c4
5 files changed, 34 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 752a532..006052b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2017-03-09 Marek Polacek <polacek@redhat.com>
+
+ PR c++/79672
+ * tree.c (inchash::add_expr): Handle TREE_VEC.
+
2017-03-09 Martin Liska <mliska@suse.cz>
PR ipa/79764
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2bfb553..840eb1d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2017-03-09 Marek Polacek <polacek@redhat.com>
+
+ PR c++/79672
+ * g++.dg/warn/Wduplicated-branches2.C: Fix PR.
+ * g++.dg/warn/Wduplicated-branches3.C: New test.
+
2017-03-09 Prachi Godbole <prachi.godbole@imgtec.com>
* gcc.target/mips/msa-bclri.c: Skip the test for -O0.
diff --git a/gcc/testsuite/g++.dg/warn/Wduplicated-branches2.C b/gcc/testsuite/g++.dg/warn/Wduplicated-branches2.C
index 4da2d54..7e14c5f 100644
--- a/gcc/testsuite/g++.dg/warn/Wduplicated-branches2.C
+++ b/gcc/testsuite/g++.dg/warn/Wduplicated-branches2.C
@@ -1,4 +1,4 @@
-// PR c/6427
+// PR c/64279
// { dg-do compile { target c++11 } }
// { dg-options "-Wduplicated-branches" }
diff --git a/gcc/testsuite/g++.dg/warn/Wduplicated-branches3.C b/gcc/testsuite/g++.dg/warn/Wduplicated-branches3.C
new file mode 100644
index 0000000..26dab85
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wduplicated-branches3.C
@@ -0,0 +1,18 @@
+// PR c++/79672
+// { dg-do compile }
+// { dg-options "-Wduplicated-branches -fopenmp" }
+// { dg-require-effective-target fopenmp }
+
+template<int N> void foo()
+{
+ if (N > 0)
+ {
+#pragma omp parallel for
+ for (int i = 0; i < 10; ++i) ;
+ }
+}
+
+void bar()
+{
+ foo<0>();
+}
diff --git a/gcc/tree.c b/gcc/tree.c
index 42c8a2d..8f87e7c 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -7865,6 +7865,10 @@ add_expr (const_tree t, inchash::hash &hstate, unsigned int flags)
inchash::add_expr (tsi_stmt (i), hstate, flags);
return;
}
+ case TREE_VEC:
+ for (int i = 0; i < TREE_VEC_LENGTH (t); ++i)
+ inchash::add_expr (TREE_VEC_ELT (t, i), hstate, flags);
+ return;
case FUNCTION_DECL:
/* When referring to a built-in FUNCTION_DECL, use the __builtin__ form.
Otherwise nodes that compare equal according to operand_equal_p might