[PATCH][instcombine] Remove preservesCFG from instcombine

Chandler Carruth chandlerc at google.com
Tue Nov 4 12:46:24 PST 2014


On Tue, Nov 4, 2014 at 2:22 PM, Mark Heffernan <meheff at google.com> wrote:

> On Tue, Nov 4, 2014 at 12:15 PM, Chandler Carruth <chandlerc at google.com>
> wrote:
>>
>>  Should LoopSimplifyPass be marked as IsCFGOnlyPass?  It clearly modifies
>>> the CFG.  From the "writing an llvm pass" manual:  "if a pass walks CFG
>>> without modifying it then the third argument [isCFGOnly] is set to true",
>>> however, I don't know how definitive that is and the logic of that
>>> statement doesn't exactly imply that a CFG-modifying pass can't be marked
>>> isCFGOnly.  If LoopSimplifyPass is changed to !isCFGOnly, then preservesCFG
>>> can be added back to instcombine (at least for the purposes of the bug I
>>> ran into).
>>
>>
>> This seems like the correct fix to me. I strongly disagree with the
>> original approach (although I understand how you got there).
>>
>
> Yep.  Slowly figuring things out here :-)
>
> There is absolutely no reason why preserving the CFG should be equivalent
>> to preserving LoopSimplify.
>>
>> In fact, preserving LoopSimplify never *really* makes sense because it is
>> a transformation pass, not an analysis pass. But in the current pass
>> manager we have no effective alternative. =[
>>
>
> If only someone was working on a new pass manager... ;-)
>
> If no one has any objections, I'll make the change restoring
> setpreservecfg to instcombine and changing loopsimplify to !isCfgOnly.
>

Can you show the same diff to the pass structure for the latter change?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141104/3d295e1e/attachment.html>


More information about the llvm-commits mailing list