[PATCH] D47928: [SimplifyIndVars] Eliminate redundant truncs

Max Kazantsev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 12 18:43:44 PDT 2018


mkazantsev added inline comments.


================
Comment at: lib/Transforms/Utils/SimplifyIndVar.cpp:514
+          HasSignedComparisonUser = true;
+        else
+          HasUnsignedComparisonUser = true;
----------------
reames wrote:
> This appears to be treating eq/ne as unsigned?  Is that intentional?  If so, probably worth a comment.
Yes it is, we prefer `zext` over `sext` for canonicalization needs in case if there is no difference, as well as we prefer unsigned comparison over signed.


================
Comment at: lib/Transforms/Utils/SimplifyIndVar.cpp:580
 
+  if (auto *TI = dyn_cast<TruncInst>(UseInst))
+    if (eliminateTrunc(TI))
----------------
reames wrote:
> I'm missing something.  Why do this via a new Trunc specific routine that has to look at users instead of just looking at the icmp directly?  We do end up processing it don't we?
No, we never process this `icmp(trunc(iv), constant)`.


https://reviews.llvm.org/D47928





More information about the llvm-commits mailing list