diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2009-02-09 14:35:38 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2009-02-09 14:35:38 +0000 |
commit | e41e2ab405a00c677a51c61382708b71c6181422 (patch) | |
tree | b87c916e274180bfb4883dfd121f227573d2abea /gcc | |
parent | 4bb07c5d3708bbab76c88458eb885a66c7ecf265 (diff) | |
download | gcc-e41e2ab405a00c677a51c61382708b71c6181422.zip gcc-e41e2ab405a00c677a51c61382708b71c6181422.tar.gz gcc-e41e2ab405a00c677a51c61382708b71c6181422.tar.bz2 |
spu.c (array_to_constant): Fix (latent) wrong-code generation due to implicit sign extension.
* config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
generation due to implicit sign extension.
From-SVN: r144034
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/spu/spu.c | 5 |
2 files changed, 7 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b1e2ae8..267bada 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-02-09 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> + + * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code + generation due to implicit sign extension. + 2009-02-09 Eric Botcazou <ebotcazou@adacore.com> PR middle-end/38981 diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c index cd7f6ed..75f7853 100644 --- a/gcc/config/spu/spu.c +++ b/gcc/config/spu/spu.c @@ -4722,9 +4722,8 @@ array_to_constant (enum machine_mode mode, unsigned char arr[16]) } if (mode == DFmode) { - val = (arr[0] << 24) | (arr[1] << 16) | (arr[2] << 8) | arr[3]; - val <<= 32; - val |= (arr[4] << 24) | (arr[5] << 16) | (arr[6] << 8) | arr[7]; + for (i = 0, val = 0; i < 8; i++) + val = (val << 8) | arr[i]; return hwint_to_const_double (DFmode, val); } |