[llvm-dev] Change in optimisation with UB in mind

David Chisnall via llvm-dev
Tue, 03 Oct 2017 11:20:02 -0000

On 3 Oct 2017, at 11:37, ORiordan, Martin via llvm-dev <llvm-dev at
lists.llvm.org> wrote:
>
> My question is not about the validity of the optimisation - it's
perfectly legitimate - but rather about whether a target can configure their TTI
so as to not perform this optimisation and fall-back to using ADD instead so as
to trigger integer underflow detection.

I don’t believe that this is the correct approach.  You are asking for behaviour
of integer overflow in C to be well-defined as trapping (which is a valid
implementation of undefined behaviour).  In LLVM, this would be represented as
using the overflow-checking add intrinsic followed by a branch to a trap in the
overflow case.  The back end should then lower this to a trapping add
instruction.  Clang already has -ftrapv that implements almost this behaviour.

David