summaryrefslogtreecommitdiff
path: root/gcc/emit-rtl.c
diff options
context:
space:
mode:
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2001-04-25 16:14:24 +0000
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2001-04-25 16:14:24 +0000
commitbfc60c5056db1285cc6a321508afc27fdf9bc131 (patch)
treefc23cad59ba5c632088ab802f8062abbeaab8bbd /gcc/emit-rtl.c
parent6fe285fda0afaf04bd4f8b7bc5a24bb25785b20f (diff)
downloadgcc-bfc60c5056db1285cc6a321508afc27fdf9bc131.tar.gz
* emit-rtl.c (constant_subword): Also do sign extension in
BITS_PER_WORD == 16 case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41545 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r--gcc/emit-rtl.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 480ff15ee98..6fe21ae4d25 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -1369,7 +1369,7 @@ constant_subword (op, offset, mode)
val = k[offset >> 1];
if ((offset & 1) == ! WORDS_BIG_ENDIAN)
val >>= 16;
- val &= 0xffff;
+ val = ((val & 0xffff) ^ 0x8000) - 0x8000;
return GEN_INT (val);
}
else
@@ -1448,7 +1448,7 @@ constant_subword (op, offset, mode)
{
if ((offset & 1) == ! WORDS_BIG_ENDIAN)
val >>= 16;
- val &= 0xffff;
+ val = ((val & 0xffff) ^ 0x8000) - 0x8000;
}
return GEN_INT (val);