OSDN Git Service

* config/s390/linux.h (MD_FALLBACK_FRAME_STATE_FOR): New.
[pf3gnuchains/gcc-fork.git] / gcc / real.h
index 3de905d..143261e 100644 (file)
@@ -22,6 +22,8 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #ifndef GCC_REAL_H
 #define GCC_REAL_H
 
+#include "machmode.h"
+
 /* Define codes for all the float formats that we know of.  */
 #define UNKNOWN_FLOAT_FORMAT 0
 #define IEEE_FLOAT_FORMAT 1
@@ -87,12 +89,13 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #define REAL_WIDTH \
   (REAL_VALUE_TYPE_SIZE/HOST_BITS_PER_WIDE_INT \
    + (REAL_VALUE_TYPE_SIZE%HOST_BITS_PER_WIDE_INT ? 1 : 0)) /* round up */
-typedef struct {
+struct realvaluetype {
   HOST_WIDE_INT r[REAL_WIDTH];
-} realvaluetype;
+};
 /* Various headers condition prototypes on #ifdef REAL_VALUE_TYPE, so it needs
-   to be a macro.  */
-#define REAL_VALUE_TYPE realvaluetype
+   to be a macro.  realvaluetype cannot be a typedef as this interferes with
+   other headers declaring opaque pointers to it.  */
+#define REAL_VALUE_TYPE struct realvaluetype
 
 /* Calculate the format for CONST_DOUBLE.  We need as many slots as
    are necessary to overlay a REAL_VALUE_TYPE on them.  This could be
@@ -180,6 +183,11 @@ extern REAL_VALUE_TYPE ereal_from_double PARAMS ((HOST_WIDE_INT *));
 extern REAL_VALUE_TYPE real_value_truncate PARAMS ((enum machine_mode,
                                                  REAL_VALUE_TYPE));
 
+/* Expansion of REAL_VALUE_TRUNCATE.
+   The result is in floating point, rounded to nearest or even.  */
+extern bool exact_real_truncate PARAMS ((enum machine_mode,
+                                        REAL_VALUE_TYPE *));
+
 /* These return HOST_WIDE_INT: */
 /* Convert a floating-point value to integer, rounding toward zero.  */
 #define REAL_VALUE_FIX(x) (efixi (x))
@@ -285,4 +293,8 @@ extern int target_negative  PARAMS ((REAL_VALUE_TYPE));
 extern void debug_real         PARAMS ((REAL_VALUE_TYPE));
 extern REAL_VALUE_TYPE ereal_atof PARAMS ((const char *, enum machine_mode));
 
+/* In tree.c: wrap up a REAL_VALUE_TYPE in a tree node.  */
+extern tree build_real                 PARAMS ((tree, REAL_VALUE_TYPE));
+
+
 #endif /* ! GCC_REAL_H */