PSyclone
PSyclone copied to clipboard
[PSyIR] Single source of truth for validating node descendants?
At the moment Transformations have excluded_node_types and Nodes have validate_global_constraints(). When generating code, we also need to check whether we should be putting calls relating to distributed memory (halo exchanges and set-dirty/clean) after a particular region (#450 implemented this for OpenACC and OpenMP).
The question is, could we give RegionDirective nodes a list of excluded_node_types and then specify which RegionDirective a given Transformation inserts? The check on whether to add halo exchanges after a region could then be implemented by checking whether the Region forbids halo exchanges within it.