[PATCH] D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent.
Whitney Tsang via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sat Dec 21 22:53:13 PST 2019
Whitney marked an inline comment as done.
Whitney added inline comments.
================
Comment at: llvm/lib/Transforms/Utils/CodeMoverUtils.cpp:101
+ !IsDifferent(Other.getFalseConditions(), FalseConditions,
+ TrueConditions));
+ }
----------------
fhahn wrote:
> Whitney wrote:
> > jdoerfert wrote:
> > > What if you would only track positive conditions (negate the others) and you put them into a set. The is equivalent check will then be imple equality check on the sets. You can then also check "implication" through subset relation, and missing condition, through set difference.
> > I changed to use unordered_set. I created a ControlCondition struct instead as the type for the unordered_set. Do you think that's sufficient?
> This should use DenseMap, unless there is a good justification to not use it. Also ControlCondition could just be a tagged pointer (http://llvm.org/doxygen/classllvm_1_1PointerIntPair.html)
Do you feel strongly about changing to DenseMap? I tried to change it, but I could not make it work successfully. Somehow equivalent values are inserted to the same set. I can post my code change as a comment and see if you could spot the problem, if you really want to change to a dense map.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D71578/new/
https://reviews.llvm.org/D71578
More information about the llvm-commits
mailing list