This was introduced by r258390 and fixed by r258415.
* g++.dg/pr84821.C: New test.
From-SVN: r258449
+2018-03-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ * g++.dg/pr84821.C: New test.
+
2018-03-12 H.J. Lu <hongjiu.lu@intel.com>
* gcc.dg/pr84799.c: New test.
--- /dev/null
+// { dg-do compile }
+// { dg-options "-O2" }
+// { dg-additional-options "-fPIC" { target fpic } }
+
+typedef struct a *b;
+struct a {
+ int c;
+ unsigned d[];
+};
+int e, f, g, i, l, m;
+struct o {
+ long *h;
+ int c;
+ unsigned j;
+ int k;
+ long aa;
+};
+inline void p(o *r) { r->c = g; }
+int *n, *ab;
+inline bool s(o *r) {
+ for (; r->aa == 0; r->aa = r->h[r->j])
+ if (r->j >= r->c)
+ return false;
+ r->aa >>= 1;
+ for (; r->aa;)
+ r++;
+ *n = r->k;
+ return true;
+}
+class t {
+public:
+ t(int);
+ operator b() { return q; }
+ b q;
+};
+bool u, v, ac;
+void fn3() {
+ long w, x;
+ o ad;
+ bool ae;
+ t af(i), ag(i);
+ for (p(&ad); s(&ad);) {
+ a *ah = af, *ai = ah, *aj = ag;
+ x = ai->d[e] >> f & 1;
+ ae = x;
+ ai = aj;
+ w = ai->d[e] >> f & 1;
+ ac = w;
+ if (v && u && w && x)
+ ab[l] = ++m;
+ u = x;
+ }
+ for (;;)
+ ;
+}