Fix ia64-linux kernel fn_hash() miscompilation.

* function.c (fixup_var_refs_1, case ZERO_EXTRACT): If we have a
	paradoxical subreg, then directly substitute the replacement and
	return.

From-SVN: r36515
This commit is contained in:
Jim Wilson 2000-09-18 21:37:37 +00:00 committed by Jim Wilson
parent b542c0fb11
commit 226ed43f1e
2 changed files with 14 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2000-09-18 Jim Wilson <wilson@cygnus.com>
* function.c (fixup_var_refs_1, case ZERO_EXTRACT): If we have a
paradoxical subreg, then directly substitute the replacement and
return.
Mon 18-Sep-2000 22:12:44 BST Neil Booth <NeilB@earthling.net> Mon 18-Sep-2000 22:12:44 BST Neil Booth <NeilB@earthling.net>
* cpp.texi: Update documentation, including some clarifications, * cpp.texi: Update documentation, including some clarifications,

View File

@ -2015,6 +2015,14 @@ fixup_var_refs_1 (var, promoted_mode, loc, insn, replacements)
if (replacement->new == 0) if (replacement->new == 0)
replacement->new = gen_reg_rtx (GET_MODE (var)); replacement->new = gen_reg_rtx (GET_MODE (var));
SUBREG_REG (tem) = replacement->new; SUBREG_REG (tem) = replacement->new;
/* The following code works only if we have a MEM, so we
need to handle the subreg here. We directly substitute
it assuming that a subreg must be OK here. We already
scheduled a replacement to copy the mem into the
subreg. */
XEXP (x, 0) = tem;
return;
} }
else else
tem = fixup_memory_subreg (tem, insn, 0); tem = fixup_memory_subreg (tem, insn, 0);