Hi! On 2018-12-03T10:50:44-0500, Pierre-Marie de Rodat wrote: > Matching front-end bits to support Acc_Kernels, Acc_Parallel, > Acc_Loop and Acc_Data. Interesting. :-) I have not reviewed this properly, but just stumbled over the following: > --- gcc/ada/gcc-interface/trans.c > +++ gcc/ada/gcc-interface/trans.c > @@ -1309,6 +1533,274 @@ Pragma_to_gnu (Node_Id gnat_node) > + case Name_Copy: > + map_kind = GOMP_MAP_FORCE_TOFROM; > + gnu_clauses = Iterate_Acc_Clause_Arg (gnat_expr, gnu_clauses, > + Acc_Data_to_gnu, > + &map_kind); > + break; > + > + case Name_Copy_In: > + map_kind = GOMP_MAP_FORCE_TO; > + gnu_clauses = Iterate_Acc_Clause_Arg (gnat_expr, gnu_clauses, > + Acc_Data_to_gnu, > + &map_kind); > + break; > + > + case Name_Copy_Out: > + map_kind = GOMP_MAP_FORCE_FROM; > + gnu_clauses = Iterate_Acc_Clause_Arg (gnat_expr, gnu_clauses, > + Acc_Data_to_gnu, > + &map_kind); > + break; > + case Name_Create: > + map_kind = GOMP_MAP_FORCE_ALLOC; > + gnu_clauses = Iterate_Acc_Clause_Arg (gnat_expr, gnu_clauses, > + Acc_Data_to_gnu, > + &map_kind); > + break; What's the rationale for using here the 'FORCE' mapping kind variants instead of 'GOMP_MAP_TOFROM', 'GOMP_MAP_TO', 'GOMP_MAP_FROM', 'GOMP_MAP_ALLOC', as demanded starting with the OpenACC 2.5 revision (default 'present_or_*' behavior)? For avoidance of doubt: > + case Name_Present: > + map_kind = GOMP_MAP_FORCE_PRESENT; > + case Name_Device_Ptr: > + map_kind = GOMP_MAP_FORCE_DEVICEPTR; ... these remain correct to use 'FORCE' mapping kinds. Grüße Thomas