self@BAYES.ARC.NASA.GOV (Matthew Self) (11/24/88)
I am currently implementing 80-bit IEEE long doubles in gcc for machines with a 68881/2. I have finished the tedium of adding a new machine mode (XF for extended float), updating the m68k machine description, and adding code to perform mode widening from float to long double and double to long double in addition to float to double, but I now face the difficult task of integrating this new code with the existing compiler. The first major problem is the representation of long double constants. Since we cannot assume that the native compiler provides extended float arithmetic, we must simulate it (or perhaps go through a very complicated bootstrap process). Simulation brings in all of the issues of cross-compilers. fold-const.c: /*@@ This file should be rewritten to use an arbitrary precision @@ representation for "struct tree_int_cst" and "struct tree_real_cst". @@ Perhaps the routines could also be used for bc/dc, and made a lib. @@ The routines that translate from the ap rep should @@ warn if precision et. al. is lost. @@ This would also make life easier when this technology is used @@ for cross-compilers. */ Has anyone started this project? (Perhaps someone interested in cross-compilers.) If not, I will dig in, but I haven't received my copy of the ANSI standard yet, so I'm not quite sure what the rules are for constant folding.... For example, can constant folding be performed with higher (infinite) precision than the target machine would have used? Also, does IEEE say anything about this kind of thing (similar to the extra precision of the 68881 and subsequent double rounding causes non-compliance with IEEE). It might be important to have constant folding done in IEEE format as well as run-time arithmetic. (??) Comments... Help... Matthew Self NASA Ames Research Center self@bayes.arc.nasa.gov