Commit 4d3eb89a by Hans-Peter Nilsson Committed by Hans-Peter Nilsson

gcse.c (compute_ld_motion_mems): For MEM destinations...

	* gcse.c (compute_ld_motion_mems): For MEM destinations, only
	consider those to be movable where the source matches
	want_to_gcse_p.
	(update_ld_motion_stores): In comment, refer to
	compute_ld_motion_mems for validity of replacement.

From-SVN: r65766
parent dc93be8d
2003-04-18 Hans-Peter Nilsson <hp@bitrange.com>
* gcse.c (compute_ld_motion_mems): For MEM destinations, only
consider those to be movable where the source matches
want_to_gcse_p.
(update_ld_motion_stores): In comment, refer to
compute_ld_motion_mems for validity of replacement.
Fri Apr 18 01:28:51 CEST 2003 Jan Hubicka <jh@suse.cz> Fri Apr 18 01:28:51 CEST 2003 Jan Hubicka <jh@suse.cz>
* gcov-dump.c (tag_summary): Remove max_sum * gcov-dump.c (tag_summary): Remove max_sum
......
...@@ -6771,11 +6771,13 @@ invalidate_any_buried_refs (x) ...@@ -6771,11 +6771,13 @@ invalidate_any_buried_refs (x)
} }
} }
/* Find all the 'simple' MEMs which are used in LOADs and STORES. Simple /* Find all the 'simple' MEMs which are used in LOADs and STORES. Simple
being defined as MEM loads and stores to symbols, with no being defined as MEM loads and stores to symbols, with no side effects
side effects and no registers in the expression. If there are any and no registers in the expression. For a MEM destination, we also
uses/defs which don't match this criteria, it is invalidated and check that the insn is still valid if we replace the destination with a
trimmed out later. */ REG, as is done in update_ld_motion_stores. If there are any uses/defs
which don't match this criteria, they are invalidated and trimmed out
later. */
static void static void
compute_ld_motion_mems () compute_ld_motion_mems ()
...@@ -6823,7 +6825,10 @@ compute_ld_motion_mems () ...@@ -6823,7 +6825,10 @@ compute_ld_motion_mems ()
ptr = ldst_entry (dest); ptr = ldst_entry (dest);
if (GET_CODE (src) != MEM if (GET_CODE (src) != MEM
&& GET_CODE (src) != ASM_OPERANDS) && GET_CODE (src) != ASM_OPERANDS
/* Check for REG manually since want_to_gcse_p
returns 0 for all REGs. */
&& (REG_P (src) || want_to_gcse_p (src)))
ptr->stores = alloc_INSN_LIST (insn, ptr->stores); ptr->stores = alloc_INSN_LIST (insn, ptr->stores);
else else
ptr->invalid = 1; ptr->invalid = 1;
...@@ -6918,10 +6923,10 @@ update_ld_motion_stores (expr) ...@@ -6918,10 +6923,10 @@ update_ld_motion_stores (expr)
matter to set the reaching reg everywhere... some might be matter to set the reaching reg everywhere... some might be
dead and should be eliminated later. */ dead and should be eliminated later. */
/* We replace SET mem = expr with /* We replace (set mem expr) with (set reg expr) (set mem reg)
SET reg = expr where reg is the reaching reg used in the load. We checked in
SET mem = reg , where reg is the compute_ld_motion_mems that we can replace (set mem expr) with
reaching reg used in the load. */ (set reg expr) in that insn. */
rtx list = mem_ptr->stores; rtx list = mem_ptr->stores;
for ( ; list != NULL_RTX; list = XEXP (list, 1)) for ( ; list != NULL_RTX; list = XEXP (list, 1))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment