From a7fea88ffbba4300a1ec0ab5f3bb03c9a45817f2 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 12 Mar 2018 13:33:38 +0000 Subject: [PATCH] Add a testcase for PR 84821 This was introduced by r258390 and fixed by r258415. * g++.dg/pr84821.C: New test. From-SVN: r258449 --- gcc/testsuite/ChangeLog | 4 +++ gcc/testsuite/g++.dg/pr84821.C | 55 ++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 gcc/testsuite/g++.dg/pr84821.C diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c7193069550..5dead01586c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2018-03-12 H.J. Lu + + * g++.dg/pr84821.C: New test. + 2018-03-12 H.J. Lu * gcc.dg/pr84799.c: New test. diff --git a/gcc/testsuite/g++.dg/pr84821.C b/gcc/testsuite/g++.dg/pr84821.C new file mode 100644 index 00000000000..39da3671eec --- /dev/null +++ b/gcc/testsuite/g++.dg/pr84821.C @@ -0,0 +1,55 @@ +// { 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 (;;) + ; +} -- 2.30.2