From: Alexandre Oliva Date: Sun, 10 Jun 2001 21:50:40 +0000 (+0000) Subject: typeck.c (get_member_function_from_ptrfunc): Don't clobber delta. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=eb2d06144aede2d0cef5e937b2f4c40b30d35ead;p=gcc.git typeck.c (get_member_function_from_ptrfunc): Don't clobber delta. * typeck.c (get_member_function_from_ptrfunc) [vbit_in_delta]: Don't clobber delta. (expand_ptrmemfunc_cst) [ptrmemfunc_vbit_in_delta]: Adjust pfn. From-SVN: r43156 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f4527206cb7..02fb550c69a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2001-06-10 Alexandre Oliva + + * typeck.c (get_member_function_from_ptrfunc) [vbit_in_delta]: + Don't clobber delta. + (expand_ptrmemfunc_cst) [ptrmemfunc_vbit_in_delta]: Adjust pfn. + 2001-06-10 Mark Mitchell Gabriel Dos Reis diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 3c2ea8d9666..38deeeecad0 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -2937,9 +2937,6 @@ get_member_function_from_ptrfunc (instance_ptrptr, function) abort (); } - delta = cp_convert (ptrdiff_type_node, - build_component_ref (function, delta_identifier, - NULL_TREE, 0)); /* DELTA2 is the amount by which to adjust the `this' pointer to find the vtbl. */ delta2 = delta; @@ -6175,12 +6172,12 @@ expand_ptrmemfunc_cst (cst, delta, pfn) ptrmemfunc_vbit_in_delta, in which case delta is shifted left, and then incremented). */ *pfn = DECL_VINDEX (fn); + *pfn = fold (build (MULT_EXPR, integer_type_node, *pfn, + TYPE_SIZE_UNIT (vtable_entry_type))); switch (TARGET_PTRMEMFUNC_VBIT_LOCATION) { case ptrmemfunc_vbit_in_pfn: - *pfn = fold (build (MULT_EXPR, integer_type_node, *pfn, - TYPE_SIZE_UNIT (vtable_entry_type))); *pfn = fold (build (PLUS_EXPR, integer_type_node, *pfn, integer_one_node)); break;