46dbeb4085
2018-03-26 Tom de Vries <tom@codesourcery.com> PR tree-optimization/85063 * omp-general.c (offloading_function_p): New function. Factor out of ... * omp-offload.c (pass_omp_target_link::gate): ... here. * omp-general.h (offloading_function_p): Declare. * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable with attribute omp declare target for offloading functions. * testsuite/libgomp.c/switch-conversion-2.c: New test. * testsuite/libgomp.c/switch-conversion.c: New test. * testsuite/libgomp.oacc-c-c++-common/switch-conversion-2.c: New test. * testsuite/libgomp.oacc-c-c++-common/switch-conversion.c: New test. From-SVN: r258852
37 lines
491 B
C
37 lines
491 B
C
/* PR tree-optimization/85063 */
|
|
/* { dg-additional-options "-ftree-switch-conversion" } */
|
|
|
|
#include <stdlib.h>
|
|
|
|
#pragma omp declare target
|
|
static int __attribute__((noinline)) foo (int n)
|
|
{
|
|
switch (n & 3)
|
|
{
|
|
case 0: return 4;
|
|
case 1: return 3;
|
|
case 2: return 2;
|
|
default:
|
|
return 1;
|
|
}
|
|
}
|
|
#pragma omp end declare target
|
|
|
|
int
|
|
main (void)
|
|
{
|
|
int n[1];
|
|
|
|
n[0] = 4;
|
|
|
|
#pragma omp target
|
|
{
|
|
n[0] = foo (n[0]);
|
|
}
|
|
|
|
if (n[0] != 4)
|
|
abort ();
|
|
|
|
return 0;
|
|
}
|