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
+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
+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
--- /dev/null
+// 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;
+}
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;