[PATCH] D68789: [LoopNest]: Analysis to discover properties of a loop nest.
Bardia Mahjour via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 1 11:27:29 PDT 2019
bmahjour added inline comments.
================
Comment at: llvm/lib/Analysis/LoopNestAnalysis.cpp:92-94
+ bool isAllowed = isa<BinaryOperator>(I) || isa<CmpInst>(I) ||
+ isa<PHINode>(I) || isa<BranchInst>(I) ||
+ isa<CastInst>(I);
----------------
Meinersbur wrote:
> [serious] Should this just use `llvm::isSafeToSpeculativelyExecute`? It basically contains anything that could just be moved into the innermost loop such that it is executed multiple times.
`isSafeToSpeculativelyExecute` returns false for phi nodes, branches and most integer divisions.
We need to allow phi and branches due to inner loop induction and control.
As far as I know integer divisions are safe to speculate most of the time, except on some platforms where zero-division generate a trap.
It puzzles me why `isSafeToSpeculativelyExecute` checks for integer division but completely ignores floating-point division which would have visible side-effects on more platforms!
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D68789/new/
https://reviews.llvm.org/D68789
More information about the llvm-commits
mailing list