This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] -Wduplicated-branches -fopenmp ICE in inchash::add_expr (PR c++/79672)


Ping.

On Wed, Mar 01, 2017 at 08:09:05PM +0100, Marek Polacek wrote:
> The following testcase ICEd with -Wduplicated-branches and -fopenmp
> because we tried to has omp_parallel expression that contained some
> TREE_VECs, but those aren't handled in inchash::add_expr.  Handling
> that is easy and fixes the ICE.
> 
> Bootstrapped/regtested on x86_64-linux, ok for trunk?
> 
> 2017-03-01  Marek Polacek  <polacek@redhat.com>
> 
> 	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.
> 
> diff --git gcc/testsuite/g++.dg/warn/Wduplicated-branches2.C gcc/testsuite/g++.dg/warn/Wduplicated-branches2.C
> index 4da2d54..7e14c5f 100644
> --- gcc/testsuite/g++.dg/warn/Wduplicated-branches2.C
> +++ 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 gcc/testsuite/g++.dg/warn/Wduplicated-branches3.C gcc/testsuite/g++.dg/warn/Wduplicated-branches3.C
> index e69de29..26dab85 100644
> --- gcc/testsuite/g++.dg/warn/Wduplicated-branches3.C
> +++ 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 gcc/tree.c gcc/tree.c
> index 42c8a2d..8f87e7c 100644
> --- gcc/tree.c
> +++ 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
> 
> 	Marek

	Marek


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]