[PATCH] D65692: [ValueTracking] When calculating known bits for integer abs, make sure we're looking at a negate and not just any instruction with the nsw flag set.
    Nikita Popov via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Fri Aug  2 23:52:57 PDT 2019
    
    
  
nikic added a comment.
As we only have a handful of SPF_ABS uses, it might make sense to introduce a separate abs flavor for the nsw case (which would also allow to handle the x-y case more accurately). SPF_PABS? SPF_ABS_NSW?
(Not in this revision of course.)
================
Comment at: llvm/lib/Analysis/ValueTracking.cpp:1098
       // will be 0 because that makes abs(INT_MIN) undefined.
-      if (Q.IIQ.hasNoSignedWrap(cast<Instruction>(RHS)))
+      if (match(RHS, m_NSWSub(m_ZeroInt(), m_Specific(LHS))))
         MaxHighZeros = 1;
----------------
I think this should still be going through IIQ, otherwise NewGVN might be unhappy.
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D65692/new/
https://reviews.llvm.org/D65692
    
    
More information about the llvm-commits
mailing list