[PATCH] D58170: [DTU] Refine the logic of deduplication

Brian Rzycki via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 13 11:20:59 PST 2019

brzycki added inline comments.

Comment at: llvm/lib/Analysis/DomTreeUpdater.cpp:284
+        Seen.insert(Edge);
+        // If the update doesn't appear in the CFG, it means that
+        // either the change isn't made or relevant operations
@NutshellySima it's probably me but I don't see how the comments match the code here. Let's take this example:
Strategy: Lazy
CFG: edge exists between A->B
Updates: {{Delete, A, B}, {Insert, A, B}}
U: {Delete, A, B}
Edge: {A,B}
isUpdateValid: true

In this case we will enqueue a deletion of edge A->B and not process the second update, the `{Insert, A, B}` because that `Edge` already exists in `Seen`.  If a `flush()` is called immediately after the state of `DTU` is incorrect.

Am I missing something here that prevents this case?

Comment at: llvm/unittests/Analysis/DomTreeUpdaterTest.cpp:793
\ No newline at end of file

Nit: please add a newline.

  rG LLVM Github Monorepo



More information about the llvm-commits mailing list