diff options
Diffstat (limited to 'gcc/cp/semantics.c')
-rw-r--r-- | gcc/cp/semantics.c | 32 |
1 files changed, 3 insertions, 29 deletions
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index c561a66..e2428a9 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -2271,35 +2271,9 @@ emit_associated_thunks (fn) enabling you to output all the thunks with the function itself. */ if (DECL_VIRTUAL_P (fn)) { - tree binfo; - tree v; - - for (binfo = TYPE_BINFO (DECL_CONTEXT (fn)); - binfo; - binfo = TREE_CHAIN (binfo)) - for (v = BINFO_VIRTUALS (binfo); v; v = TREE_CHAIN (v)) - if (BV_FN (v) == fn - && (!integer_zerop (BV_DELTA (v)) - || BV_USE_VCALL_INDEX_P (v))) - { - tree thunk; - tree vcall_index; - - if (BV_USE_VCALL_INDEX_P (v)) - { - vcall_index = BV_VCALL_INDEX (v); - my_friendly_assert (vcall_index != NULL_TREE, 20000621); - } - else - vcall_index = NULL_TREE; - - thunk = make_thunk (build1 (ADDR_EXPR, - vfunc_ptr_type_node, - fn), - BV_DELTA (v), - vcall_index); - use_thunk (thunk, /*emit_p=*/1); - } + tree thunk; + for (thunk = DECL_THUNKS (fn); thunk; thunk = TREE_CHAIN (thunk)) + use_thunk (thunk, /*emit_p=*/1); } } |