view gcc/testsuite/c-c++-common/gomp/Wparentheses-4.c @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 04ced10e8804
children
line wrap: on
line source

/* PR c/70436 */
/* { dg-additional-options "-Wparentheses -fno-openmp" } */

int a, b, c;
void bar (void);
void baz (void);
void f1 (void);
#pragma omp declare target to (bar, baz, f1, a, b, c)

void
f1 (void)
{
  int i, j;

  if (a) /* { dg-warning "ambiguous" } */
    #pragma omp distribute
    for (i = 0; i < 10; i++)
      if (b)
	bar ();
      else
	baz ();

  if (a) /* { dg-warning "ambiguous" } */
    for (i = 0; i < 10; i++)
      #pragma omp distribute simd
      for (j = 0; j < 10; j++)
	if (b)
	  bar ();
  else
    baz ();

  if (a)
    #pragma omp distribute parallel for
    for (i = 0; i < 10; i++)
      if (b) /* { dg-warning "ambiguous" } */
	#pragma omp parallel for
	for (j = 0; j < 10; j++)
	  if (c)
	    bar ();
      else
	baz ();

  if (a) /* { dg-warning "ambiguous" } */
    #pragma omp distribute parallel for simd collapse(2)
    for (i = 0; i < 10; i++)
      for (j = 0; j < 10; j++)
	if (b)
	  bar ();
	else
	  baz ();

  if (a)
    #pragma omp distribute
    for (i = 0; i < 10; i++)
      {
	if (b)
	  bar ();
	else
	  baz ();
      }

  if (a)
    {
      #pragma omp distribute simd
      for (i = 0; i < 10; ++i)
	if (b)
	  bar ();
    }
  else baz ();

  if (a)
    #pragma omp distribute parallel for collapse(2)
    for (i = 0; i < 10; i++)
      {
	for (j = 0; j < 10; j++)
	  if (b)
	    bar ();
	  else
	    baz ();
      }

  if (a)
    for (i = 0; i < 10; i++)
      #pragma omp distribute parallel for simd
      for (j = 0; j < 10; j++)
	{
	  if (b)
	    bar ();
	}
  else
    baz ();
}

void
f2 (void)
{
  int i, j;

  if (a) /* { dg-warning "ambiguous" } */
    #pragma omp target teams distribute
    for (i = 0; i < 10; i++)
      if (b)
	bar ();
      else
	baz ();

  if (a) /* { dg-warning "ambiguous" } */
    for (i = 0; i < 10; i++)
      #pragma omp target teams distribute simd
      for (j = 0; j < 10; j++)
	if (b)
	  bar ();
  else
    baz ();

  if (a)
    #pragma omp target teams distribute parallel for
    for (i = 0; i < 10; i++)
      if (b) /* { dg-warning "ambiguous" } */
	#pragma omp parallel for
	for (j = 0; j < 10; j++)
	  if (c)
	    bar ();
      else
	baz ();

  if (a) /* { dg-warning "ambiguous" } */
    #pragma omp target teams distribute parallel for simd collapse(2)
    for (i = 0; i < 10; i++)
      for (j = 0; j < 10; j++)
	if (b)
	  bar ();
	else
	  baz ();

  if (a) /* { dg-warning "ambiguous" } */
    #pragma omp target teams
      if (b)
	bar ();
      else
	baz ();

  if (a) /* { dg-warning "ambiguous" } */
    #pragma omp target
    #pragma omp parallel
      if (b)
	bar ();
      else
	baz ();

  if (a) /* { dg-warning "ambiguous" } */
    #pragma omp target
      if (b)
	bar ();
      else
	baz ();

  if (a) /* { dg-warning "ambiguous" } */
    #pragma omp target parallel
      if (b)
	bar ();
      else
	baz ();

  if (a) /* { dg-warning "ambiguous" } */
    #pragma omp target simd
      for (i = 0; i < 10; i++)
	if (b)
	  bar ();
	else
	  baz ();

  if (a) /* { dg-warning "ambiguous" } */
    #pragma omp target simd collapse(2)
      for (i = 0; i < 10; i++)
	for (j = 0; j < 10; j++)
	  if (b)
	    bar ();
	  else
	    baz ();

  if (a)
    #pragma omp target teams distribute
    for (i = 0; i < 10; i++)
      {
	if (b)
	  bar ();
	else
	  baz ();
      }

  if (a)
    {
      #pragma omp target teams distribute simd
      for (i = 0; i < 10; ++i)
	if (b)
	  bar ();
    }
  else baz ();

  if (a)
    #pragma omp target teams distribute parallel for collapse(2)
    for (i = 0; i < 10; i++)
      {
	for (j = 0; j < 10; j++)
	  if (b)
	    bar ();
	  else
	    baz ();
      }

  if (a)
    for (i = 0; i < 10; i++)
      #pragma omp target teams distribute parallel for simd
      for (j = 0; j < 10; j++)
	{
	  if (b)
	    bar ();
	}
  else
    baz ();

  if (a)
    #pragma omp target teams
      {
	if (b)
	  bar ();
      }
  else
    baz ();

  if (a)
    #pragma omp target
    #pragma omp parallel
      {
	if (b)
	  bar ();
	else
	  baz ();
      }

  if (a)
    #pragma omp target
      {
	if (b)
	  bar ();
      }
  else
    baz ();

  if (a)
    #pragma omp target parallel
      {
	if (b)
	  bar ();
      }
  else
    baz ();

  if (a)
    #pragma omp target simd
      for (i = 0; i < 10; i++)
	{
	  if (b)
	    bar ();
	  else
	    baz ();
	}

  if (a)
    #pragma omp target simd
      for (i = 0; i < 10; i++)
	{
	  if (b)
	    bar ();
	}
  else
    baz ();

  if (a)
    #pragma omp target simd collapse(2)
      for (i = 0; i < 10; i++)
	{ {
	  for (j = 0; j < 10; j++)
	    if (b)
	      bar ();
	    else
	      baz ();
	} }

  if (a)
    #pragma omp target simd collapse(2)
      for (i = 0; i < 10; i++)
	{ {
	  for (j = 0; j < 10; j++)
	    if (b)
	      bar ();
	  }
	}
  else
    baz ();
}

