EffectSet bodyEffects = tree.body.effects.getEffectSet();
// If the body writes anything read by the cond or repeat, abort. (That shit's complicated.).
SymbolSet bodyWrites = bodyEffects.writeInternal;
// TODO: can *sometimes* deal with this. Sort of tricky, and implies very retarded code.
if (!bodyWrites.intersect(condReads).isEmpty() || !bodyWrites.intersect(repeatReads).isEmpty()) {
log.debug("Aborting unrolling - body writes to condition/repeat deps!");
return;
}
// Attempt to evaluate the loop management code ahead of time.