This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Do C++ signed types have modulo semantics?
Michael Veksler wrote:
According to the (very) long discussion on VRP, signed char/short/int/etc
do not have modulo semantic, they have an undefined behavior on overflow.
However in <limits> defines numeric_limits<signed type>::is_modulo = true.
signed types are undefined on overflow. [5/5] and [3.9.1/2,3]
1. Is that a bug in <limits>, a bug in the standard, or is just C++
different
than C in this respect?
a bug in limits, probably
2. Maybe because overflow is undefined then is_modulo maybe
considered "unspecified". I don't like this option, because it does not
help
generic programming.
it's also, I believe, wrong, in that some gcc optimizations will not preserve
such behaviour. (I guess this is the whole VRP conversation you mention.)
3. Do I understand what is_modulo stands for?
yes
4. What should be done (libstdc++ PR, C++ PR, DR, other)?
18.2.1.2/57 claims is_modulo is true 'for signed types on most machines'. Such
an assertion is false when optimizations rely the undefinedness of signed
overflow. A DR should probably be filed (maybe one is, I'm not at all familiar
with library DRs).
nathan
--
Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC
nathan@codesourcery.com :: http://www.planetfall.pwp.blueyonder.co.uk