public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/45453]  New: [4.6 Regression] ICE: verify_cgraph_node failed: inlined_to pointer set for noninline callers with -O2 -fno-early-inlining
@ 2010-08-30 19:02 zsojka at seznam dot cz
  2010-08-30 19:07 ` [Bug tree-optimization/45453] " zsojka at seznam dot cz
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: zsojka at seznam dot cz @ 2010-08-30 19:02 UTC (permalink / raw)
  To: gcc-bugs

Command line:
$ gcc -O2 -fno-early-inlining testcase.C

Compiler output:
$ /mnt/svn/gcc-trunk/binary-163636-lto-fortran-checking-yes-rtl-df/bin/gcc -O2
-fno-early-inlining testcase.C 
testcase.C:14:1: error: inlined_to pointer set for noninline callers
testcase.C:14:1: error: multiple inline callers
virtual void S::foo()/0(0) @0x7f8cb444b158 (asm: _ZN1S3fooEv) (inline copy in
void B()/1) availability:available analyzed 13 time, 12 benefit 4 size, 3
benefit reachable body finalized inlinable
  called by: virtual void S::foo()/0 (1.00 per call) (indirect_inlining) (can
throw external) void B()/1 (1.00 per call) (inlined) (can throw external) 
  calls: virtual void S::foo()/0 (indirect_inlining) (1.00 per call) (can throw
external) 
  References: 
  Refering this function: 
testcase.C:14:1: internal compiler error: verify_cgraph_node failed
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.

Tested revisions:
r163636 - crash
r161170 - crash
r159696 - crash
r158969 - OK
4.5 r160526 - OK


-- 
           Summary: [4.6 Regression] ICE: verify_cgraph_node failed:
                    inlined_to pointer set for noninline callers with -O2 -
                    fno-early-inlining
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: zsojka at seznam dot cz
  GCC host triplet: x86_64-pc-linux-gnu
GCC target triplet: x86_64-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45453


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug tree-optimization/45453] [4.6 Regression] ICE: verify_cgraph_node failed: inlined_to pointer set for noninline callers with -O2 -fno-early-inlining
  2010-08-30 19:02 [Bug tree-optimization/45453] New: [4.6 Regression] ICE: verify_cgraph_node failed: inlined_to pointer set for noninline callers with -O2 -fno-early-inlining zsojka at seznam dot cz
@ 2010-08-30 19:07 ` zsojka at seznam dot cz
  2010-08-31  9:56 ` rguenth at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: zsojka at seznam dot cz @ 2010-08-30 19:07 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from zsojka at seznam dot cz  2010-08-30 19:07 -------
Created an attachment (id=21595)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21595&action=view)
reduced testcase (from g++.dg/opt/pr20991.C)

$ gcc -O2 -fno-early-inlining pr45453.C


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45453


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug tree-optimization/45453] [4.6 Regression] ICE: verify_cgraph_node failed: inlined_to pointer set for noninline callers with -O2 -fno-early-inlining
  2010-08-30 19:02 [Bug tree-optimization/45453] New: [4.6 Regression] ICE: verify_cgraph_node failed: inlined_to pointer set for noninline callers with -O2 -fno-early-inlining zsojka at seznam dot cz
  2010-08-30 19:07 ` [Bug tree-optimization/45453] " zsojka at seznam dot cz
@ 2010-08-31  9:56 ` rguenth at gcc dot gnu dot org
  2010-09-02 11:26 ` rguenth at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-08-31  9:56 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from rguenth at gcc dot gnu dot org  2010-08-31 09:56 -------
Confirmed.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |hubicka at gcc dot gnu dot
                   |                            |org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2010-08-31 09:56:10
               date|                            |
   Target Milestone|---                         |4.6.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45453


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug tree-optimization/45453] [4.6 Regression] ICE: verify_cgraph_node failed: inlined_to pointer set for noninline callers with -O2 -fno-early-inlining
  2010-08-30 19:02 [Bug tree-optimization/45453] New: [4.6 Regression] ICE: verify_cgraph_node failed: inlined_to pointer set for noninline callers with -O2 -fno-early-inlining zsojka at seznam dot cz
  2010-08-30 19:07 ` [Bug tree-optimization/45453] " zsojka at seznam dot cz
  2010-08-31  9:56 ` rguenth at gcc dot gnu dot org
@ 2010-09-02 11:26 ` rguenth at gcc dot gnu dot org
  2010-09-16 17:37 ` hubicka at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-09-02 11:26 UTC (permalink / raw)
  To: gcc-bugs



-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |ice-checking, ice-on-valid-
                   |                            |code
           Priority|P3                          |P1


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45453


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug tree-optimization/45453] [4.6 Regression] ICE: verify_cgraph_node failed: inlined_to pointer set for noninline callers with -O2 -fno-early-inlining
  2010-08-30 19:02 [Bug tree-optimization/45453] New: [4.6 Regression] ICE: verify_cgraph_node failed: inlined_to pointer set for noninline callers with -O2 -fno-early-inlining zsojka at seznam dot cz
                   ` (2 preceding siblings ...)
  2010-09-02 11:26 ` rguenth at gcc dot gnu dot org
@ 2010-09-16 17:37 ` hubicka at gcc dot gnu dot org
  2010-09-17  1:09 ` hubicka at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2010-09-16 17:37 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from hubicka at gcc dot gnu dot org  2010-09-16 17:36 -------
