aboutsummaryrefslogtreecommitdiff
path: root/gcc/real.h
diff options
context:
space:
mode:
authorZack Weinberg <zack@codesourcery.com>2002-05-28 17:33:14 +0000
committerZack Weinberg <zack@codesourcery.com>2002-05-28 17:33:14 +0000
commit775ba8b22ea96c4bd2637865f51d31cbbaf1a23f (patch)
tree005b9830ad50445b6392fd80c98e1ea6584a5deb /gcc/real.h
parenta5013c701afac67ddc02ead82545f07b790e842e (diff)
* tree.h: Forward-declare struct realvaluetype.
(struct tree_real_cst): Point to the REAL_VALUE_TYPE, do not contain it. (TREE_REAL_CST_PTR): New accessor. (TREE_REAL_CST): Update. * real.h: Include machmode.h. (realvaluetype): Make it struct realvaluetype, not a typedef. (build_real): Prototype here. * tree.c: Include real.h. (build_real): Allocate the REAL_VALUE_TYPE as a separate object in GC memory, set TREE_REAL_CST_PTR to point to it. (build_real_from_int_cst): Use build_real. * ggc-common.c (ggc_mark_trees): Mark TREE_REAL_CST_PTR of a REAL_CST. * builtins.c, c-common.c, c-lex.c, dwarf2out.c, expr.c, fold-const.c, print-tree.c, real.c, cp/mangle.c, cp/tree.c, f/bld.c, f/com.c, f/expr.c, f/target.c, java/decl.c, java/jcf-parse.c, java/parse.y, java/typeck.c: Include real.h. * Makefile.in, cp/Make-lang.in, f/Make-lang.in, java/Make-lang.in: Update dependency lists. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@53959 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/real.h')
-rw-r--r--gcc/real.h15
1 files changed, 11 insertions, 4 deletions
diff --git a/gcc/real.h b/gcc/real.h
index 4b59378808f..143261eff81 100644
--- a/gcc/real.h
+++ b/gcc/real.h
@@ -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
@@ -290,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 */