aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2002-02-13 23:44:12 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2002-02-13 22:44:12 +0000
commit8686336f51b1197f22304f92b63780169be7c54b (patch)
tree215ef842018fc1bb1791ffcb34c97d2e8cc83b0a /gcc
parent558740bf3d958eb4b2f2bcc72eed6fc05dd7c0e3 (diff)
downloadgcc-8686336f51b1197f22304f92b63780169be7c54b.zip
gcc-8686336f51b1197f22304f92b63780169be7c54b.tar.gz
gcc-8686336f51b1197f22304f92b63780169be7c54b.tar.bz2
* regmove.c (kill_value): Handle subregs.
From-SVN: r49748
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/regrename.c8
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 16340b69..ce1b0ce 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+Wed Feb 13 23:41:15 CET 2002 Jan Hubicka <jh@suse.cz>
+
+ * regmove.c (kill_value): Handle subregs.
+
Wed Feb 13 23:34:30 CET 2002 Jan Hubicka <jh@suse.cz>
* i386.md (mul patterns): Allow memory operand to be first;
diff --git a/gcc/regrename.c b/gcc/regrename.c
index 135eaef..3ae6f7f 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);