This supports the lowering of copyin clause initially. The pointer,
allocatable, common block, polymorphic varaibles will be supported
later.
This also includes the following changes:
- Resolve the COPYIN clause and make the entity as host associated.
- Fix collectSymbolSet by adding one option to control collecting the symbol itself or ultimate symbol of it so that it can be used explicitly differentiate the host and associated variables in host-association.
- Add one helper function lookupOneLevelUpSymbol to differentiate the usage of host and associated variables explicitly. The previous lowering of firstprivate depends on the order of createHostAssociateVarClone and lookupSymbol of host symbol. With this fix, this dependence is removed.
- Reuse copyHostAssociateVar for copying operation of COPYIN clause.
Is there a more descriptive term than "original" for these symbols? It's not entirely clear what is meant exactly.