From: Jim Wilson Date: Wed, 6 Apr 1994 22:50:58 +0000 (-0700) Subject: (emit_library_call_value): New variable is_const. X-Git-Tag: misc/cutover-egcs-0~6952 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d61bee9595a0eda88d18d5ecc0b2619c56dae086;p=thirdparty%2Fgcc.git (emit_library_call_value): New variable is_const. (emit_library_call_value): New variable is_const. Clear it for functions that return an aggregate in memory. From-SVN: r6991 --- diff --git a/gcc/calls.c b/gcc/calls.c index 1ac4fee5f1ba..a5246b177cc7 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -2411,6 +2411,7 @@ emit_library_call_value VPROTO((rtx orgfun, rtx value, int no_queue, int struct_value_size = 0; /* library calls are never indirect calls. */ int current_call_is_indirect = 0; + int is_const; VA_START (p, nargs); @@ -2422,12 +2423,16 @@ emit_library_call_value VPROTO((rtx orgfun, rtx value, int no_queue, nargs = va_arg (p, int); #endif + is_const = no_queue; fun = orgfun; /* If this kind of value comes back in memory, decide where in memory it should come back. */ if (aggregate_value_p (type_for_mode (outmode, 0))) { + /* This call returns a big structure. */ + is_const = 0; + #ifdef PCC_STATIC_STRUCT_RETURN rtx pointer_reg = hard_function_value (build_pointer_type (type_for_mode (outmode, 0)), @@ -2729,7 +2734,7 @@ emit_library_call_value VPROTO((rtx orgfun, rtx value, int no_queue, FUNCTION_ARG (args_so_far, VOIDmode, void_type_node, 1), (outmode != VOIDmode && mem_value == 0 ? hard_libcall_value (outmode) : NULL_RTX), - old_inhibit_defer_pop + 1, use_insns, no_queue); + old_inhibit_defer_pop + 1, use_insns, is_const); /* Now restore inhibit_defer_pop to its actual original value. */ OK_DEFER_POP;