https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120753
--- Comment #10 from Benjamin Schulz <schulz.benjamin at googlemail dot com> --- So no, if you read the standard correctly, then the mapping macros also require map([ [map-type-modifier[,] [map-type-modifier[,] ...] map-type : ] locator-list) So in openmp terminology, map also wants a list. I do not see any reason why this wording of the standard: If a list item in a map clause is a variable of structure type then it is treated as if each structure element contained in the variable is a list item in the clause. Then should not also apply to is_device_ptr... I thought that would be general for all these list elements.. Otherwise one would exclude the member variables of structs and classes from many openmp constructs. if map eats u.data when u is a struct with member pointer data, then is_device_ptr should also u.data Assume you have a complex struct with hundreds of members and you want to offload that temporarily on gpu so you cant use map alloc, as this would require host allocation. putting all the members into separate variables before the loop just makes not much sense...