http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48955
--- Comment #7 from tkoenig at netcologne dot de <tkoenig at netcologne dot de> 2011-05-16 18:10:03 UTC --- Hi Paul, > Indeed - I just need to find the time to sort out the logic. > Structurally the patch is OK. I think the logic could be as follows: You could have two flags, one FORWARD_ALLOWED and one BACKWARD_ALLOWED. Initialize both flags to true. Run through all the references which could introduce a dependency. If there is a GFC_EQUAL dependency, do nothing. If there is a GFC_FORWARD dependency, set BACKWARD_ALLOW to false. If there is a GFC_BACKWARD dependency, set FORWARD_ALLOW to false. When selecting the loop direction: - If FORWARD_ALLOW is set, select a forward loop; else If BACKWARD_ALLOW is set, select a forward loop; else mark this dimension as needing a temporary. Does this sound OK? Thomas