Commit 79b9ec0d by Richard Kenner Committed by Richard Kenner

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
parent 831ecbd4
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.
......
......@@ -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))++;
......
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