From: amylaar Date: Wed, 25 Apr 2001 16:14:24 +0000 (+0000) Subject: * emit-rtl.c (constant_subword): Also do sign extension in X-Git-Url: http://git.sourceforge.jp/view?a=commitdiff_plain;h=bfc60c5056db1285cc6a321508afc27fdf9bc131;p=pf3gnuchains%2Fgcc-fork.git * 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 87bac601ba2..c6c57ef95bf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Wed Apr 25 17:09:50 2001 J"orn Rennecke + + * emit-rtl.c (constant_subword): Also do sign extension in + BITS_PER_WORD == 16 case. + 2001-04-25 Jason Merrill * loop.c (try_swap_copy_prop): Go back to checking insn. 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);