On 11/22/13 05:10, Richard Biener wrote:
I realize it discards all that stuff, but that's still the safeest thing to do.+ if (totally_clobbered_loops) + { + /* Release the current loop structures, they are totally + clobbered at this point. */ + loop_optimizer_finalize (); + current_loops = NULL;This is definitely a no-go and should be immediately reverted. If you wreck a particular loop simply mark it for removal by setting ->header and ->latch to NULL. Loop fixup will then re-discover it (or really remove it). With the code above you discard all loops in the function including meta-information on openmp loops, #pragma ivdeps info, etc.
If we can selectively discard, that seems like a follow-up item. The loop stuff is new and something I know little about. Thus I chose the safest route.
So the issue here is we can create irreducible regions & new nested loops. Does just setting the header,latch fields for the current loop handle those cases?
jeff
