| // RUN: %clang_cc1 %s -verify -fopenacc |
| |
| template<unsigned I, typename T> |
| void templ() { |
| #pragma acc loop collapse(I) |
| for(int i = 0; i < 5;++i) |
| for(int j = 0; j < 5; ++j) |
| for(int k = 0; k < 5; ++k) |
| for(int l = 0; l < 5; ++l) |
| for(int m = 0; m < 5; ++m) |
| for(int n = 0; n < 5; ++n) |
| for(int o = 0; o < 5; ++o); |
| |
| #pragma acc loop collapse(T::value) |
| for(int i = 0;i < 5;++i) |
| for(int j = 0; j < 5; ++j) |
| for(int k = 0; k < 5; ++k) |
| for(int l = 0; l < 5; ++l) |
| for(int m = 0; m < 5;++m) |
| for(;;) |
| for(;;); |
| |
| #pragma acc parallel vector_length(T::value) |
| for(;;){} |
| |
| #pragma acc parallel vector_length(I) |
| for(;;){} |
| |
| #pragma acc parallel async(T::value) |
| for(;;){} |
| |
| #pragma acc parallel async(I) |
| for(;;){} |
| |
| #pragma acc parallel async |
| for(;;){} |
| |
| |
| T t; |
| #pragma acc exit data delete(t) |
| ; |
| } |
| |
| struct S { |
| static constexpr unsigned value = 5; |
| }; |
| |
| void use() { |
| templ<7, S>(); |
| } |
| |
| // expected-error@+2{{expected ')'}} |
| // expected-note@+1{{to match this '('}} |
| #pragma acc routine(use) seq bind(NS::NSFunc) |
| |
| // expected-error@+1{{string literal with user-defined suffix cannot be used here}} |
| #pragma acc routine(use) seq bind("unknown udl"_UDL) |
| |
| // expected-warning@+1{{encoding prefix 'u' on an unevaluated string literal has no effect}} |
| #pragma acc routine(use) seq bind(u"16 bits") |
| void another_func(); |
| // expected-warning@+1{{encoding prefix 'U' on an unevaluated string literal has no effect}} |
| #pragma acc routine(another_func) seq bind(U"32 bits") |
| |
| void AtomicIf() { |
| int i, j; |
| // expected-error@+1{{expected '('}} |
| #pragma acc atomic read if |
| i = j; |
| #pragma acc atomic read if (true) |
| i = j; |
| #pragma acc atomic write if (false) |
| i = j + 1; |
| |
| #pragma acc atomic update if (i) |
| ++i; |
| #pragma acc atomic if (j) |
| ++i; |
| |
| #pragma acc atomic capture if (true) |
| i = j++; |
| #pragma acc atomic capture if (i) |
| { |
| ++j; |
| i = j; |
| } |
| } |