]> granicus.if.org Git - llvm/commitdiff
[GVN] Remove a todo introduced w/rL370791
authorPhilip Reames <listmail@philipreames.com>
Tue, 3 Sep 2019 21:56:17 +0000 (21:56 +0000)
committerPhilip Reames <listmail@philipreames.com>
Tue, 3 Sep 2019 21:56:17 +0000 (21:56 +0000)
When I dug into this, it turns out to be *much* more involved than I'd realized and doesn't actually simplify anything.

The general purpose of the leader table is that we want to find the most-dominating definition quickly.  The problem for equivalance folding is slightly different; we want to find the most dominating *value* whose definition block dominates our use quickly.

To make this change, we'd end up having to restructure the leader table (either the sorting thereof, or maybe even introducing multiple leader tables per value) and that complexity is just not worth it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@370824 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/GVN.cpp

index e71d771ce42b99e0edd7cbd39606cfef122c5eaf..c57cdc4be6aa2d1dd1b4aaa773b9bea01cba9a73 100644 (file)
@@ -1754,9 +1754,6 @@ void GVN::assignBlockRPONumber(Function &F) {
 }
 
 bool GVN::replaceOperandsForInBlockEquality(Instruction *Instr) const {
-  // TODO: We can remove the separate ReplaceOperandsWithMap data structure in
-  // favor of putting equalitys into the leader table and using findLeader
-  // here. 
   bool Changed = false;
   for (unsigned OpNum = 0; OpNum < Instr->getNumOperands(); ++OpNum) {
     Value *Operand = Instr->getOperand(OpNum);