diff options
author | Jakub Jelinek <jakub@redhat.com> | 2009-01-15 09:07:38 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2009-01-15 09:07:38 +0100 |
commit | 0196c95ed418b0cd0f6c648018da34f947a76e90 (patch) | |
tree | df30f7de379a5cadc80eb495456de5a3b9f9d10b /gcc/tree-outof-ssa.c | |
parent | 6df6bcfa0fde9cc6413088d609f799188444f51b (diff) | |
download | gcc-0196c95ed418b0cd0f6c648018da34f947a76e90.zip gcc-0196c95ed418b0cd0f6c648018da34f947a76e90.tar.gz gcc-0196c95ed418b0cd0f6c648018da34f947a76e90.tar.bz2 |
re PR rtl-optimization/38245 (stack corruption when a call is removed but not the outgoing argument pushes)
PR rtl-optimization/38245
* calls.c (expand_call): Add stack arguments to
CALL_INSN_FUNCTION_USAGE even for pure calls (when
ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
in regs and partially in memory or BLKmode arguments.
(emit_library_call_value_1): Add stack arguments to
CALL_INSN_FUNCTION_USAGE even for pure calls (when
ACCUMULATE_OUTGOING_ARGS).
* dce.c: Include tm_p.h.
(find_call_stack_args): New function.
(deletable_insn_p): Call it for CALL_P insns. Add ARG_STORES
argument.
(mark_insn): Call find_call_stack_args for CALL_Ps.
(prescan_insns_for_dce): Walk insns backwards in bb rather than
forwards. Allocate and free arg_stores bitmap if needed, pass it
down to deletable_insn_p, don't mark stores set in arg_stores
bitmap, clear the bitmap at the beginning of each bb.
* Makefile.in (dce.o): Depend on $(TM_P_H).
* gcc.dg/pr38245-3.c: New test.
* gcc.dg/pr38245-3.h: New file.
* gcc.dg/pr38245-4.c: New file.
* gcc.dg/pr38364.c: New test.
From-SVN: r143387
Diffstat (limited to 'gcc/tree-outof-ssa.c')
0 files changed, 0 insertions, 0 deletions