[gnu.gcc.bug] const_double:DI rtx's

self@BAYES.ARC.NASA.GOV (Matthew Self) (11/26/88)

Gcc appears to generate const_double rtl expressions with mode DI
(expr.c (expand_expr), final.c (output_addr_const), etc.).
What are these?  The manual implies that const_double is only valid
for floating point modes.

raeburn@ATHENA.MIT.EDU (Ken Raeburn) (11/28/88)

From what I have gathered, const_double applies to any value wider
than a normal const_int.  This means floating values (well, maybe if
you consider SFmode to be a DFmode that gets trimmed later?) and wide
integers.  DImode stands for double-integer.

Although you can use "long long" to get the compiler to use these
values, the support is incomplete.  In particular, most machines will
probably require gnulib support that is not yet present (but wouldn't
be tough to write) for most operations, and the code that handles
comparisons doesn't work right (breaks down when "unsigned long long"
comes into consideration).  I've sent RMS some rough code to fix the
latter, but it may or may not get into a released version of the
compiler.