diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-02-13 22:44:12 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-02-13 22:44:12 +0000 |
commit | bd6bc33d4399ceac51b81e04b299b5ffbe51cabc (patch) | |
tree | 215ef842018fc1bb1791ffcb34c97d2e8cc83b0a /gcc/regrename.c | |
parent | 5edf31bcee0682cd990fa7cf8fed2e8e279d77de (diff) | |
download | gcc-bd6bc33d4399ceac51b81e04b299b5ffbe51cabc.tar.gz |
* regmove.c (kill_value): Handle subregs.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49748 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/regrename.c')
-rw-r--r-- | gcc/regrename.c | 8 |
1 files changed, 8 insertions, 0 deletions
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); |