Page MenuHomePhabricator

ObjCARC: teach the cloner about funclets

Authored by compnerd on Mar 9 2018, 2:05 PM.



In the case that the CallInst that is being moved has an associated
operand bundle which is a funclet, the move will construct an invalid
instruction. The new site will have a different token and needs to be
reassociated with the new instruction.

Unfortunately, there is no way to alter the bundle after the
construction of the instruction. Replace the call instruction cloning
with a custom helper to clone the instruction and reassociate the
funclet token.

Diff Detail


Event Timeline

compnerd created this revision.Mar 9 2018, 2:05 PM
compnerd added subscribers: rnk, majnemer.
majnemer added inline comments.Mar 9 2018, 2:33 PM

What if the cleanuppad was introduced in a block which branched to this one?

compnerd updated this revision to Diff 137867.Mar 9 2018, 4:16 PM

Use the BB colorizer to detect the token. Fortunately, there is no BB removal/splitting happening here, so there is no state to maintain.

majnemer accepted this revision.Mar 9 2018, 5:20 PM



dyn_cast -> cast

Actually, why not just take a CallInst &?


Start the comment with an uppercase and end with a period.

This revision is now accepted and ready to land.Mar 9 2018, 5:20 PM
compnerd closed this revision.Mar 12 2018, 4:59 PM

SVN r327336. Addressed comments in SVN r327351, because I forgot to incorporate them in the first try.