[PATCH] D28968: LoopUnswitch - Simplify based on known not to a be constant.

Xin Tong via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 21 12:46:48 PST 2017


trentxintong added inline comments.


================
Comment at: lib/Transforms/Scalar/LoopUnswitch.cpp:1395
+    Value *Op1 = CI->getOperand(1);
+    if ((Op0 == Cond && Op1 == Val) || (Op0 == Val && Op1 == Cond)) {
+      LLVMContext &Ctx = Inst->getContext();
----------------
efriedma wrote:
> trentxintong wrote:
> > efriedma wrote:
> > > Missing check that Val is a ConstantInt.
> > Val is going to be a ConstantInt, as its used by ICmpInst, I will add an assert though =).
> It will  be a Constant of integer type... but that's not the same thing as a ConstantInt.  (For example `ptrtoint i32* @g to i64`. is a Constant of integer type.)
I see. Thanks for pointing this out to me. But does Val have to be a constantInt here. What we know here is that the Cond != Val and we are trying to simplify a icmpinst, we are not getting the actual integer value of this constant.

Even though I think the Val is always going to be the constant int in the current state of pass.


https://reviews.llvm.org/D28968





More information about the llvm-commits mailing list