Opps, forgot the testcase... Jeff
commit 6a8750b4ecafeac5411075730e9f8fa7a1e8238a Author: law <law@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue Jul 16 14:57:51 2019 +0000
PR rtl-optimization/91173 * g++.dg/pr91173.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@273531 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fc0b1298148..23d8c776321 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-07-16 Jeff Law <l...@redhat.com> + + PR rtl-optimization/91173 + * g++.dg/pr91173.C: New test. + 2019-07-16 Wilco Dijkstra <wdijk...@arm.com> PR target/89190 diff --git a/gcc/testsuite/g++.dg/pr91173.C b/gcc/testsuite/g++.dg/pr91173.C new file mode 100644 index 00000000000..b8fb41ba0cd --- /dev/null +++ b/gcc/testsuite/g++.dg/pr91173.C @@ -0,0 +1,45 @@ +class a { + int b; + void *c; + +public: + bool aa(); + int &ab() { + if (aa()) { + void *d(c); + return static_cast<int *>(d)[b]; + } + return *(int *)0; + } +}; +typedef enum {E} e; +class f : public a { + int g; + +public: + int ac() { + if (g) + return 1; + return ac(); + } +}; +int *ad; +struct h { + static int ae(e, int *m) { + f ag; + int *ah; + while (!0) { + ad = &ag.ab(); + ah = ad + ag.ac(); + while (ad < ah) + *m = *ad++; + } + } +}; +template <class, class> +void i(int *, int *, int, int *, e n, int *o) { + h::ae(n, o); +} +int aq, ar, as, at, au; +void aw() { i<int, bool>(&aq, &ar, as, &at, (e)0, &au); } +