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 ();
     }
   };
 };

Reply via email to