If control is transferred to a successor is the key question when it
comes to liveness. The new implementation puts that question in the
focus and thereby providing a clean way to assume certain CFG edges are
dead or instructions will not transfer control.
Details
- Reviewers
sstefan1 uenoku - Commits
- rGdac2d403a2de: [Attributor] Make liveness "edge-based"
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
LGTM with minor comments.
llvm/lib/Transforms/IPO/Attributor.cpp | ||
---|---|---|
2328–2329 | Maybe change NRC as well. It doesn't have real meaning after this rewrite. | |
2493–2494 | This doesn't seem to be used anymore. | |
2506 | Just to make sure I understand this correctly. This is looking at callbr instruction and only looking at normal label? Shouldn't it look at other labels as well? |
llvm/test/Transforms/FunctionAttrs/nonnull.ll | ||
---|---|---|
219 | Why are these readonly removed? |
llvm/lib/Transforms/IPO/Attributor.cpp | ||
---|---|---|
2328–2329 | Agreed, will do. | |
2493–2494 | yes. | |
2506 | This is not called for callbr because of what you say. Only CallInst and InvokeInst end up here and the latter has some additional handling below. | |
llvm/test/Transforms/FunctionAttrs/nonnull.ll | ||
219 | they are not explicitly queries and now also not implicitly anymore. The information is not lost though. Maybe we want to add AAMemBehavior and others to *all* locations they are not seeded at the moment. |
Maybe change NRC as well. It doesn't have real meaning after this rewrite.