diff options
author | Marek Polacek <polacek@redhat.com> | 2024-05-14 13:48:30 -0400 |
---|---|---|
committer | Marek Polacek <polacek@redhat.com> | 2024-05-15 11:28:37 -0400 |
commit | 3cefe91b74f65f0db71472e01ca83c69e2cd81cc (patch) | |
tree | 79f701a14d8e1555391e4aa834922d519b579c84 | |
parent | 5609d77e683944439fae38323ecabc44a1eb4671 (diff) | |
download | gcc-3cefe91b74f65f0db71472e01ca83c69e2cd81cc.zip gcc-3cefe91b74f65f0db71472e01ca83c69e2cd81cc.tar.gz gcc-3cefe91b74f65f0db71472e01ca83c69e2cd81cc.tar.bz2 |
c++: add test for DR 2855
Let
int8_t x = 127;
This DR says that while
x++;
invokes UB,
++x;
does not. The resolution was to make the first one valid. The
following test verifies that we don't report any errors in a constexpr
context.
DR 2855
gcc/testsuite/ChangeLog:
* g++.dg/DRs/dr2855.C: New test.
-rw-r--r-- | gcc/testsuite/g++.dg/DRs/dr2855.C | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/DRs/dr2855.C b/gcc/testsuite/g++.dg/DRs/dr2855.C new file mode 100644 index 0000000..b4609ce --- /dev/null +++ b/gcc/testsuite/g++.dg/DRs/dr2855.C @@ -0,0 +1,16 @@ +// DR 2855, Undefined behavior in postfix increment +// { dg-do compile { target c++14 } } + +using int8_t = signed char; + +constexpr int +f () +{ + int8_t x = 127; + x++; + int8_t z = 127; + ++z; + return x + z; +} + +constexpr int i = f(); |