From: J"orn Rennecke Date: Tue, 23 Jul 2002 11:18:10 +0000 (+0000) Subject: calls.c (emit_library_call_value_1): If FUNCTION_ARG_PASS_BY_REFERENCE is true... X-Git-Tag: releases/gcc-3.3.0~3691 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a0dc500c860478e0917fd98ad618ec65482fe395;p=thirdparty%2Fgcc.git calls.c (emit_library_call_value_1): If FUNCTION_ARG_PASS_BY_REFERENCE is true... * calls.c (emit_library_call_value_1): If FUNCTION_ARG_PASS_BY_REFERENCE is true, pretend this is neither libcall, const call nor pure call. From-SVN: r55676 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c3699818819a..38059195fdff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Tue Jul 23 12:16:58 2002 J"orn Rennecke + + * calls.c (emit_library_call_value_1): If + FUNCTION_ARG_PASS_BY_REFERENCE is true, pretend this is neither + libcall, const call nor pure call. + 2002-07-23 Neil Booth * config/m88k/m88k.h (SECTION_ASM_OP): Remove. diff --git a/gcc/calls.c b/gcc/calls.c index 6abeacee02c8..144d7b1188b0 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -3678,6 +3678,16 @@ emit_library_call_value_1 (retval, orgfun, value, fn_type, outmode, nargs, p) #endif ; + /* loop.c won't look at CALL_INSN_FUNCTION_USAGE of const/pure + functions, so we have to pretend this isn't such a function. */ + if (flags & ECF_LIBCALL_BLOCK) + { + rtx insns = get_insns (); + end_sequence (); + emit_insn (insns); + } + flags &= ~(ECF_CONST | ECF_PURE | ECF_LIBCALL_BLOCK); + if (GET_MODE (val) == MEM && ! must_copy) slot = val; else if (must_copy)