From: Jakub Jelinek Date: Fri, 22 Jun 2018 21:28:36 +0000 (+0200) Subject: backport: re PR c++/86025 (ICE with -Wduplicated-branches and OpenMP critical) X-Git-Tag: releases/gcc-7.4.0~323 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bcb3e32d2ca6b636bf249d174b72adb1c222b921;p=thirdparty%2Fgcc.git backport: re PR c++/86025 (ICE with -Wduplicated-branches and OpenMP critical) Backported from mainline 2018-06-04 Jakub Jelinek PR c++/86025 * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE. * c-c++-common/gomp/pr86025.c: New test. From-SVN: r261966 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 99f05e45328b..28fe85fdfc2b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,11 @@ 2018-06-22 Jakub Jelinek Backported from mainline + 2018-06-04 Jakub Jelinek + + PR c++/86025 + * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE. + 2018-05-06 Jakub Jelinek PR c++/85659 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 55f2c12e8ad5..e0d1544a7a4a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -6,6 +6,11 @@ PR c++/85662 * g++.dg/ext/offsetof3.C: New test. + 2018-06-04 Jakub Jelinek + + PR c++/86025 + * c-c++-common/gomp/pr86025.c: New test. + 2018-05-29 Jakub Jelinek PR c++/85952 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 000000000000..c1c507994138 --- /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++; + } +} diff --git a/gcc/tree.c b/gcc/tree.c index 0e98f53af960..c28f87606aba 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -7888,6 +7888,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