On Mon, 18 Nov 2013, Marek Polacek wrote:

> +@item @option{-fsanitize=shift}
> +
> +This option enables checking that the result of a shift operation is
> +not undefined.  Note that what exactly is considered undefined differs
> +slightly between C and C++, as well as between ANSI C and C99, etc.

We generally refer to ISO C90, not ANSI C.

> +Detect integer division by zero as well as @code{INT_MIN / -1} division.
> +Note that the latter is only made undefined from C99 onwards.

INT_MIN / -1 is unambiguously undefined in C90 - it's a signed arithmetic 
overflow (result not within the range of its type).  It's INT_MIN % -1 
where there's more ambiguity, but I consider the wording changes in C11 as 
a defect correction that should be applied back to C90.  (A comment on 
what the semantics should be, not on whether the documentation accurately 
reflects the code.)

-- 
Joseph S. Myers
jos...@codesourcery.com

Reply via email to