https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96835

--- Comment #2 from Tobias Weinzierl <tobias.weinzierl at durham dot ac.uk> ---
#include <stdio.h>

#pragma omp declare target
template<int sz>
struct vector {
  int values_[sz];
  vector();
  vector(int const& init_val);
  int dot(vector o) {
    int res = 0;
    for (int i = 0; i < sz; ++ i)
      res += values_[i] * o.values_[i];
    return res;
  }
};

template<int sz>
vector<sz>::vector(int const& init_val) {
  for (int i = 0; i < sz; ++ i) values_[i] = init_val;
}
template<int sz>
vector<sz>::vector() : vector(0) {
}

#pragma omp end declare target

int main() {
  int res;
  #pragma omp target map(from:res)
  {
    vector<4> v1(1);
    vector<4> v2(2);
    res = v1.dot(v2);
  }
  printf("%d\n", res);
  return 0;
}
  • [Bug target/96835] Const... tobias.weinzierl at durham dot ac.uk via Gcc-bugs

Reply via email to