summaryrefslogtreecommitdiff
path: root/gnu/egcs/gcc
diff options
context:
space:
mode:
authorArtur Grabowski <art@cvs.openbsd.org>2001-09-10 22:30:19 +0000
committerArtur Grabowski <art@cvs.openbsd.org>2001-09-10 22:30:19 +0000
commit539d2fe1b065038867a3a79db8cb2c3267d79cd0 (patch)
tree9f698e9d357ac62f4b7b99e02430aeb85d63b54d /gnu/egcs/gcc
parent40c96d3e0f32d23408b3774d27518514a53b3bc1 (diff)
Put in a fix from future gcc that implements some unimplemented code.
Not that I know what it does and how to test it but libstdc++ builds now on sparc64 and groff works so we can have man pages. It shouldn't hurt anything because it replaces an abort().
Diffstat (limited to 'gnu/egcs/gcc')
-rw-r--r--gnu/egcs/gcc/emit-rtl.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gnu/egcs/gcc/emit-rtl.c b/gnu/egcs/gcc/emit-rtl.c
index f16f6f23bb9..3c3d5a5ca5e 100644
--- a/gnu/egcs/gcc/emit-rtl.c
+++ b/gnu/egcs/gcc/emit-rtl.c
@@ -1382,6 +1382,15 @@ operand_subword (op, i, validate_address, mode)
val = ((val & 0xffffffff) ^ 0x80000000) - 0x80000000;
return GEN_INT (val);
}
+#if HOST_BITS_PER_WIDE_INT >= 64
+ else if (BITS_PER_WORD >= 64 && i <= 1)
+ {
+ val = k[i * 2 + ! WORDS_BIG_ENDIAN];
+ val = (((val & 0xffffffff) ^ 0x80000000) - 0x80000000) << 32;
+ val |= (HOST_WIDE_INT) k[i * 2 + WORDS_BIG_ENDIAN] & 0xffffffff;
+ return GEN_INT (val);
+ }
+#endif
else
abort ();
}