Re: Optimization techniques, C++ numeric representations

David Brown <david.brown@hesbynett.no>
Mon, 29 Apr 2019 17:24:07 +0200

          From comp.compilers

Related articles
Re: Optimization techniques martin@gkc.org.uk (Martin Ward) (2019-04-25)
Re: Optimization techniques haberg-news@telia.com (Hans Aberg) (2019-04-27)
Re: Optimization techniques, C++ numeric representations david.brown@hesbynett.no (David Brown) (2019-04-29)
Re: Optimization techniques, C++ numeric representations haberg-news@telia.com (Hans Aberg) (2019-04-30)
| List of all articles for this month |

From: David Brown <david.brown@hesbynett.no>
Newsgroups: comp.compilers
Date: Mon, 29 Apr 2019 17:24:07 +0200
Organization: A noiseless patient Spider
References: <72d208c9-169f-155c-5e73-9ca74f78e390@gkc.org.uk> 19-04-020 19-04-033
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="89306"; mail-complaints-to="abuse@iecc.com"
Keywords: C++, arithmetic
Posted-Date: 29 Apr 2019 11:37:26 EDT
In-Reply-To: 19-04-033
Content-Language: en-GB

On 27/04/2019 23:01, Hans Aberg wrote:
> On 2019-04-25 17:46, Martin Ward wrote:
>> If signed overflow was given a defined
>> behaviour (such as the two's complement result), then compilers for
>> CPUs which do not implement two's complement operations would have to
>> generate less efficient code (but does anyone still make such a CPU?).
>
> All C++ compilers use two's complement, and as of C++20, that is
> required, cf. [1], "Range of values". It is required for int32_t etc in
> C++11 [2] and C99 [3].
>
> 1. https://en.cppreference.com/w/cpp/language/types
> 2. https://en.cppreference.com/w/cpp/types/integer
> 3. https://en.cppreference.com/w/c/types/integer
> [I realize that if you look very hard, you can still find a few legacy
> machines that are not pure two's complement and do not have 8-bit byte
> addressing.  But these days, so what. -John]


Note, however, that this applies only to the representation of the
types. C++20 will /not/ require two's complement wrapping on signed
integer overflow - this will remain undefined behaviour. (And, as
always, compilers are free to define it if they want.)


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.