If we have multiple region options for an identifier pick the non-linear one if possible, except for consume() in which case leave all the ids there.
Go through and add in function param constraints and also method effect regions constraints.
Then store result into the region list.
Compare concurrent regions accessed amongst threads. (Do it pairwise amongst threads).
for each of other threads -> find identifier in thread and compare concurrent accesses, for each of regions.
If we have multiple region options for an identifier pick the non-linear one if possible, except for consume() in which case leave all the ids there. Go through and add in function param constraints and also method effect regions constraints.
Then store result into the region list.
Compare concurrent regions accessed amongst threads. (Do it pairwise amongst threads). for each of other threads -> find identifier in thread and compare concurrent accesses, for each of regions.