regclass.c (max_set_parallel): New variable.

* regclass.c (max_set_parallel): New variable.
	(reg_scan): Take it into account in computation of max_parallel.
	(reg_scan_mark_refs, case SET): Compute it.

From-SVN: r39140
This commit is contained in:
Richard Kenner 2001-01-19 18:09:17 +00:00 committed by Richard Kenner
parent 831ecbd460
commit 79b9ec0ddb
2 changed files with 20 additions and 1 deletions

View File

@ -1,5 +1,9 @@
Fri Jan 19 13:02:56 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* regclass.c (max_set_parallel): New variable.
(reg_scan): Take it into account in computation of max_parallel.
(reg_scan_mark_refs, case SET): Compute it.
* alias.c (rtx_equal_for_memref_p, case ADDRESSOF): Don't assume
args are REG.
* expr.c (store_constructor): Don't look at MEM_ALIAS_SET unless MEM.

View File

@ -2188,10 +2188,17 @@ free_reg_info ()
/* Maximum number of parallel sets and clobbers in any insn in this fn.
Always at least 3, since the combiner could put that many together
and we want this to remain correct for all the remaining passes. */
and we want this to remain correct for all the remaining passes.
This corresponds to the maximum number of times note_stores will call
a function for any insn. */
int max_parallel;
/* Used as a temporary to record the largest number of registers in
PARALLEL in a SET_DEST. This is added to max_parallel. */
static int max_set_parallel;
void
reg_scan (f, nregs, repeat)
rtx f;
@ -2202,6 +2209,7 @@ reg_scan (f, nregs, repeat)
allocate_reg_info (nregs, TRUE, FALSE);
max_parallel = 3;
max_set_parallel = 0;
for (insn = f; insn; insn = NEXT_INSN (insn))
if (GET_CODE (insn) == INSN
@ -2216,6 +2224,8 @@ reg_scan (f, nregs, repeat)
if (REG_NOTES (insn))
reg_scan_mark_refs (REG_NOTES (insn), insn, 1, 0);
}
max_parallel += max_set_parallel;
}
/* Update 'regscan' information by looking at the insns
@ -2313,6 +2323,11 @@ reg_scan_mark_refs (x, insn, note_flag, min_regno)
dest = XEXP (dest, 0))
;
/* For a PARALLEL, record the number of things (less the usual one for a
SET) that are set. */
if (GET_CODE (dest) == PARALLEL)
max_set_parallel = MAX (max_set_parallel, XVECLEN (dest, 0) - 1);
if (GET_CODE (dest) == REG
&& REGNO (dest) >= min_regno)
REG_N_SETS (REGNO (dest))++;