| // { dg-do compile } |
| |
| #define STR1(X) #X |
| #define STR2(X) STR1(X) |
| #define LABEL(X) STR2(__USER_LABEL_PREFIX__) X |
| |
| struct Iter |
| { |
| int *cursor; |
| |
| void ctor (int *cursor_) asm (LABEL ("_ZN4IterC1EPi")); |
| int *point () const asm (LABEL ("_ZNK4Iter5pointEv")); |
| }; |
| |
| #pragma acc routine |
| void Iter::ctor (int *cursor_) |
| { |
| cursor = cursor_; |
| } |
| |
| #pragma acc routine |
| int *Iter::point () const |
| { |
| return cursor; |
| } |
| |
| void apply (int (*fn)(), Iter out) asm (LABEL ("_ZN5Apply5applyEPFivE4Iter")); |
| |
| #pragma acc routine |
| void apply (int (*fn)(), struct Iter out) |
| { *out.point() = fn (); } |
| |
| extern "C" void __gxx_personality_v0 () |
| { |
| } |