[PATCH] D28813: [CodeGenPrepare] Sink and duplicate more 'and' instructions.

Chad Rosier via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 17 14:34:11 PST 2017

mcrosier added inline comments.

Comment at: lib/CodeGen/CodeGenPrepare.cpp:1105
+  if (!TLI.isMaskAndCmp0FoldingBeneficial(*AndI))
+    return false;
minor nit: Would it make sense for this check to be first?  That would avoid unnecessary work for those targets that don't enable this optimization.

Comment at: lib/CodeGen/CodeGenPrepare.cpp:1112
+    // Only sink for and mask feeding icmp with 0.
+    if (!dyn_cast<ICmpInst>(User))
+      return false;
dyn_cast -> isa

Comment at: lib/CodeGen/CodeGenPrepare.cpp:4699
       Builder.CreateAnd(Load, ConstantInt::get(Ctx, DemandBits)));
+  // Mark this instruction as "inserted by CGP", so that other
+  // optimizations don't touch it.
I'm curious if this change in isolation prevented some other optimizations from happening?


More information about the llvm-commits mailing list