This patch handles defining ops between the source and dest loop nests, and prevents loop nests with iter_args from being fused.
If there is any SSA value in the dest loop nest whose defining op has dependence from the source loop nest, we cannot fuse the loop nests.
If there is a affine.for with iter_args, prevent it from being fused.
Should this be named gatherNonMemRefDefiningNodes? I'm a bit confused. Or is it clear from other context?