> Only if you know the loop will run once can you hoist the check (or > sink it, but you might as well hoist!) GNAT does not do this kind of > hoisting, it is really something for the back end optimization > circuits, not front end fiddling, though this particular case could > be fiddled in the front end.
You could hoist the check and conditionalize it on the condition under which the loop will run at least once, but I don't think anybody has code to do that sort of thing.