[llvm-dev] RFC: Killing undef and spreading poison
    Sanjoy Das via llvm-dev 
    llvm-dev at lists.llvm.org
       
    Sun Jun  4 21:13:48 PDT 2017
    
    
  
Hi Peter,
On Thu, Jun 1, 2017 at 6:18 PM, Peter Lawrence via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
>             My answer is that step 3, commuting the multiply with the
> sign-extends, is invalid,
> As this is what causes the `udiv` to fault.  I think it is invalid with or
> without the “freeze”,
> why do you think step 3, the commute, without the “freeze" is valid ?
I think it is valid by definition -- since "A *nsw B" does not sign
wrap, "sext(A *nsw B)" == (sext A) * (sext B).  In other words, these
two expressions are inequal only if "A *nsw B" sign wraps.
> Also, do you think you can come up with an example that does not depend on
> signed
> overflow being “undefined” ?
Can you be more specific?  Example that does what?
-- Sanjoy
    
    
More information about the llvm-dev
mailing list