make reassociate more careful about not leaving around dead mul's


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92370 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Transforms/Scalar/Reassociate.cpp b/lib/Transforms/Scalar/Reassociate.cpp
index 8596dc7..365c9f7 100644
--- a/lib/Transforms/Scalar/Reassociate.cpp
+++ b/lib/Transforms/Scalar/Reassociate.cpp
@@ -530,7 +530,13 @@
     return 0;
   }
   
-  if (Factors.size() == 1) return Factors[0].Op;
+  // If this was just a single multiply, remove the multiply and return the only
+  // remaining operand.
+  if (Factors.size() == 1) {
+    ValueRankMap.erase(BO);
+    BO->eraseFromParent();
+    return Factors[0].Op;
+  }
   
   RewriteExprTree(BO, Factors);
   return BO;