re PR rtl-optimization/21848 (load_mems / replace_loop_mems bug causes miscompilation of jcf-io.c / SEGV while processing java/lang/AbstractMethodError)
PR rtl-optimization/21848 * calls.c (emit_library_call_value_1): For const functions, add USEs of the stack slots to CALL_INSN_FUNCTION_USAGE. From-SVN: r102281
This commit is contained in:
parent
29c1846ba3
commit
475a3eef78
@ -1,5 +1,9 @@
|
||||
2005-07-22 J"orn Rennecke <joern.rennecke@st.com>
|
||||
|
||||
PR rtl-optimization/21848
|
||||
* calls.c (emit_library_call_value_1): For const functions, add
|
||||
USEs of the stack slots to CALL_INSN_FUNCTION_USAGE.
|
||||
|
||||
PR rtl-optimization/22445
|
||||
* cselib.c (target.h): Include.
|
||||
(rtx_equal_for_cselib_p): Allow commutative matches.
|
||||
|
22
gcc/calls.c
22
gcc/calls.c
@ -3623,6 +3623,28 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value,
|
||||
stack_usage_map[i] = 1;
|
||||
|
||||
NO_DEFER_POP;
|
||||
|
||||
if (flags & ECF_CONST)
|
||||
{
|
||||
rtx use;
|
||||
|
||||
/* Indicate argument access so that alias.c knows that these
|
||||
values are live. */
|
||||
if (argblock)
|
||||
use = plus_constant (argblock,
|
||||
argvec[argnum].locate.offset.constant);
|
||||
else
|
||||
/* When arguemnts are pushed, trying to tell alias.c where
|
||||
exactly this argument is won't work, because the
|
||||
auto-increment causes confusion. So we merely indicate
|
||||
that we access something with a known mode somewhere on
|
||||
the stack. */
|
||||
use = gen_rtx_PLUS (Pmode, virtual_outgoing_args_rtx,
|
||||
gen_rtx_SCRATCH (Pmode));
|
||||
use = gen_rtx_MEM (argvec[argnum].mode, use);
|
||||
use = gen_rtx_USE (VOIDmode, use);
|
||||
call_fusage = gen_rtx_EXPR_LIST (VOIDmode, use, call_fusage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user