reload1.c (reload_combine_note_store): Be more careful with STRICT_LOW_PART, ZERO_EXTRACT and SIGN_EXTRACT.

* reload1.c (reload_combine_note_store): Be more careful with
        STRICT_LOW_PART, ZERO_EXTRACT and SIGN_EXTRACT.
        (move2add_note_store): Likewise.

From-SVN: r25055
This commit is contained in:
Jeffrey A Law 1999-02-06 09:41:08 +00:00 committed by Jeff Law
parent bdc1937ed9
commit 54ca6ffa13
2 changed files with 25 additions and 2 deletions

View File

@ -1,3 +1,9 @@
Sat Feb 6 10:31:35 1999 Jeffrey A Law (law@cygnus.com)
* reload1.c (reload_combine_note_store): Be more careful with
STRICT_LOW_PART, ZERO_EXTRACT and SIGN_EXTRACT.
(move2add_note_store): Likewise.
Sat Feb 6 10:18:01 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* cppfiles.c (read_and_prescan): Cast the result of `xrealloc' to

View File

@ -9732,9 +9732,15 @@ reload_combine_note_store (dst, set)
if (GET_CODE (dst) != REG)
return;
regno += REGNO (dst);
/* note_stores might have stripped a STRICT_LOW_PART, so we have to be
careful with registers / register parts that are not full words. */
if (size < (unsigned) UNITS_PER_WORD)
careful with registers / register parts that are not full words.
Similarly for ZERO_EXTRACT and SIGN_EXTRACT. */
if (GET_CODE (set) != SET
|| GET_CODE (SET_DEST (set)) == ZERO_EXTRACT
|| GET_CODE (SET_DEST (set)) == SIGN_EXTRACT
|| GET_CODE (SET_DEST (set)) == STRICT_LOW_PART)
{
reg_state[regno].use_index = -1;
reg_state[regno].store_ruid = reload_combine_ruid;
@ -10056,6 +10062,17 @@ move2add_note_store (dst, set)
{
rtx src = SET_SRC (set);
/* Indicate that this register has been recently written to,
but the exact contents are not available. */
if (GET_CODE (SET_DEST (set)) == ZERO_EXTRACT
|| GET_CODE (SET_DEST (set)) == SIGN_EXTRACT
|| GET_CODE (SET_DEST (set)) == STRICT_LOW_PART)
{
reg_set_luid[regno] = move2add_luid;
reg_offset[regno] = dst;
return;
}
reg_mode[regno] = mode;
switch (GET_CODE (src))
{