rtl-optimization/80960 - avoid creating garbage RTL in DSE
The following avoids repeatedly turning VALUE RTXen into sth useful and re-applying a constant offset through get_addr via DSE check_mem_read_rtx. Instead perform this once for all stores to be visited in check_mem_read_rtx. This avoids allocating 1.6GB of garbage PLUS RTXen on the PR80960 testcase, fixing the memory usage regression from old GCC. 2021-01-27 Richard Biener <rguenther@suse.de> PR rtl-optimization/80960 * dse.c (check_mem_read_rtx): Call get_addr on the offsetted address.
This commit is contained in:
parent
fbe37371cf
commit
a523add327
1 changed files with 5 additions and 0 deletions
|
@ -2219,6 +2219,11 @@ check_mem_read_rtx (rtx *loc, bb_info_t bb_info)
|
|||
}
|
||||
if (maybe_ne (offset, 0))
|
||||
mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset);
|
||||
/* Avoid passing VALUE RTXen as mem_addr to canon_true_dependence
|
||||
which will over and over re-create proper RTL and re-apply the
|
||||
offset above. See PR80960 where we almost allocate 1.6GB of PLUS
|
||||
RTXen that way. */
|
||||
mem_addr = get_addr (mem_addr);
|
||||
|
||||
if (group_id >= 0)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue