[llvm] [DomTreeUpdater] Handle critical edge splitting (PR #100856)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 5 20:28:45 PDT 2024
================
@@ -146,8 +152,25 @@ class GenericDomTreeUpdater {
/// 2. It is illegal to submit any update that has already been submitted,
/// i.e., you are supposed not to insert an existent edge or delete a
/// nonexistent edge.
+ /// 3. This kind updates are incompatible with critical edge splitting
+ /// updates, call this method will apply all critical edge updates in
+ /// lazy mode. It is not recommended to interleave applyUpdates and
+ /// applyUpdatesForCriticalEdgeSplitting.
----------------
paperchalice wrote:
Sorry for my poor expression.
In lazy mode
```c++
DomTreeUpdater DTU(...); // Assume in lazy mode.
DTU.applyUpdates({...}); // Several general updates.
DTU.applyUpdatesForCriticalEdgeSplitting(...); // Is equivalent to DTU.flush(); DTU.applyUpdatesForCriticalEdgeSplitting(...)
```
Because `cfg::Update` doesn't model the update kind for critical edge splitting.
https://github.com/llvm/llvm-project/pull/100856
More information about the llvm-commits
mailing list