Hi Jan, >> On Thu, Jan 18, 2018 at 04:59:01PM +0100, Jan Hubicka wrote: >> > this patch ICE where the profile in cgraph mismatch profile in BB. This >> > is becuase >> > of expansion of speculative devirtualization where we get some roundoff >> > issues. >> > >> > Bootstrapped/regtested x86_64-linux, comitted. >> > Honza >> > >> > PR ipa/83619 >> > * g++.dg/torture/pr83619.C: New testcase. >> > * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge >> > frequencies. >> > --- testsuite/g++.dg/torture/pr83619.C (revision 0) >> > +++ testsuite/g++.dg/torture/pr83619.C (working copy) >> ... >> >> This testcase FAILs everywhere: >> /.../gcc/gcc/testsuite/g++.dg/torture/pr83619.C: In static member >> function 'static void i::j< <template-parameter-1-1> >::c(e*)': >> /.../gcc/gcc/testsuite/g++.dg/torture/pr83619.C:25:8: warning: invalid >> use of incomplete type 'class e' >> /.../gcc/gcc/testsuite/g++.dg/torture/pr83619.C:8:7: note: forward >> declaration of 'class e' >> FAIL: g++.dg/torture/pr83619.C -O0 (test for excess errors) >> Excess errors: >> /.../gcc/gcc/testsuite/g++.dg/torture/pr83619.C:25:8: warning: invalid >> use of incomplete type 'class e' >> >> The following patch tweaks it so that it doesn't emit the warning, yet still >> ICEs before your cgraph.c change and PASSes after it. >> Tested on x86_64-linux and i686-linux, ok for trunk? >> >> 2018-01-18 Jakub Jelinek <ja...@redhat.com> >> >> PR ipa/83619 >> * g++.dg/torture/pr83619.C (e): Define before first use instead of >> forward declaration. > > Oops, sorry. I had corrected version somewhere. The change is OK.
however, the test now FAILs everywhere with +FAIL: g++.dg/torture/pr83619.C -O0 (test for excess errors) +FAIL: g++.dg/torture/pr83619.C -O1 (test for excess errors) +FAIL: g++.dg/torture/pr83619.C -O2 (test for excess errors) +FAIL: g++.dg/torture/pr83619.C -O2 -flto (test for excess errors) +FAIL: g++.dg/torture/pr83619.C -O2 -flto -flto-partition=none (test for excess errors) +FAIL: g++.dg/torture/pr83619.C -O3 -g (test for excess errors) +FAIL: g++.dg/torture/pr83619.C -Os (test for excess errors) from g->c (); // { dg-message "incomplete" } Removing the dg-message cures this. Tested with the appropriate runtest invocation on i386-pc-solaris2.11. Ok for mainline? Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University 2018-01-19 Rainer Orth <r...@cebitec.uni-bielefeld.de> * g++.dg/torture/pr83619.C: Remove dg-message.
diff --git a/gcc/testsuite/g++.dg/torture/pr83619.C b/gcc/testsuite/g++.dg/torture/pr83619.C --- a/gcc/testsuite/g++.dg/torture/pr83619.C +++ b/gcc/testsuite/g++.dg/torture/pr83619.C @@ -24,7 +24,7 @@ public: static void c (e *g) { - g->c (); // { dg-message "incomplete" } + g->c (); } }; };