This patch introduces a new dependence tracking mechanism for the
faulting operation, wherein multiple dependencies can be tracked. This
allows us to hoist a list of dependencies along with the faulting memory
operation.
We now catch some of the existing testcases with multiple
dependencies as well as some newly added testcases.
The key point to note is that by the time we reach dependency tracking,
we have already completed two other important sections for safety
analysis, namely isSuitableMemoryOp and whether unsafe instructions
modify PointerReg (i.e. those that do not preserve zero value of the
register).
Details
- Reviewers
dantrushin reames skatkov
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/lib/CodeGen/ImplicitNullChecks.cpp | ||
---|---|---|
465 | Would be great to have a brief comment about what's 'safe' dependence is. | |
473 | You say about explicit uses, but do not have corresponding check. | |
504 | Move this check to the top of loop? (Before canReorder() check) | |
525 | Er, are you checking defs of CurrMI? Would CurrMI->defs() work here (if you're checking explicit defs only)? |
Would be great to have a brief comment about what's 'safe' dependence is.