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.