This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/44194] struct returned by value generates useless stores
- From: "eraman at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 02 Nov 2012 00:28:45 +0000
- Subject: [Bug rtl-optimization/44194] struct returned by value generates useless stores
- Auto-submitted: auto-generated
- References: <bug-44194-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44194
--- Comment #50 from eraman at gcc dot gnu.org 2012-11-02 00:28:45 UTC ---
Author: eraman
Date: Fri Nov 2 00:28:40 2012
New Revision: 193085
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=193085
Log:
Backport 191302 and 192651 from trunk:
2012-09-14 Eric Botcazou <ebotcazou@adacore.com>
PR rtl-optimization/44194
* calls.c (expand_call): In the PARALLEL case, copy the return value
into pseudos instead of spilling it onto the stack.
* emit-rtl.c (adjust_address_1): Rename ADJUST into ADJUST_ADDRESS and
add new ADJUST_OBJECT parameter.
If ADJUST_OBJECT is set, drop the underlying object if it cannot be
proved that the adjusted memory access is still within its bounds.
(adjust_automodify_address_1): Adjust call to adjust_address_1.
(widen_memory_access): Likewise.
* expmed.c (store_bit_field_1): Call adjust_bitfield_address instead
of adjust_address. Do not drop the underlying object of a MEM.
(store_fixed_bit_field): Likewise.
(extract_bit_field_1): Likewise. Fix oversight in recursion.
(extract_fixed_bit_field): Likewise.
* expr.h (adjust_address_1): Adjust prototype.
(adjust_address): Adjust call to adjust_address_1.
(adjust_address_nv): Likewise.
(adjust_bitfield_address): New macro.
(adjust_bitfield_address_nv): Likewise.
* expr.c (expand_assignment): Handle a PARALLEL in more cases.
(store_expr): Likewise.
(store_field): Likewise.
* dse.c: Fix typos in the head comment.
2012-10-21 Eric Botcazou <ebotcazou@adacore.com>
PR rtl-optimization/44194
* calls.c (expand_call): Allow sibling calls in the PARALLEL case.
gcc/testsuite/ChangeLog:
2012-09-14 Eric Botcazou <ebotcazou@adacore.com>
* gcc.dg/pr44194-1.c: Check that there are no memory accesses left.
Modified:
branches/google/gcc-4_7/gcc/ChangeLog.google-4_7
branches/google/gcc-4_7/gcc/calls.c
branches/google/gcc-4_7/gcc/dse.c
branches/google/gcc-4_7/gcc/emit-rtl.c
branches/google/gcc-4_7/gcc/expmed.c
branches/google/gcc-4_7/gcc/expr.c
branches/google/gcc-4_7/gcc/expr.h
branches/google/gcc-4_7/gcc/testsuite/ChangeLog.google-4_7
branches/google/gcc-4_7/gcc/testsuite/gcc.dg/pr44194-1.c