aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2002-01-26 19:42:07 -0800
committerRichard Henderson <rth@gcc.gnu.org>2002-01-26 19:42:07 -0800
commit60ffa0e5ba727cd58d9ed2df93a9bdd71465999b (patch)
tree349a1f22e403e52a334de63072851d5302803e53 /gcc
parent51584787e0dafac82d5ecab79c9ea596f33a6dc6 (diff)
downloadgcc-60ffa0e5ba727cd58d9ed2df93a9bdd71465999b.zip
gcc-60ffa0e5ba727cd58d9ed2df93a9bdd71465999b.tar.gz
gcc-60ffa0e5ba727cd58d9ed2df93a9bdd71465999b.tar.bz2
* config/cris/cris.c (cris_print_operand): Handle 64-bit CONST_INT.
From-SVN: r49259
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/cris/cris.c16
2 files changed, 16 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b6a374c..57fd4b9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2002-01-26 Richard Henderson <rth@redhat.com>
+ * config/cris/cris.c (cris_print_operand): Handle 64-bit CONST_INT.
+
+2002-01-26 Richard Henderson <rth@redhat.com>
+
* config/alpha/alpha.c (alpha_sa_mask): Mark RA for unicos here too.
(alpha_sa_size): Use alpha_sa_mask to compute size of saved regs.
diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c
index 8d2afa8..480b59c 100644
--- a/gcc/config/cris/cris.c
+++ b/gcc/config/cris/cris.c
@@ -1363,8 +1363,11 @@ cris_print_operand (file, x, code)
switch (GET_CODE (operand))
{
case CONST_INT:
- /* Sign-extension from a normal int to a long long. */
- fprintf (file, INTVAL (operand) < 0 ? "-1" : "0");
+ if (HOST_BITS_PER_WIDE_INT == 32)
+ /* Sign-extension from a normal int to a long long. */
+ fprintf (file, INTVAL (operand) < 0 ? "-1" : "0");
+ else
+ fprintf (file, "0x%x", (unsigned int)(INTVAL (x) >> 31 >> 1));
return;
case CONST_DOUBLE:
@@ -1447,8 +1450,13 @@ cris_print_operand (file, x, code)
fprintf (file, "0x%x", CONST_DOUBLE_LOW (x));
return;
}
- /* If not a CONST_DOUBLE, the least significant part equals the
- normal part, so handle it normally. */
+ else if (HOST_BITS_PER_WIDE_INT > 32 && GET_CODE (operand) == CONST_INT)
+ {
+ fprintf (file, "0x%x", (unsigned int)(INTVAL (x) & 0xffffffff));
+ return;
+ }
+ /* Otherwise the least significant part equals the normal part,
+ so handle it normally. */
break;
case 'A':