From 8686336f51b1197f22304f92b63780169be7c54b Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Wed, 13 Feb 2002 23:44:12 +0100 Subject: [PATCH] * regmove.c (kill_value): Handle subregs. From-SVN: r49748 --- gcc/ChangeLog | 4 ++++ gcc/regrename.c | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 16340b695e0..ce1b0ce6c23 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Wed Feb 13 23:41:15 CET 2002 Jan Hubicka + + * regmove.c (kill_value): Handle subregs. + Wed Feb 13 23:34:30 CET 2002 Jan Hubicka * i386.md (mul patterns): Allow memory operand to be first; diff --git a/gcc/regrename.c b/gcc/regrename.c index 135eaefd0e1..3ae6f7f6b45 100644 --- a/gcc/regrename.c +++ b/gcc/regrename.c @@ -1095,6 +1095,14 @@ kill_value (x, vd) rtx x; struct value_data *vd; { + /* SUBREGS are supposed to have been eliminated by now. But some + ports, e.g. i386 sse, use them to smuggle vector type information + through to instruction selection. Each such SUBREG should simplify, + so if we get a NULL we've done something wrong elsewhere. */ + + if (GET_CODE (x) == SUBREG) + x = simplify_subreg (GET_MODE (x), SUBREG_REG (x), + GET_MODE (SUBREG_REG (x)), SUBREG_BYTE (x)); if (REG_P (x)) { unsigned int regno = REGNO (x);