AST generation: special case pure outer disjunctions
If the schedule domain for a loop that is about to be constructed
consists of a disjunction that only involves outer dimensions, then
by default (essentially) the same loop is constructed several times,
each with a different guard (i.e., one of the disjuncts in the disjunction).
Generate a single loop instead. Note that this means that the disjunction
is now preserved, whereas previously it would be broken up at this point.
This may incur an increase in AST generation time.
The disjunction is now only generated at the leaves and hopefully propagated
back up to the point where it was first discovered.
Requested-by: Tobias Grosser <tobias@grosser.es>
Tested-by: Tobias Grosser <tobias@grosser.es>
Tested-by: Chris Jenneisch <chrisj@codeaurora.org>
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>