<div dir="ltr">On Fri, Jul 8, 2016 at 12:13 PM, Davide Italiano via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Author: davide<br>
Date: Fri Jul  8 14:13:40 2016<br>
New Revision: 274905<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=274905&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=274905&view=rev</a><br>
Log:<br>
[SCCP] Fold constants as we build them whne visiting cast instructions.<br>
<br>
This should be slightly more efficient and could avoid spurious overdefined<br>
markings, as Eli pointed out.<br>
<br>
Differential Revision:  <a href="http://reviews.llvm.org/D22122" rel="noreferrer" target="_blank">http://reviews.llvm.org/D22122</a><br>
<br>
Added:<br>
    llvm/trunk/test/Transforms/SCCP/bitcast.ll<br>
Modified:<br>
    llvm/trunk/lib/Transforms/Scalar/SCCP.cpp<br>
<br>
Modified: llvm/trunk/lib/Transforms/Scalar/SCCP.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/SCCP.cpp?rev=274905&r1=274904&r2=274905&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/SCCP.cpp?rev=274905&r1=274904&r2=274905&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/Scalar/SCCP.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Scalar/SCCP.cpp Fri Jul  8 14:13:40 2016<br>
@@ -760,8 +760,10 @@ void SCCPSolver::visitCastInst(CastInst<br>
   if (OpSt.isOverdefined())          // Inherit overdefinedness of operand<br>
     markOverdefined(&I);<br>
   else if (OpSt.isConstant()) {<br>
-    Constant *C =<br>
-        ConstantExpr::getCast(I.getOpcode(), OpSt.getConstant(), I.getType());<br>
+    // Fold the constant as we build.<br>
+    Constant *C = ConstantFoldCastOperand(<br>
+        I.getOpcode(), getValueState(I.getOperand(0)).getConstant(),<br>
+        I.getType(), DL);<br></blockquote><div><br></div><div>Maybe just use `OpSt` here instead of writing out `getValueState(I.getOperand(0))`?</div><div><br></div><div>-Eli<br></div></div></div></div>