void
f3 (void)
{
  int i, j;

  if (a) /* { dg-warning "ambiguous" } */
    #pragma omp target
    #pragma omp teams distribute
    for (i = 0; i < 10; i++)
      if (b)
	bar ();
      else
	baz ();

  if (a) /* { dg-warning "ambiguous" } */
    for (i = 0; i < 10; i++)
      #pragma omp target
      #pragma omp teams distribute simd
      for (j = 0; j < 10; j++)
	if (b)
	  bar ();
  else
    baz ();

  if (a)
    #pragma omp target
    #pragma omp teams distribute parallel for
    for (i = 0; i < 10; i++)
      if (b) /* { dg-warning "ambiguous" } */
	#pragma omp parallel for
	for (j = 0; j < 10; j++)
	  if (c)
	    bar ();
      else
	baz ();

  if (a) /* { dg-warning "ambiguous" } */
    #pragma omp target
    #pragma omp teams distribute parallel for simd collapse(2)
    for (i = 0; i < 10; i++)
      for (j = 0; j < 10; j++)
	if (b)
	  bar ();
	else
	  baz ();

  if (a) /* { dg-warning "ambiguous" } */
    #pragma omp target
    #pragma omp teams
      if (b)
	bar ();
      else
	baz ();

  if (a) /* { dg-warning "ambiguous" } */
    #pragma omp target
    #pragma omp teams
    #pragma omp parallel
      if (b)
	bar ();
      else
	baz ();

  if (a)
    #pragma omp target
    #pragma omp teams distribute
    for (i = 0; i < 10; i++)
      {
	if (b)
	  bar ();
	else
	  baz ();
      }

  if (a)
    {
      #pragma omp target
      #pragma omp teams distribute simd
      for (i = 0; i < 10; ++i)
	if (b)
	  bar ();
    }
  else baz ();

  if (a)
    #pragma omp target
    #pragma omp teams distribute parallel for collapse(2)
    for (i = 0; i < 10; i++)
      {
	for (j = 0; j < 10; j++)
	  if (b)
	    bar ();
	  else
	    baz ();
      }

  if (a)
    for (i = 0; i < 10; i++)
      #pragma omp target
      #pragma omp teams distribute parallel for simd
      for (j = 0; j < 10; j++)
	{
	  if (b)
	    bar ();
	}
  else
    baz ();

  if (a)
    #pragma omp target
    #pragma omp teams
      {
	if (b)
	  bar ();
      }
  else
    baz ();

  if (a)
    #pragma omp target
    #pragma omp teams
    #pragma omp parallel
      {
	if (b)
	  bar ();
	else
	  baz ();
      }
}

void
f4 (void)
{
  if (a) /* { dg-warning "ambiguous" } */
    #pragma omp target data map (tofrom: b)
      if (b)
	bar ();
      else
	baz ();

  if (a)
    #pragma omp target data map (tofrom: b)
      {
	if (b)
	  bar ();
	else
	  baz ();
      }
}