mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-16 07:34:26 +08:00
regclass.c (reg_scan_mark_refs): Be more selective about when we mark a register with REGNO_POINTER_FLAG.
* regclass.c (reg_scan_mark_refs): Be more selective about when we mark a register with REGNO_POINTER_FLAG. From-SVN: r18849
This commit is contained in:
parent
e6e52be073
commit
64d3b4ca2d
@ -1,3 +1,8 @@
|
||||
Fri Mar 27 00:49:46 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* regclass.c (reg_scan_mark_refs): Be more selective about
|
||||
when we mark a register with REGNO_POINTER_FLAG.
|
||||
|
||||
Thu Mar 26 23:00:11 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||
|
||||
reload inheritance improvement:
|
||||
|
@ -1919,6 +1919,12 @@ reg_scan_mark_refs (x, insn, note_flag)
|
||||
|
||||
if (GET_CODE (SET_DEST (x)) == REG
|
||||
&& REGNO (SET_DEST (x)) >= FIRST_PSEUDO_REGISTER
|
||||
/* If the destination pseudo is set more than once, then other
|
||||
sets might not be to a pointer value (consider access to a
|
||||
union in two threads of control in the presense of global
|
||||
optimizations). So only set REGNO_POINTER_FLAG on the destination
|
||||
pseudo if this is the only set of that pseudo. */
|
||||
&& REG_N_SETS (REGNO (SET_DEST (x))) == 1
|
||||
&& ! REG_USERVAR_P (SET_DEST (x))
|
||||
&& ! REGNO_POINTER_FLAG (REGNO (SET_DEST (x)))
|
||||
&& ((GET_CODE (SET_SRC (x)) == REG
|
||||
|
Loading…
Reference in New Issue
Block a user