Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2021-04-11 | [NFCI][DomTreeUpdater] applyUpdates(): reserve space for updates first | Roman Lebedev | 1 | -0/+1 | |
While, indeed, we may end up pushing less updates that we'd reserve space for, self-dominating updates aren't often enough for that to matter. But this should matter for normal updates. | |||||
2021-01-08 | [Target, Transforms] Use *Set::contains (NFC) | Kazu Hirata | 1 | -1/+1 | |
2020-11-20 | [Analysis] Use llvm::is_contained (NFC) | Kazu Hirata | 1 | -2/+1 | |
2020-07-10 | [DomTreeUpdater] Use const auto * when iterating over pointers (NFC). | Florian Hahn | 1 | -1/+1 | |
This silences the warning below: llvm-project/llvm/lib/Analysis/DomTreeUpdater.cpp:510:20: warning: loop variable 'BB' is always a copy because the range of type 'const SmallPtrSet<llvm::BasicBlock *, 8>' does not return a reference [-Wrange-loop-analysis] for (const auto &BB : DeletedBBs) { ^ llvm-project/llvm/lib/Analysis/DomTreeUpdater.cpp:510:8: note: use non-reference type 'llvm::BasicBlock *' for (const auto &BB : DeletedBBs) { ^~~~~~~~~~~~~~~~ 1 warning generated. | |||||
2020-07-10 | DomTreeUpdater::dump() - use const auto& iterator in for-range-loop. | Simon Pilgrim | 1 | -2/+2 | |
Avoids unnecessary copies and silences clang tidy warning. | |||||
2020-06-07 | DomTreeUpdater.h - refine includes. NFC. | Simon Pilgrim | 1 | -1/+1 | |
We don't need any of its defs or many of its includes inside PostDominators.h - so split it and reduce the frontend load. | |||||
2020-01-01 | [NFC] Fixes -Wrange-loop-analysis warnings | Mark de Wever | 1 | -2/+2 | |
This avoids new warnings due to D68912 adds -Wrange-loop-analysis to -Wall. Differential Revision: https://reviews.llvm.org/D71857 | |||||
2019-02-22 | [DTU] Refine the interface and logic of applyUpdates | Chijun Sima | 1 | -59/+64 | |
Summary: This patch separates two semantics of `applyUpdates`: 1. User provides an accurate CFG diff and the dominator tree is updated according to the difference of `the number of edge insertions` and `the number of edge deletions` to infer the status of an edge before and after the update. 2. User provides a sequence of hints. Updates mentioned in this sequence might never happened and even duplicated. Logic changes: Previously, removing invalid updates is considered a side-effect of deduplication and is not guaranteed to be reliable. To handle the second semantic, `applyUpdates` does validity checking before deduplication, which can cause updates that have already been applied to be submitted again. Then, different calls to `applyUpdates` might cause unintended consequences, for example, ``` DTU(Lazy) and Edge A->B exists. 1. DTU.applyUpdates({{Delete, A, B}, {Insert, A, B}}) // User expects these 2 updates result in a no-op, but {Insert, A, B} is queued 2. Remove A->B 3. DTU.applyUpdates({{Delete, A, B}}) // DTU cancels this update with {Insert, A, B} mentioned above together (Unintended) ``` But by restricting the precondition that updates of an edge need to be strictly ordered as how CFG changes were made, we can infer the initial status of this edge to resolve this issue. Interface changes: The second semantic of `applyUpdates` is separated to `applyUpdatesPermissive`. These changes enable DTU(Lazy) to use the first semantic if needed, which is quite useful in `transforms/utils`. Reviewers: kuhar, brzycki, dmgreen, grosser Reviewed By: brzycki Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58170 llvm-svn: 354669 | |||||
2019-02-06 | Move DomTreeUpdater from IR to Analysis | Richard Trieu | 1 | -0/+528 | |
DomTreeUpdater depends on headers from Analysis, but is in IR. This is a layering violation since Analysis depends on IR. Relocate this code from IR to Analysis to fix the layering violation. llvm-svn: 353265 |