https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102204
Bug ID: 102204 Summary: OpenMP offload map type restriction Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: xw111luoye at gmail dot com Target Milestone: --- With branch devel/omp/gcc-11 I'm getting /home/yeluo/opt/qmcpack/build_rtx3060_gcc_offload_real/src/config.h:42:29: error: array section does not have mappable type in ‘map’ clause 42 | #define PRAGMA_OFFLOAD(x) _Pragma(x) | ^~~~~~~ /home/yeluo/opt/qmcpack/src/Particle/SoaDistanceTableAAOMPTarget.h:84:5: note: in expansion of macro ‘PRAGMA_OFFLOAD’ 84 | PRAGMA_OFFLOAD("omp target enter data map(to : this[:1])") | ^~~~~~~~~~~~~~ In file included from /home/yeluo/opt/qmcpack/src/Particle/createDistanceTableAAOMPTarget.cpp:19: /home/yeluo/opt/qmcpack/src/Particle/SoaDistanceTableAAOMPTarget.h:31:8: note: type ‘qmcplusplus::SoaDistanceTableAAOMPTarget<double, 3, 41>’ with virtual members is not mappable 31 | struct SoaDistanceTableAAOMPTarget : public DTD_BConds<T, D, SC>, public DistanceTableData | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ because SoaDistanceTableAAOMPTarget is a derived class and there is virtual function overriding. https://github.com/QMCPACK/qmcpack/blob/1a7af8e589726a91da94e5f6ad8b4e8d9e2acd4d/src/Particle/SoaDistanceTableAAOMPTarget.h#L31 In my case virtual functions are never called in offload region and I map "this[:1]" for easy access a fixed data set. So I'm expecting just bit wise copy to the device. please remove this restriction.