aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2022-03-02 10:38:39 +0100
committerJakub Jelinek <jakub@redhat.com>2022-03-02 10:38:39 +0100
commit5f2e72db8c03c960d8330305c1e92986373198ca (patch)
tree56ea3ccf1ce452fe1ff32d4741c8c7542cff423c
parent31702fe9694e7ebeab91805e7121a1a757c108bd (diff)
downloadgcc-5f2e72db8c03c960d8330305c1e92986373198ca.zip
gcc-5f2e72db8c03c960d8330305c1e92986373198ca.tar.gz
gcc-5f2e72db8c03c960d8330305c1e92986373198ca.tar.bz2
testsuite: Add testcases for already fixed PR [PR100541]
These testcases started failing with r12-630 and one of them got fixed with r12-4531 (aka PR102764 fix and r12-4616 further improved the fix) and the other went latent in r12-2591 (i.e. threader changes) and I believe was fixed for real by the PR102764 fix too. 2022-03-02 Jakub Jelinek <jakub@redhat.com> PR debug/100541 * g++.dg/opt/pr100541-1.C: New test. * g++.dg/opt/pr100541-2.C: New test.
-rw-r--r--gcc/testsuite/g++.dg/opt/pr100541-1.C24
-rw-r--r--gcc/testsuite/g++.dg/opt/pr100541-2.C25
2 files changed, 49 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/opt/pr100541-1.C b/gcc/testsuite/g++.dg/opt/pr100541-1.C
new file mode 100644
index 0000000..9a73e15
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr100541-1.C
@@ -0,0 +1,24 @@
+// PR debug/100541
+// { dg-do compile }
+// { dg-options "-O3 -fno-expensive-optimizations -fno-tree-dce -fno-tree-dominator-opts -fcompare-debug" }
+
+int a, b, i, x, y;
+
+int
+foo ()
+{
+ int rcmd = 0;
+ switch (x) {
+ case 0:
+ if (i)
+ rcmd = 6;
+ if (y % 3)
+ int &m1 = rcmd = rcmd | 5;
+ break;
+ case 1:
+ rcmd = b;
+ }
+ if (rcmd != 7)
+ return rcmd;
+ return a;
+}
diff --git a/gcc/testsuite/g++.dg/opt/pr100541-2.C b/gcc/testsuite/g++.dg/opt/pr100541-2.C
new file mode 100644
index 0000000..3562481
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr100541-2.C
@@ -0,0 +1,25 @@
+// PR debug/100541
+// { dg-do compile { target c++11 } }
+// { dg-options "-O2 -fno-tree-dce -fno-tree-dominator-opts -fcompare-debug" }
+
+int INVALID_TILE;
+void GetSlopePixelZ();
+long RUNWAY_IN_block;
+struct Airport {
+ long flags;
+};
+struct Station {
+ Airport airport;
+} * HandleCrashedAircraft_st;
+short HandleCrashedAircraft_v_0;
+void HandleCrashedAircraft() {
+ Station *__trans_tmp_1 = INVALID_TILE ? nullptr : HandleCrashedAircraft_st,
+ *st;
+ if (HandleCrashedAircraft_v_0 && __trans_tmp_1 == nullptr &&
+ HandleCrashedAircraft_v_0 % 3)
+ GetSlopePixelZ();
+ if (HandleCrashedAircraft_v_0)
+ GetSlopePixelZ();
+ if (__trans_tmp_1)
+ st->airport.flags &= RUNWAY_IN_block;
+}