mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-24 14:49:35 +08:00
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:
parent
e55b279b6d
commit
bdc24974c8
@ -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
|
||||
|
33
gcc/global.c
33
gcc/global.c
@ -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];
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user