re PR ipa/79776 (ICE on valid code in insert_vi_for_tree, at tree-ssa-structalias.c:2807)
2017-03-27 Richard Biener <rguenther@suse.de> PR ipa/79776 * tree-ssa-structalias.c (associate_varinfo_to_alias): Skip inlined thunk clones. * g++.dg/ipa/pr79776.C: New testcase. From-SVN: r246494
This commit is contained in:
parent
7cd200f63f
commit
c5e5f5f642
@ -1,3 +1,9 @@
|
||||
2017-03-27 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR ipa/79776
|
||||
* tree-ssa-structalias.c (associate_varinfo_to_alias): Skip
|
||||
inlined thunk clones.
|
||||
|
||||
2017-03-27 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR sanitizer/80168
|
||||
|
@ -1,3 +1,8 @@
|
||||
2017-03-27 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR ipa/79776
|
||||
* g++.dg/ipa/pr79776.C: New testcase.
|
||||
|
||||
2017-03-27 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR sanitizer/80168
|
||||
|
29
gcc/testsuite/g++.dg/ipa/pr79776.C
Normal file
29
gcc/testsuite/g++.dg/ipa/pr79776.C
Normal file
@ -0,0 +1,29 @@
|
||||
// PR ipa/71146
|
||||
// { dg-do compile }
|
||||
// { dg-options "-O3 -fipa-pta" }
|
||||
|
||||
typedef enum { X } E;
|
||||
struct A {
|
||||
virtual void bar ();
|
||||
};
|
||||
struct B {
|
||||
virtual E fn (const char *, int, int *) = 0;
|
||||
};
|
||||
struct C : A, B {
|
||||
E fn (const char *, int, int *);
|
||||
void fn2 ();
|
||||
B *foo;
|
||||
};
|
||||
void C::fn2 () {
|
||||
if (!foo)
|
||||
return;
|
||||
foo->fn (0, 0, 0);
|
||||
}
|
||||
E
|
||||
C::fn (const char *, int, int *)
|
||||
{
|
||||
fn2 ();
|
||||
foo = 0;
|
||||
fn (0, 0, 0);
|
||||
return X;
|
||||
}
|
@ -7615,7 +7615,9 @@ struct pt_solution ipa_escaped_pt
|
||||
static bool
|
||||
associate_varinfo_to_alias (struct cgraph_node *node, void *data)
|
||||
{
|
||||
if ((node->alias || node->thunk.thunk_p)
|
||||
if ((node->alias
|
||||
|| (node->thunk.thunk_p
|
||||
&& ! node->global.inlined_to))
|
||||
&& node->analyzed)
|
||||
insert_vi_for_tree (node->decl, (varinfo_t)data);
|
||||
return false;
|
||||
|
Loading…
Reference in New Issue
Block a user