mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-02 06:40:25 +08:00
* cse.c: Update comments.
From-SVN: r94705
This commit is contained in:
parent
17385e0d3b
commit
459281be31
@ -5,6 +5,8 @@
|
||||
config/rs6000/altivec.md, config/rs6000/darwin-tramp.asm:
|
||||
Update copyright.
|
||||
|
||||
* cse.c: Update comments.
|
||||
|
||||
2005-02-07 Richard Guenther <rguenth@gcc.gnu.org>
|
||||
|
||||
PR middle-end/19775
|
||||
|
28
gcc/cse.c
28
gcc/cse.c
@ -80,11 +80,11 @@ Registers and "quantity numbers":
|
||||
copies one register into another, we copy the quantity number.
|
||||
When a register is loaded in any other way, we allocate a new
|
||||
quantity number to describe the value generated by this operation.
|
||||
`reg_qty' records what quantity a register is currently thought
|
||||
`REG_QTY (N)' records what quantity register N is currently thought
|
||||
of as containing.
|
||||
|
||||
All real quantity numbers are greater than or equal to zero.
|
||||
If register N has not been assigned a quantity, reg_qty[N] will
|
||||
If register N has not been assigned a quantity, `REG_QTY (N)' will
|
||||
equal -N - 1, which is always negative.
|
||||
|
||||
Quantity numbers below zero do not exist and none of the `qty_table'
|
||||
@ -172,18 +172,20 @@ Other expressions:
|
||||
the register's new value. This sequence of circumstances is rare
|
||||
within any one basic block.
|
||||
|
||||
The vectors `reg_tick' and `reg_in_table' are used to detect this case.
|
||||
reg_tick[i] is incremented whenever a value is stored in register i.
|
||||
reg_in_table[i] holds -1 if no references to register i have been
|
||||
entered in the table; otherwise, it contains the value reg_tick[i] had
|
||||
when the references were entered. If we want to enter a reference
|
||||
and reg_in_table[i] != reg_tick[i], we must scan and remove old references.
|
||||
Until we want to enter a new entry, the mere fact that the two vectors
|
||||
don't match makes the entries be ignored if anyone tries to match them.
|
||||
`REG_TICK' and `REG_IN_TABLE', accessors for members of
|
||||
cse_reg_info, are used to detect this case. REG_TICK (i) is
|
||||
incremented whenever a value is stored in register i.
|
||||
REG_IN_TABLE (i) holds -1 if no references to register i have been
|
||||
entered in the table; otherwise, it contains the value REG_TICK (i)
|
||||
had when the references were entered. If we want to enter a
|
||||
reference and REG_IN_TABLE (i) != REG_TICK (i), we must scan and
|
||||
remove old references. Until we want to enter a new entry, the
|
||||
mere fact that the two vectors don't match makes the entries be
|
||||
ignored if anyone tries to match them.
|
||||
|
||||
Registers themselves are entered in the hash table as well as in
|
||||
the equivalent-register chains. However, the vectors `reg_tick'
|
||||
and `reg_in_table' do not apply to expressions which are simple
|
||||
the equivalent-register chains. However, `REG_TICK' and
|
||||
`REG_IN_TABLE' do not apply to expressions which are simple
|
||||
register references. These expressions are removed from the table
|
||||
immediately when they become invalid, and this can be done even if
|
||||
we do not immediately search for all the expressions that refer to
|
||||
@ -289,7 +291,7 @@ static rtx this_insn;
|
||||
|
||||
Or -1 if this register is at the end of the chain.
|
||||
|
||||
If reg_qty[N] == N, reg_eqv_table[N].next is undefined. */
|
||||
If REG_QTY (N) == -N - 1, reg_eqv_table[N].next is undefined. */
|
||||
|
||||
/* Per-register equivalence chain. */
|
||||
struct reg_eqv_elem
|
||||
|
Loading…
x
Reference in New Issue
Block a user