[PATCH] D22122: [SCCP] Teach the pass about bitcasts

Davide Italiano via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 7 18:09:10 PDT 2016

davide added a comment.

I noticed that if I replace the call in visitCastInst() from ConstExpr::getCast() to ConstantFoldCastOperand() (as I used in my previous patch)

  diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp
  index d4c156e..346c121 100644
  --- a/lib/Transforms/Scalar/SCCP.cpp
  +++ b/lib/Transforms/Scalar/SCCP.cpp
  @@ -760,8 +760,9 @@ void SCCPSolver::visitCastInst(CastInst &I) {
     if (OpSt.isOverdefined())          // Inherit overdefinedness of operand
     else if (OpSt.isConstant()) {
  -    Constant *C =
  -        ConstantExpr::getCast(I.getOpcode(), OpSt.getConstant(), I.getType());
  +    Constant *C = ConstantFoldCastOperand(I.getOpcode(),
  +                                        getValueState(I.getOperand(0)).getConstant(),
  +                                        I.getType(), DL);
       if (isa<UndefValue>(C))
       // Propagate constant value

the value is actually folded. Is this is a reasonable change?


More information about the llvm-commits mailing list