Memory globalization was fully implemented in the front end. There are three runtime
functions in Libomptarget:
- __kmpc_data_sharing_push_stack
- __kmpc_data_sharing_coalesced_push_stack
- __kmpc_data_sharing_pop_stack
The front end performed a scape analysis and created a record declare with all the stack
variables. Then, based on the context (isTTD and other parameters) it would create a push
for the size of the record, or for that size multiplied by the WARP (to globalize for the
whole WARP.
This PR removes the record creation, and it simplifies the front end to be a simple runtime
call that will be later on optimized in the middle end. The middle end will be able to
determine the stack variables that do scape, and those that do not, as well as the
approrpiate merging of different globalized variables
clang-tidy: error: unknown type name 'EXTERN' [clang-diagnostic-error]
not useful