global.c (global_conflicts): Update comments.

* global.c (global_conflicts): Update comments.
        (record_conflicts): No need to record conflicts between pseudos here.

From-SVN: r30492
This commit is contained in:
Jeffrey A Law 1999-11-12 01:56:17 +00:00 committed by Jeff Law
parent e55b279b6d
commit bdc24974c8
2 changed files with 32 additions and 6 deletions

View File

@ -1,3 +1,8 @@
Thu Nov 11 18:54:24 1999 Jeffrey A Law (law@cygnus.com)
* global.c (global_conflicts): Update comments.
(record_conflicts): No need to record conflicts between pseudos here.
Thu Nov 11 12:42:11 MST 1999 Diego Novillo <dnovillo@cygnus.com>
* gcc/cp/init.c (init_init_processing): Header information for

View File

@ -673,7 +673,8 @@ global_conflicts ()
/* Initialize table of registers currently live
to the state at the beginning of this basic block.
This also marks the conflicts among them.
This also marks the conflicts among hard registers
and any allocnos that are live.
For pseudo-regs, there is only one bit for each one
no matter how many hard regs it occupies.
@ -702,9 +703,30 @@ global_conflicts ()
(a, PSEUDO_REGNO_MODE (i));
});
/* Record that each allocno now live conflicts with each other
allocno now live, and with each hard reg now live. */
/* Record that each allocno now live conflicts with each hard reg
now live.
It is not necessary to mark any conflicts between pseudos as
this point, even for pseudos which are live at the start of
the basic block.
Given two pseudos X and Y and any point in the CFG P.
On any path to point P where X and Y are live one of the
following conditions must be true:
1. X is live at some instruction on the path that
evaluates Y.
2. Y is live at some instruction on the path that
evaluates X.
3. Either X or Y is not evaluted on the path to P
(ie it is used uninitialized) and thus the
conflict can be ignored.
In cases #1 and #2 the conflict will be recorded when we
scan the instruction that makes either X or Y become live. */
record_conflicts (block_start_allocnos, ax);
#ifdef STACK_REGS
@ -1350,7 +1372,8 @@ record_one_conflict (regno)
}
/* Record all allocnos currently live as conflicting
with each other and with all hard regs currently live.
with all hard regs currently live.
ALLOCNO_VEC is a vector of LEN allocnos, all allocnos that
are currently live. Their bits are also flagged in allocnos_live. */
@ -1368,8 +1391,6 @@ record_conflicts (allocno_vec, len)
allocno = allocno_vec[len];
ialloc_prod = allocno * allocno_row_words;
IOR_HARD_REG_SET (hard_reg_conflicts[allocno], hard_regs_live);
for (j = allocno_row_words - 1; j >= 0; j--)
conflicts[ialloc_prod + j] |= allocnos_live[j];
}
}