diff options
author | Alan Modra <amodra@bigpond.net.au> | 2002-08-02 01:08:01 +0000 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2002-08-02 10:38:01 +0930 |
commit | fb52d8de78e4d308b95aa721c5c9dc2b4e796391 (patch) | |
tree | 7ea907b911e99583263ed0edcbd088e568aee5b5 /gcc | |
parent | a4b5414c883ff448abe86c07b5cd83e59793d32f (diff) | |
download | gcc-fb52d8de78e4d308b95aa721c5c9dc2b4e796391.zip gcc-fb52d8de78e4d308b95aa721c5c9dc2b4e796391.tar.gz gcc-fb52d8de78e4d308b95aa721c5c9dc2b4e796391.tar.bz2 |
rs6000.c (output_toc): Don't use lshift_double when HOST_BITS_PER_WIDE_INT == 64.
* config/rs6000/rs6000.c (output_toc): Don't use lshift_double when
HOST_BITS_PER_WIDE_INT == 64.
From-SVN: r55961
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 13 |
2 files changed, 16 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index de5c2b5..5b5de59 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-08-02 Alan Modra <amodra@bigpond.net.au> + + * config/rs6000/rs6000.c (output_toc): Don't use lshift_double when + HOST_BITS_PER_WIDE_INT == 64. + 2002-08-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * df.c (df_insn_table_realloc): Change parameter to unsigned. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index e1b3d1e..932a60c 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -11664,8 +11664,17 @@ output_toc (file, x, labelno, mode) abort ();/* It would be easy to make this work, but it doesn't now. */ if (POINTER_SIZE > GET_MODE_BITSIZE (mode)) - lshift_double (low, high, POINTER_SIZE - GET_MODE_BITSIZE (mode), - POINTER_SIZE, &low, &high, 0); + { +#if HOST_BITS_PER_WIDE_INT == 32 + lshift_double (low, high, POINTER_SIZE - GET_MODE_BITSIZE (mode), + POINTER_SIZE, &low, &high, 0); +#else + low |= high << 32; + low <<= POINTER_SIZE - GET_MODE_BITSIZE (mode); + high = (HOST_WIDE_INT) low >> 32; + low &= 0xffffffff; +#endif + } if (TARGET_64BIT) { |