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 <[email protected]>
>>
>> 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 <[email protected]>
* 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 ();
}
};
};