[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
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
> overflow being “undefined” ?
Can you be more specific? Example that does what?
More information about the llvm-dev