This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
operand_subword question
- To: gcc at gcc dot gnu dot org
- Subject: operand_subword question
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Wed, 01 Mar 2000 21:11:45 -0700
- Reply-To: law at cygnus dot com
Are there any ports where HOST_BITS_PER_WIDE_INT is 64, BITS_PER_WORD is 64
which also support 128bit long doubles?
The problem I'm running into is we want to extract word 1 out of something
like this:
(const_double:TF (const_int 0 [0x0]) 0 [0x0] 0 [0x0] -8070380146332326976
[0x90004003ff7f23c0])
We get into this hunk of code:
else if (HOST_BITS_PER_WIDE_INT >= BITS_PER_WORD
&& GET_MODE_CLASS (mode) == MODE_FLOAT
&& GET_MODE_BITSIZE (mode) > 64
&& GET_CODE (op) == CONST_DOUBLE)
{
long k[4];
REAL_VALUE_TYPE rv;
REAL_VALUE_FROM_CONST_DOUBLE (rv, op);
REAL_VALUE_TO_TARGET_LONG_DOUBLE (rv, k);
if (BITS_PER_WORD == 32)
{
val = k[i];
val = ((val & 0xffffffff) ^ 0x80000000) - 0x80000000;
return GEN_INT (val);
}
else
abort ();
Since BITS_PER_WORD != 32, we abort.
I can certainly hack in a case for 64bit BITS_PER_WORD, but it seems extremely
odd that none of the other ports have run into problems in this area.
This happens when we try to initialize a "long double" field within a
structure.
Thoughts?
jeff