[PATCH] D47428: [InstCombine] PR37603: low bit mask canonicalization

Roman Lebedev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 4 06:49:52 PDT 2018


lebedev.ri added a comment.

In https://reviews.llvm.org/D47428#1120820, @spatel wrote:

> We didn't resolve the 'nuw' question - am I not seeing the scenario that you asked about?






================
Comment at: lib/Transforms/InstCombine/InstCombineAddSub.cpp:1112
+  Constant *MinusOne = Constant::getAllOnesValue(NBits->getType());
+  auto *Shl = cast<BinaryOperator>(Builder.CreateShl(MinusOne, NBits));
+  // Always NSW. But NUW propagates from `add`.
----------------
spatel wrote:
> Is this always safe to cast rather than dyn_cast? What happens if NBits is a constant expression?
New test with constant seems to work.
So in this case, the constant folding seems to already happen,
but i agree i guess it is better to be proactively safer here.


Repository:
  rL LLVM

https://reviews.llvm.org/D47428





More information about the llvm-commits mailing list