From: Marek Polacek Date: Thu, 30 Apr 2015 18:05:34 +0000 (+0000) Subject: re PR tree-optimization/63551 (wrong code (segfaults) at -Os on x86_64-linux-gnu) X-Git-Tag: releases/gcc-4.9.3~175 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0288cceb4eaee71b7847366d29b65aa472201626;p=thirdparty%2Fgcc.git re PR tree-optimization/63551 (wrong code (segfaults) at -Os on x86_64-linux-gnu) PR tree-optimization/63551 * g++.dg/ipa/pr63551.C: New test. From-SVN: r222652 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8eba2c2274b0..a8ced0994e5f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-04-30 Marek Polacek + + PR tree-optimization/63551 + * g++.dg/ipa/pr63551.C: New test. + 2015-04-29 Thomas Schwinge Backport from trunk r222564: diff --git a/gcc/testsuite/g++.dg/ipa/pr63551.C b/gcc/testsuite/g++.dg/ipa/pr63551.C new file mode 100644 index 000000000000..03e033979697 --- /dev/null +++ b/gcc/testsuite/g++.dg/ipa/pr63551.C @@ -0,0 +1,23 @@ +// { dg-options "-O -Wno-psabi" } +// { dg-do compile } + +struct A { int a; }; +template struct B { V operator[] (T); }; +union U { long double ld; void *v; }; +A a; + +void +bar (U &x) +{ + if (x.v) *reinterpret_cast (x.v) = a; +} + +struct C { C (A) { c.ld = 0; bar (c); } U c; }; +struct D { A d, e; void foo () { f[0][d] = e; } B > f; }; + +void +baz () +{ + D d; + d.foo (); +}