+2016-01-08 Martin Jambor <mjambor@suse.cz>
+
+ Backport from mainline
+ 2015-12-15 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/68851
+ * cgraph.c (collect_callers_of_node_1): Do not collect thunks.
+ (collect_callers): Change comment.
+
2015-12-25 Andreas Tobler <andreast@gcc.gnu.org>
Backport from mainline
if (avail > AVAIL_OVERWRITABLE)
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;
}
/* Collect all callers of NODE and its aliases that are known to lead to NODE
- (i.e. are not overwritable). */
+ (i.e. are not overwritable) and that are not thunks. */
vec<cgraph_edge_p>
collect_callers_of_node (struct cgraph_node *node)
+2016-01-08 Martin Jambor <mjambor@suse.cz>
+
+ Backport from mainline
+ 2015-12-15 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/68851
+ * g++.dg/ipa/pr68851.C: New test.
+
2015-12-22 Peter Bergner <bergner@vnet.ibm.com>
Backport from mainline
--- /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();
+}