diff options
author | Easwaran Raman <eraman@google.com> | 2011-06-14 22:58:20 +0000 |
---|---|---|
committer | Easwaran Raman <eraman@gcc.gnu.org> | 2011-06-14 22:58:20 +0000 |
commit | d26c70902d9b43da2a717acae8046c63fc0ab0ae (patch) | |
tree | 662b41a9892d0c4bf66e9033dbc6f4d7251dc841 /gcc/tree.c | |
parent | d2393b3adbf064b100eab5050278d71302ce7d1d (diff) | |
download | gcc-d26c70902d9b43da2a717acae8046c63fc0ab0ae.zip gcc-d26c70902d9b43da2a717acae8046c63fc0ab0ae.tar.gz gcc-d26c70902d9b43da2a717acae8046c63fc0ab0ae.tar.bz2 |
re PR rtl-optimization/44194 (struct returned by value generates useless stores)
2011-06-14 Easwaran Raman <eraman@google.com>
PR rtl-optimization/44194
* dse.c: Include tree-flow.h
(insn_info): Add new field non_frame_wild_read.
(group_info): Add new fields escaped_n and escaped_p.
(kill_on_calls): New variable.
(get_group_info): Initialize gi->escaped_n and gi->escaped_p.
(dse_step0): Initialize kill_on_calls.
(can_escape): New function.
(set_usage_bits): Add additional parameter; record information
about escaped locations.
(record_store): Pass EXPR corresponding to MEM to
set_usage_bits.
(dse_step2_nospill): Set kill_on_calls based on
group->escaped_n and group->escaped_n.
(add_wild_read): Refactor into...
(reset_active_stores): ... New method, and
(free_read_records): ... New method.
(add_non_frame_wild_read): New method.
(scan_insn): Call add_non_frame_wild_read on non-const calls.
(scan_reads_nospill): Handle instructions with
non_frame_wild_read.
(dse_step5_nospill): Call scan_reads_nospill for instructions
marked as non_frame_wild_read.
(dse_step7): Free escaped_n, escaped_p and kill_on_calls
bitmaps.
testsuite/ChangeLog
2011-06-14 Easwaran Raman <eraman@google.com>
PR rtl-optimization/44194
* gcc.dg/pr44194-1.c: New test.
* gcc.dg/pr44194-2.c: New test.
From-SVN: r175063
Diffstat (limited to 'gcc/tree.c')
0 files changed, 0 insertions, 0 deletions