On Thu, Apr 25, 2013 at 8:28 PM, Steve Ellcey <sell...@imgtec.com> wrote: > On Thu, 2013-04-25 at 09:53 +0200, Richard Biener wrote: > >> We have gimple_duplicate_sese_region for this. It may be not perfect though. >> Eventually it should be changed to handle SEME regions as well and all >> loop copying / versioning code should use it as well (though I don't think >> any of the loop copying / versioning code handles multiple exits). >> >> I've slowly started to move us in this direction by removing duplicate >> functionality >> in the compiler as I come along it ... >> >> Richard. > > One thing I have noticed with this routine is that I am trying to call > gimple_duplicate_sese_region before the various loop optimizations and > before the loop information is all set up (not sure if that is good or > bad, right now it just is). So I died when calling set_loop_copy. I > put that call and the other loop uses in an 'if (loop)' block to make > that assertion stop and I was then able to copy one (SEME) block with > this routine. When I tried to copy a second block with a second call, > it died in iterate_fix_dominators. I tried removing all the dominator > information after creating my first new block hoping it would correctly > regenerate everything before doing the second block but that didn't seem > to work.
I think you need to init/finalize SSA updating, but I've never seen the dominator fixup issue. Maybe simply call loop_optimizer_init () in your pass (well, no longer needed since I just committed the patch that should make loops available everywhere). Richard. > Steve Ellcey > sell...@imgtec.com > >