Viewing file: pr96390.C (1.21 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-additional-options "-O0 -fdump-tree-omplower" } */ /* { dg-additional-options "-foffload=-Wa,--verify" { target offload_target_nvptx } } */ /* { dg-xfail-if "PR 97106/PR 97102 - .alias not (yet) supported for nvptx" { offload_target_nvptx } } */
#include <cstdlib> #include <type_traits>
template<int Dim> struct V { int version_called;
template<bool B = (Dim == 0), typename = typename std::enable_if<B>::type> V () { version_called = 1; }
template<typename TArg0, typename = typename std::enable_if<(std::is_same<unsigned long, typename std::decay<TArg0>::type>::value)>::type> V (TArg0) { version_called = 2; } };
template<int Dim> struct S { V<Dim> v; };
int main () { int version_set[2] = {-1, -1};
#pragma omp target map(from: version_set[0:2]) { S<0> s; version_set[0] = s.v.version_called; V<1> v2((unsigned long) 1); version_set[1] = v2.version_called; }
if (version_set[0] != 1 || version_set[1] != 2) abort (); return 0; }
/* "3" for S<0>::S, V<0>::V<>, and V<1>::V<long unsigned int>: */ /* { dg-final { scan-tree-dump-times "__attribute__..omp declare target" 3 "omplower" } } */
|