* [Bug middle-end/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
@ 2014-03-25 9:24 ` rguenth at gcc dot gnu.org
2014-03-25 15:05 ` jamborm at gcc dot gnu.org
` (15 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-03-25 9:24 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |4.9.0
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
2014-03-25 9:24 ` [Bug middle-end/60640] " rguenth at gcc dot gnu.org
@ 2014-03-25 15:05 ` jamborm at gcc dot gnu.org
2014-03-26 18:16 ` jamborm at gcc dot gnu.org
` (14 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: jamborm at gcc dot gnu.org @ 2014-03-25 15:05 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
Martin Jambor <jamborm at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2014-03-25
Assignee|unassigned at gcc dot gnu.org |jamborm at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #1 from Martin Jambor <jamborm at gcc dot gnu.org> ---
Confirmed, mine.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
2014-03-25 9:24 ` [Bug middle-end/60640] " rguenth at gcc dot gnu.org
2014-03-25 15:05 ` jamborm at gcc dot gnu.org
@ 2014-03-26 18:16 ` jamborm at gcc dot gnu.org
2014-03-28 12:06 ` jakub at gcc dot gnu.org
` (13 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: jamborm at gcc dot gnu.org @ 2014-03-26 18:16 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
--- Comment #2 from Martin Jambor <jamborm at gcc dot gnu.org> ---
Created attachment 32459
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32459&action=edit
Possible fix
The problem is that IPA-CP skips thunks when it redirects edges to the
new clones it produces.
I am currently testing this patch which duplicates thunks when
redirecting edges. It is quite possible it will have issues. In any
event, Honza, do you have any comments?
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
` (2 preceding siblings ...)
2014-03-26 18:16 ` jamborm at gcc dot gnu.org
@ 2014-03-28 12:06 ` jakub at gcc dot gnu.org
2014-03-28 12:17 ` jakub at gcc dot gnu.org
` (12 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-03-28 12:06 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P1
CC| |jakub at gcc dot gnu.org
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
` (3 preceding siblings ...)
2014-03-28 12:06 ` jakub at gcc dot gnu.org
@ 2014-03-28 12:17 ` jakub at gcc dot gnu.org
2014-03-28 12:38 ` jakub at gcc dot gnu.org
` (11 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-03-28 12:17 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Reduced testcase:
struct A {};
struct E { ~E (); };
struct B { virtual unsigned foo () const; };
struct C { virtual void foo (); };
struct D : public A { D (A *); };
struct I : public D { A i; I (int) : D (0) {} };
struct F : E { virtual unsigned foo (bool) const; };
template <class T>
struct G : public T {};
struct J : C, public F {};
struct K : public J { unsigned foo (bool) const { return 0; } };
struct H : B
{
H (A);
unsigned foo () const { return bar ().foo (0); }
const F &bar () const { return h; }
G<K> h;
};
template <class T>
void
baz ()
{
I f (0);
T d (f);
}
void
test ()
{
baz<H> ();
}
Regressed with r205019.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
` (4 preceding siblings ...)
2014-03-28 12:17 ` jakub at gcc dot gnu.org
@ 2014-03-28 12:38 ` jakub at gcc dot gnu.org
2014-03-28 12:44 ` jakub at gcc dot gnu.org
` (10 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-03-28 12:38 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
That is still too big, here is a smaller one:
struct B { virtual unsigned f () const; };
struct C { virtual void f (); };
struct F { virtual unsigned f (bool) const; ~F (); };
struct J : C, F {};
struct G : J { unsigned f (bool) const { return 0; } };
struct H : B
{
H (int);
unsigned f () const { return ((const F &) h).f (0); }
G h;
};
H h (0);
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
` (5 preceding siblings ...)
2014-03-28 12:38 ` jakub at gcc dot gnu.org
@ 2014-03-28 12:44 ` jakub at gcc dot gnu.org
2014-03-28 17:34 ` jamborm at gcc dot gnu.org
` (9 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-03-28 12:44 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #4)
> That is still too big, here is a smaller one:
> struct B { virtual unsigned f () const; };
> struct C { virtual void f (); };
> struct F { virtual unsigned f (bool) const; ~F (); };
> struct J : C, F {};
> struct G : J { unsigned f (bool) const { return 0; } };
> struct H : B
> {
> H (int);
> unsigned f () const { return ((const F &) h).f (0); }
> G h;
> };
> H h (0);
Though, on this reduced testcase the ICE started with r176424, i.e. making it a
4.7/4.8/4.9 Regression on that testcase.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
` (6 preceding siblings ...)
2014-03-28 12:44 ` jakub at gcc dot gnu.org
@ 2014-03-28 17:34 ` jamborm at gcc dot gnu.org
2014-03-28 18:13 ` jakub at gcc dot gnu.org
` (8 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: jamborm at gcc dot gnu.org @ 2014-03-28 17:34 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
--- Comment #6 from Martin Jambor <jamborm at gcc dot gnu.org> ---
I added the newest testcase to the patch a proposed it on the mailing list:
http://gcc.gnu.org/ml/gcc-patches/2014-03/msg01640.html
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
` (7 preceding siblings ...)
2014-03-28 17:34 ` jamborm at gcc dot gnu.org
@ 2014-03-28 18:13 ` jakub at gcc dot gnu.org
2014-04-01 12:35 ` jamborm at gcc dot gnu.org
` (7 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-03-28 18:13 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Martin Jambor from comment #6)
> I added the newest testcase to the patch a proposed it on the mailing list:
>
> http://gcc.gnu.org/ml/gcc-patches/2014-03/msg01640.html
I still see the old testcase only there ;).
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
` (8 preceding siblings ...)
2014-03-28 18:13 ` jakub at gcc dot gnu.org
@ 2014-04-01 12:35 ` jamborm at gcc dot gnu.org
2014-04-01 13:02 ` jamborm at gcc dot gnu.org
` (6 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: jamborm at gcc dot gnu.org @ 2014-04-01 12:35 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
--- Comment #8 from Martin Jambor <jamborm at gcc dot gnu.org> ---
Created attachment 32513
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32513&action=edit
Miscompiled run time testcase
(In reply to Jakub Jelinek from comment #7)
>
> I still see the old testcase only there ;).
Yeah, I forgot to refresh the patch, but I do have it in my copy. I'm
also adding this one.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
` (9 preceding siblings ...)
2014-04-01 12:35 ` jamborm at gcc dot gnu.org
@ 2014-04-01 13:02 ` jamborm at gcc dot gnu.org
2014-04-02 16:11 ` jamborm at gcc dot gnu.org
` (5 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: jamborm at gcc dot gnu.org @ 2014-04-01 13:02 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
--- Comment #9 from Martin Jambor <jamborm at gcc dot gnu.org> ---
This one has them all, in addition to fixing a real problem:
http://gcc.gnu.org/ml/gcc-patches/2014-04/msg00016.html
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
` (10 preceding siblings ...)
2014-04-01 13:02 ` jamborm at gcc dot gnu.org
@ 2014-04-02 16:11 ` jamborm at gcc dot gnu.org
2014-04-02 16:12 ` jamborm at gcc dot gnu.org
` (4 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: jamborm at gcc dot gnu.org @ 2014-04-02 16:11 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
--- Comment #10 from Martin Jambor <jamborm at gcc dot gnu.org> ---
Created attachment 32523
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32523&action=edit
Proposed patch for the 4.8 branch
Independent of the trunk fix, I'm going to propose this simple patch
which disables propagation through thunks for the 4.8 branch. It
passes bootstrap and testsuite on x86_64-linux.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
` (11 preceding siblings ...)
2014-04-02 16:11 ` jamborm at gcc dot gnu.org
@ 2014-04-02 16:12 ` jamborm at gcc dot gnu.org
2014-04-04 14:11 ` [Bug ipa/60640] " jamborm at gcc dot gnu.org
` (3 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: jamborm at gcc dot gnu.org @ 2014-04-02 16:12 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
--- Comment #11 from Martin Jambor <jamborm at gcc dot gnu.org> ---
Created attachment 32524
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32524&action=edit
Proposed patch for the 4.7 branch
Independent of the trunk fix, I'm going to propose this simple patch
which disables propagation through thunks for the 4.7 branch. It
passes bootstrap and testsuite on x86_64-linux.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug ipa/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
` (12 preceding siblings ...)
2014-04-02 16:12 ` jamborm at gcc dot gnu.org
@ 2014-04-04 14:11 ` jamborm at gcc dot gnu.org
2014-04-04 15:33 ` jamborm at gcc dot gnu.org
` (2 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: jamborm at gcc dot gnu.org @ 2014-04-04 14:11 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
--- Comment #12 from Martin Jambor <jamborm at gcc dot gnu.org> ---
Author: jamborm
Date: Fri Apr 4 14:11:06 2014
New Revision: 209097
URL: http://gcc.gnu.org/viewcvs?rev=209097&root=gcc&view=rev
Log:
2014-04-04 Martin Jambor <mjambor@suse.cz>
PR ipa/60640
* cgraph.h (cgraph_clone_node): New parameter added to declaration.
Adjust all callers.
* cgraph.c (clone_of_p): Also return true if thunks match.
(verify_edge_corresponds_to_fndecl): Removed extraneous call to
cgraph_function_or_thunk_node and an obsolete comment.
* cgraphclones.c (build_function_type_skip_args): Moved upwards in the
file.
(build_function_decl_skip_args): Likewise.
(set_new_clone_decl_and_node_flags): New function.
(duplicate_thunk_for_node): Likewise.
(redirect_edge_duplicating_thunks): Likewise.
(cgraph_clone_node): New parameter args_to_skip, pass it to
redirect_edge_duplicating_thunks which is called instead of
cgraph_redirect_edge_callee.
(cgraph_create_virtual_clone): Pass args_to_skip to cgraph_clone_node,
moved setting of a lot of flags to set_new_clone_decl_and_node_flags.
testsuite/
* g++.dg/ipa/pr60640-1.C: New test.
* g++.dg/ipa/pr60640-2.C: Likewise.
* g++.dg/ipa/pr60640-3.C: Likewise.
* g++.dg/ipa/pr60640-4.C: Likewise.
Added:
trunk/gcc/testsuite/g++.dg/ipa/pr60640-1.C
trunk/gcc/testsuite/g++.dg/ipa/pr60640-2.C
trunk/gcc/testsuite/g++.dg/ipa/pr60640-3.C
trunk/gcc/testsuite/g++.dg/ipa/pr60640-4.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/cgraph.c
trunk/gcc/cgraph.h
trunk/gcc/cgraphclones.c
trunk/gcc/ipa-inline-transform.c
trunk/gcc/ipa-inline.c
trunk/gcc/lto-cgraph.c
trunk/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug ipa/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
` (13 preceding siblings ...)
2014-04-04 14:11 ` [Bug ipa/60640] " jamborm at gcc dot gnu.org
@ 2014-04-04 15:33 ` jamborm at gcc dot gnu.org
2014-04-07 9:55 ` jamborm at gcc dot gnu.org
2014-04-07 9:59 ` jamborm at gcc dot gnu.org
16 siblings, 0 replies; 18+ messages in thread
From: jamborm at gcc dot gnu.org @ 2014-04-04 15:33 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
Martin Jambor <jamborm at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
URL| |http://gcc.gnu.org/ml/gcc-p
| |atches/2014-04/msg00208.htm
| |l
--- Comment #13 from Martin Jambor <jamborm at gcc dot gnu.org> ---
Fixed on trunk with
http://gcc.gnu.org/ml/gcc-patches/2014-04/msg00208.html
I have posted the patch for the 4.8 branch:
http://gcc.gnu.org/ml/gcc-patches/2014-04/msg00213.html
and also for the 4.7 branch:
http://gcc.gnu.org/ml/gcc-patches/2014-04/msg00215.html
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug ipa/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
` (14 preceding siblings ...)
2014-04-04 15:33 ` jamborm at gcc dot gnu.org
@ 2014-04-07 9:55 ` jamborm at gcc dot gnu.org
2014-04-07 9:59 ` jamborm at gcc dot gnu.org
16 siblings, 0 replies; 18+ messages in thread
From: jamborm at gcc dot gnu.org @ 2014-04-07 9:55 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
--- Comment #15 from Martin Jambor <jamborm at gcc dot gnu.org> ---
Author: jamborm
Date: Mon Apr 7 09:54:55 2014
New Revision: 209181
URL: http://gcc.gnu.org/viewcvs?rev=209181&root=gcc&view=rev
Log:
2014-04-07 Martin Jambor <mjambor@suse.cz>
PR ipa/60640
* ipa-cp.c (propagate_constants_accross_call): Do not propagate
accross thunks.
testsuite/
* g++.dg/ipa/pr60640-1.C: New test.
* g++.dg/ipa/pr60640-2.C: Likewise.
* g++.dg/ipa/pr60640-3.C: Likewise.
Added:
branches/gcc-4_7-branch/gcc/testsuite/g++.dg/ipa/pr60640-1.C
branches/gcc-4_7-branch/gcc/testsuite/g++.dg/ipa/pr60640-2.C
branches/gcc-4_7-branch/gcc/testsuite/g++.dg/ipa/pr60640-3.C
Modified:
branches/gcc-4_7-branch/gcc/ChangeLog
branches/gcc-4_7-branch/gcc/ipa-cp.c
branches/gcc-4_7-branch/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug ipa/60640] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
2014-03-24 20:45 [Bug middle-end/60640] New: [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed burnus at gcc dot gnu.org
` (15 preceding siblings ...)
2014-04-07 9:55 ` jamborm at gcc dot gnu.org
@ 2014-04-07 9:59 ` jamborm at gcc dot gnu.org
16 siblings, 0 replies; 18+ messages in thread
From: jamborm at gcc dot gnu.org @ 2014-04-07 9:59 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60640
Martin Jambor <jamborm at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
--- Comment #16 from Martin Jambor <jamborm at gcc dot gnu.org> ---
Fixed everywhere.
^ permalink raw reply [flat|nested] 18+ messages in thread