Displaying 3 results from an estimated 3 matches for "setloopid".
Did you mean:
getloopid
2014 Oct 06
2
[LLVMdev] llvm.loop metadata placement and critical edge splitting
...design discussion for llvm.loop metadata, so I want to get feedback before proposing a direction.
My question is: Why can't we define requirements of loop metadata such that *critical edge splitting does not invalidate loop metadata*.
I think fixing this may be an easy change to LoopInfo get/setLoopID. The rule would be simple, if the loop back branch is unconditional, and it has a single predecessor, the metadata is expected on the predecessaor's conditional branch:
loop.body:
...
br i1 %c, label %loop.tail, label %exit, !llvm.loop
loop.tail:
...
br label %loop.body
exit:
ret...
2014 Oct 07
1
[LLVMdev] llvm.loop metadata placement and critical edge splitting
...;> feedback before proposing a direction.
>>
>> My question is: Why can't we define requirements of loop metadata
>> such that *critical edge splitting does not invalidate loop
>> metadata*.
>>
>> I think fixing this may be an easy change to LoopInfo get/setLoopID.
>> The rule would be simple, if the loop back branch is unconditional,
>> and it has a single predecessor, the metadata is expected on the
>> predecessaor's conditional branch:
>>
>> loop.body:
>> ...
>> br i1 %c, label %loop.tail, label %exit,...
2020 Mar 20
5
CFG manipulation and !llvm.loop metadata
...oop latches (and only successfully finds it if all latches reference the same metadata)
However, transforms which modify the CFG, for example using SplitCriticalEdge(), generally don't make any attempt to preserve this property. Some transforms dealing specifically with loops use getLoopID and setLoopID to preserve and reset the metadata after transformations, but function transforms such as GVN and Jump Threading can modify control flow without any attempt to update the location.
For example:
preheader:
...
loop.body: ; preds = %preheader, %loop.body...