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:
parent
831ecbd460
commit
79b9ec0ddb
@ -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.
|
||||
|
@ -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))++;
|
||||
|
Loading…
Reference in New Issue
Block a user