Thnaks to your explanation I found a way to do it: 1) Duplicate the blocks 2) Fix cfg, phis, and dominators 3) manually call update_ssa 4) Edit rhs uses
By doing 4) after 3) subsequent calls to update_ssa, do not alter the operands anymore. On 17 Mar 2015, at 20:10, Jeff Law <l...@redhat.com> wrote: > On 03/17/2015 12:54 PM, Benedikt Huber wrote: >> Thank you for the answer. >> I made sure that each variable is only assigned exactly once. >> duplicate_block already generates new names for all lhs. >> After that I edited all rhs to the uses I wanted for the unrolling, >> so SSA-form should still be intact. >> What I do not understand is: Why does gcc change the names on the rhs? > Because uses that are reached by the new names obviously have to get updated. > The SSA updater is supposed to relieve passes from the burden of trying to > figure out how to handle updates on their own. You copy the blocks, update > your cfg, remove unreachables, then let the ssa updater handle updating the > ssa graph. > > If you're using the block copier, but doing your own updates, then you'll > need some kind of hack to avoid the standard update mechanisms. I'm not > immediately aware of a "blessed" way to do that. You'll need to hack > somethign up. > > jeff > >
signature.asc
Description: Message signed with OpenPGP using GPGMail