diff options
author | J"orn Rennecke <joern.rennecke@superh.com> | 2002-07-23 11:18:10 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 2002-07-23 12:18:10 +0100 |
commit | a0dc500c860478e0917fd98ad618ec65482fe395 (patch) | |
tree | e7882531616e61e8b0a4d006713325e3afa972db /gcc/calls.c | |
parent | 1e7a2d3fd5f519570dd4ba7c35b790c087543821 (diff) | |
download | gcc-a0dc500c860478e0917fd98ad618ec65482fe395.tar.gz |
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
Diffstat (limited to 'gcc/calls.c')
-rw-r--r-- | gcc/calls.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/calls.c b/gcc/calls.c index 6abeacee02c..144d7b1188b 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) |