diff options
author | Marek Polacek <polacek@redhat.com> | 2017-03-09 09:53:03 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2017-03-09 09:53:03 +0000 |
commit | 410a590c2a718861487e2fc354da02c1394bbcb1 (patch) | |
tree | 393d20fe3d284a100d6bf59d7c0938881e9e3534 /gcc | |
parent | f084a22e98e995d405569046bde9bb009017d4a1 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wduplicated-branches2.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wduplicated-branches3.C | 18 | ||||
-rw-r--r-- | gcc/tree.c | 4 |
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>(); +} @@ -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 |