Commit 54ca6ffa by Jeffrey A Law Committed by Jeff Law

reload1.c (reload_combine_note_store): Be more careful with STRICT_LOW_PART,…

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
parent bdc1937e
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> 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 * cppfiles.c (read_and_prescan): Cast the result of `xrealloc' to
......
...@@ -9732,9 +9732,15 @@ reload_combine_note_store (dst, set) ...@@ -9732,9 +9732,15 @@ reload_combine_note_store (dst, set)
if (GET_CODE (dst) != REG) if (GET_CODE (dst) != REG)
return; return;
regno += REGNO (dst); regno += REGNO (dst);
/* note_stores might have stripped a STRICT_LOW_PART, so we have to be /* note_stores might have stripped a STRICT_LOW_PART, so we have to be
careful with registers / register parts that are not full words. */ careful with registers / register parts that are not full words.
if (size < (unsigned) UNITS_PER_WORD)
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].use_index = -1;
reg_state[regno].store_ruid = reload_combine_ruid; reg_state[regno].store_ruid = reload_combine_ruid;
...@@ -10056,6 +10062,17 @@ move2add_note_store (dst, set) ...@@ -10056,6 +10062,17 @@ move2add_note_store (dst, set)
{ {
rtx src = SET_SRC (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; reg_mode[regno] = mode;
switch (GET_CODE (src)) switch (GET_CODE (src))
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment