[PATCH] D23896: [InstCombine] Try to resubmit the combine of A->B->A BitCast and fix for pr27996

David Majnemer via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 21 14:14:24 PDT 2016


majnemer added inline comments.


================
Comment at: lib/Transforms/InstCombine/InstCombineCasts.cpp:1765
 
+/// Check if all users of CI are Store.
+static bool hasStoreUsersOnly(CastInst &CI) {
----------------
"Store" should probably be "StoreInsts".


================
Comment at: lib/Transforms/InstCombine/InstCombineCasts.cpp:1767-1771
+  for (User *U : CI.users()) {
+    if (!isa<StoreInst>(U))
+      return false;
+  }
+  return true;
----------------
I think this can be simplified to `llvm::all_of(CI.users(), [](User *U) { return isa<StoreInst>(U); });`


================
Comment at: lib/Transforms/InstCombine/InstCombineCasts.cpp:1878
+      Worklist.Add(SI);
+      assert(hasStoreUsersOnly(*(CastInst *)NewBC));
+    }
----------------
This looks unidiomatic. I'd `cast<BitCastInst>` the result of `CreateBitCast`. `CreateBitCast` cannot be a `Constant` because its operand is a `PHINode`.


https://reviews.llvm.org/D23896





More information about the llvm-commits mailing list