[PATCH] D63885: [LOOPINFO] Introduce the loop guard API.
Michael Kruse via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 9 11:40:46 PDT 2019
Meinersbur added inline comments.
================
Comment at: llvm/lib/Analysis/LoopInfo.cpp:415
+
+ if (!isGuaranteedToTransferExecutionToSuccessor(Succ))
+ return true;
----------------
Whitney wrote:
> Meinersbur wrote:
> > If you want to disallow throwing instructions, how did you conclude that `isGuaranteedToTransferExecutionToSuccessor` is what you want and not `->mayThrow`?
> >
> > There might be dynamically endless loops as well that isGuaranteedToTransferExecutionToSuccessor does not check (that is, only if the endless loop was inside a call).
> I chose `isGuaranteedToTransferExecutionToSuccessor` instead of `->mayThrow` is because it consider more cases, for example it checks if memory operation trap. `isGuaranteedToTransferExecutionToSuccessor` is a superset of `->mayThrow`.
>
> What is dynamically endless loops?
> What is dynamically endless loops?
```
header:
%cmp = icmp ule i32 0, %a ; anything that always returns true but LLVM cannot figure out
br i1 %cmp, label %header, label %exit
exit:
```
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D63885/new/
https://reviews.llvm.org/D63885
More information about the llvm-commits
mailing list