2015-12-15 Martin Jambor <mjambor@suse.cz>
PR ipa/68851
* cgraph.c (collect_callers_of_node_1): Do not collect thunks.
* cgraph.h (cgraph_node): Change comment of collect_callers.
testsuite/
* g++.dg/ipa/pr68851.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@231648
138bc75d-0d04-0410-961f-
82ee72b054a4
+2015-12-15 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/68851
+ * cgraph.c (collect_callers_of_node_1): Do not collect thunks.
+ * cgraph.h (cgraph_node): Change comment of collect_callers.
+
2015-12-15 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/66688
if (avail > AVAIL_INTERPOSABLE)
for (cs = node->callers; cs != NULL; cs = cs->next_caller)
- if (!cs->indirect_inlining_edge)
+ if (!cs->indirect_inlining_edge
+ && !cs->caller->thunk.thunk_p)
redirect_callers->safe_push (cs);
return false;
}
cgraph_edge *get_edge (gimple *call_stmt);
/* Collect all callers of cgraph_node and its aliases that are known to lead
- to NODE (i.e. are not overwritable). */
+ to NODE (i.e. are not overwritable) and that are not thunks. */
vec<cgraph_edge *> collect_callers (void);
/* Remove all callers from the node. */
+2015-12-15 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/68851
+ * g++.dg/ipa/pr68851.C: New test.
+
2015-12-15 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/63506
--- /dev/null
+// { dg-do compile }
+// { dg-options "-O3" }
+
+class A;
+class B {
+public:
+ operator A *() const;
+};
+class A {
+public:
+ virtual bool isFormControlElement() const {}
+};
+class C {
+ struct D {
+ B element;
+ };
+ bool checkPseudoClass(const D &, int &) const;
+};
+class F {
+ virtual bool isFormControlElement() const;
+};
+class G : A, F {
+ bool isFormControlElement() const {}
+};
+bool C::checkPseudoClass(const D &p1, int &) const {
+ A &a = *p1.element;
+ a.isFormControlElement();
+ a.isFormControlElement() || a.isFormControlElement();
+}