aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2024-05-14 13:48:30 -0400
committerMarek Polacek <polacek@redhat.com>2024-05-15 11:28:37 -0400
commit3cefe91b74f65f0db71472e01ca83c69e2cd81cc (patch)
tree79f701a14d8e1555391e4aa834922d519b579c84
parent5609d77e683944439fae38323ecabc44a1eb4671 (diff)
downloadgcc-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.C16
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();