diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-06-04 09:27:52 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-06-04 09:27:52 +0200 |
commit | 20b11fd41a51d669eec3601571e21e0081f5c5e0 (patch) | |
tree | 88fa3aee13c4b4623128a5cdf6ce114ad96b7366 /gcc | |
parent | ea4767995f4e2cc46a697e09e954c6649d8cf515 (diff) | |
download | gcc-20b11fd41a51d669eec3601571e21e0081f5c5e0.zip gcc-20b11fd41a51d669eec3601571e21e0081f5c5e0.tar.gz gcc-20b11fd41a51d669eec3601571e21e0081f5c5e0.tar.bz2 |
re PR c++/86025 (ICE with -Wduplicated-branches and OpenMP critical)
PR c++/86025
* tree.c (inchash::add_expr): Handle IDENTIFIER_NODE.
* c-c++-common/gomp/pr86025.c: New test.
From-SVN: r261137
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/gomp/pr86025.c | 20 | ||||
-rw-r--r-- | gcc/tree.c | 3 |
4 files changed, 33 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4faeadc..3882e60 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2018-06-04 Jakub Jelinek <jakub@redhat.com> + + PR c++/86025 + * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE. + 2018-06-03 Eric Botcazou <ebotcazou@adacore.com> PR tree-optimization/86034 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c3a9bca..7352e41 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-06-04 Jakub Jelinek <jakub@redhat.com> + + PR c++/86025 + * c-c++-common/gomp/pr86025.c: New test. + 2018-06-03 Andreas Schwab <schwab@linux-m68k.org> * gcc.target/powerpc/altivec-7.c: Remove extra brace. diff --git a/gcc/testsuite/c-c++-common/gomp/pr86025.c b/gcc/testsuite/c-c++-common/gomp/pr86025.c new file mode 100644 index 0000000..c1c5079 --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/pr86025.c @@ -0,0 +1,20 @@ +/* PR c++/86025 */ +/* { dg-do compile } */ +/* { dg-additional-options "-Wduplicated-branches" } */ + +int i; + +void +foo (int x) +{ + if (x) + { + #pragma omp critical (foo) + i++; + } + else + { + #pragma omp critical + i++; + } +} @@ -7360,6 +7360,9 @@ add_expr (const_tree t, inchash::hash &hstate, unsigned int flags) for (i = 0; i < TREE_VEC_LENGTH (t); ++i) inchash::add_expr (TREE_VEC_ELT (t, i), hstate, flags); return; + case IDENTIFIER_NODE: + hstate.add_object (IDENTIFIER_HASH_VALUE (t)); + 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 |