diff options
author | Jakub Jelinek <jakub@redhat.com> | 2022-03-02 10:38:39 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2022-03-02 10:38:39 +0100 |
commit | 5f2e72db8c03c960d8330305c1e92986373198ca (patch) | |
tree | 56ea3ccf1ce452fe1ff32d4741c8c7542cff423c | |
parent | 31702fe9694e7ebeab91805e7121a1a757c108bd (diff) | |
download | gcc-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.C | 24 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/opt/pr100541-2.C | 25 |
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; +} |