Hmm, the problem is that foo is virtual self recursive function.
We inline it and then indirect inlining decide that it can devirtualize the
self recursive call since it knows the operand has proper type.
At that time we already removed the function from callgraph since all direct
calls was resolved, it is COMDAT and corresponding vtable is elsehwere.

We have options:
 1) Prevent devirtualization in this case
 2) Special case COMDAT virtual functions in inliner and prevent them from
being removed early
 3) Make inliner to re-invent nodes for those functions.

All solutions are sort of wrong.  I am leaning towards 2) with extra code
keeping virtual COMDAT till inlining stage (similarly as we do with extern
inlines) so possible indirect calls can be resolved.
Will give this a try.

Proper solution here is probably introduction of may edges...

Martin: Can we devirtualize the recursive call always based on fact that we go
to the function so it got to be of proper type?

Honza


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45453


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug tree-optimization/45453] [4.6 Regression] ICE: verify_cgraph_node failed: inlined_to pointer set for noninline callers with -O2 -fno-early-inlining
  2010-08-30 19:02 [Bug tree-optimization/45453] New: [4.6 Regression] ICE: verify_cgraph_node failed: inlined_to pointer set for noninline callers with -O2 -fno-early-inlining zsojka at seznam dot cz
                   ` (3 preceding siblings ...)
  2010-09-16 17:37 ` hubicka at gcc dot gnu dot org
@ 2010-09-17  1:09 ` hubicka at gcc dot gnu dot org
  2010-09-18 23:13 ` hubicka at gcc dot gnu dot org
  2010-09-18 23:14 ` hubicka at gcc dot gnu dot org
  6 siblings, 0 replies; 8+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2010-09-17  1:09 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from hubicka at gcc dot gnu dot org  2010-09-17 01:09 -------
patch posted.


-- 

hubicka at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |hubicka at gcc dot gnu dot
                   |dot org                     |org
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2010-08-31 09:56:10         |2010-09-17 01:09:17
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45453


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug tree-optimization/45453] [4.6 Regression] ICE: verify_cgraph_node failed: inlined_to pointer set for noninline callers with -O2 -fno-early-inlining
  2010-08-30 19:02 [Bug tree-optimization/45453] New: [4.6 Regression] ICE: verify_cgraph_node failed: inlined_to pointer set for noninline callers with -O2 -fno-early-inlining zsojka at seznam dot cz
                   ` (4 preceding siblings ...)
  2010-09-17  1:09 ` hubicka at gcc dot gnu dot org
@ 2010-09-18 23:13 ` hubicka at gcc dot gnu dot org
  2010-09-18 23:14 ` hubicka at gcc dot gnu dot org
  6 siblings, 0 replies; 8+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2010-09-18 23:13 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from hubicka at gcc dot gnu dot org  2010-09-18 23:13 -------
Subject: Bug 45453

Author: hubicka
Date: Sat Sep 18 23:13:17 2010
New Revision: 164405

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=164405
Log:

        PR tree-optimization/45453
        * cgraphunit.c (cgraph_finalize_function): Consider comdat & external
        virtual functions are reachable.
        * ipa-inline.c (cgraph_clone_inlined_nodes): Likewise.
        * ipa.c (cgraph_remove_unreachable_nodes): Likewise.
        * ipa-prop.c (ipa_modify_formal_parameters): Clear DECL_VIRTUAL_P
        when modifying function.

        * g++.dg/tree-ssa/pr45453.C: New testcase.

Added:
    trunk/gcc/testsuite/g++.dg/tree-ssa/pr45453.C
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cgraphunit.c
    trunk/gcc/ipa-inline.c
    trunk/gcc/ipa-prop.c
    trunk/gcc/ipa.c
    trunk/gcc/testsuite/ChangeLog


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45453


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug tree-optimization/45453] [4.6 Regression] ICE: verify_cgraph_node failed: inlined_to pointer set for noninline callers with -O2 -fno-early-inlining
  2010-08-30 19:02 [Bug tree-optimization/45453] New: [4.6 Regression] ICE: verify_cgraph_node failed: inlined_to pointer set for noninline callers with -O2 -fno-early-inlining zsojka at seznam dot cz
                   ` (5 preceding siblings ...)
  2010-09-18 23:13 ` hubicka at gcc dot gnu dot org
@ 2010-09-18 23:14 ` hubicka at gcc dot gnu dot org
  6 siblings, 0 replies; 8+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2010-09-18 23:14 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from hubicka at gcc dot gnu dot org  2010-09-18 23:13 -------
Fixed.


-- 

hubicka at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45453


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2010-09-18 23:14 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-30 19:02 [Bug tree-optimization/45453] New: [4.6 Regression] ICE: verify_cgraph_node failed: inlined_to pointer set for noninline callers with -O2 -fno-early-inlining zsojka at seznam dot cz
2010-08-30 19:07 ` [Bug tree-optimization/45453] " zsojka at seznam dot cz
2010-08-31  9:56 ` rguenth at gcc dot gnu dot org
2010-09-02 11:26 ` rguenth at gcc dot gnu dot org
2010-09-16 17:37 ` hubicka at gcc dot gnu dot org
2010-09-17  1:09 ` hubicka at gcc dot gnu dot org
2010-09-18 23:13 ` hubicka at gcc dot gnu dot org
2010-09-18 23:14 ` hubicka at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).