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.
--- /dev/null
+// 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;
+}
--- /dev/null
+// 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;
+}