P1236R1 - Signed integers are two's complement
authorJakub Jelinek <jakub@redhat.com>
Wed, 14 Nov 2018 16:46:06 +0000 (17:46 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 14 Nov 2018 16:46:06 +0000 (17:46 +0100)
commit8ee099430b5d72050380f7506520d3bcb52b2f41
tree5505cd75b39f643063ae805162831dbecc4def9c
parent12763abc53bb8c4d9953992b003f4a59a59473ce
P1236R1 - Signed integers are two's complement

P1236R1 - Signed integers are two's complement
gcc/cp/
* constexpr.c (cxx_eval_check_shift_p): Disable the signed LSHIFT_EXPR
checks for c++2a.
gcc/c-family/
* c-warn.c (maybe_warn_shift_overflow): Don't warn for c++2a.
* c-ubsan.c (ubsan_instrument_shift): Make signed shifts
with in-range second operand well defined for -std=c++2a.
gcc/
* doc/invoke.texi (Wshift-overflow): Adjust documentation for
c++2a.
gcc/testsuite/
* g++.dg/cpp2a/constexpr-shift1.C: New test.
* g++.dg/warn/permissive-1.C (enum A, enum D): Don't expect
diagnostics here for c++2a.
* g++.dg/cpp0x/constexpr-shift1.C (fn3, i3, fn4, i4): Don't expect
diagnostics here for c++2a.
* g++.dg/cpp0x/constexpr-60049.C (f3, x3, y3): Likewise.
* g++.dg/ubsan/cxx11-shift-1.C (main): Add some further tests.
* g++.dg/ubsan/cxx11-shift-2.C (main): Likewise.
* g++.dg/ubsan/cxx2a-shift-1.C: New test.
* g++.dg/ubsan/cxx2a-shift-2.C: New test.

From-SVN: r266153
16 files changed:
gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-ubsan.c
gcc/c-family/c-warn.c
gcc/cp/ChangeLog
gcc/cp/constexpr.c
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/constexpr-60049.C
gcc/testsuite/g++.dg/cpp0x/constexpr-shift1.C
gcc/testsuite/g++.dg/cpp2a/constexpr-shift1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ubsan/cxx11-shift-1.C
gcc/testsuite/g++.dg/ubsan/cxx11-shift-2.C
gcc/testsuite/g++.dg/ubsan/cxx2a-shift-1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ubsan/cxx2a-shift-2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/warn/permissive-1.C