[PATCH][4.3] Deprecate -ftrapv
Robert Dewar
dewar@adacore.com
Sat Mar 1 21:43:00 GMT 2008
Florian Weimer wrote:
> Are we talking about the Ada semantics or GNAT without -gnato? In the
> latter case, the documentation disagrees with you:
>
> The reason that we distinguish overflow checking from other kinds
> of range constraint checking is that a failure of an overflow
> check can generate an incorrect value, but cannot cause erroneous
> behavior. This is unlike the situation with a constraint check on
> an array subscript, where failure to perform the check can result
> in random memory description, or the range check on a case
> statement, where failure to perform the check can cause a wild
> jump.
>
> And to avoid erroneous execution on integer overflow, I think you have
> to specify the equivalent -fwrapv (otherwise, the middle end might do
> nasty things to your range checks).
The documentation needs minor adjustment, I will remove the word
erroneous, and rephrase it as:
> The reason that we distinguish overflow checking from other kinds of
> constraint checking is that a failure of an overflow check, unlike
> for example the failure of a range check, can result in an incorrect
> value, but cannot cause random memory destruction (like an out of range
> subscript), or a wild jump (from an out of range case value). Overflow
> checking is also quite expensive in time and space, since in general it
> requires the use of double length arithmetic.
More information about the Gcc
mailing list