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
>
>

Reply via email to