aboutsummaryrefslogtreecommitdiff
path: root/gcc/rtl.h
diff options
context:
space:
mode:
authorCharles Hannum <mycroft@gnu.org>1992-07-06 20:04:00 +0000
committerCharles Hannum <mycroft@gnu.org>1992-07-06 20:04:00 +0000
commit5f4f0e229486bb7af5cfeaf7aae644702e0fc0c7 (patch)
treec4e3d923add2b1e3aec57cb0e90c70c3fb93a5f9 /gcc/rtl.h
parent3d678dca190485cba2a650037191fc647289a432 (diff)
downloadgcc-5f4f0e229486bb7af5cfeaf7aae644702e0fc0c7.zip
gcc-5f4f0e229486bb7af5cfeaf7aae644702e0fc0c7.tar.gz
gcc-5f4f0e229486bb7af5cfeaf7aae644702e0fc0c7.tar.bz2
*** empty log message ***
From-SVN: r1471
Diffstat (limited to 'gcc/rtl.h')
-rw-r--r--gcc/rtl.h38
1 files changed, 34 insertions, 4 deletions
diff --git a/gcc/rtl.h b/gcc/rtl.h
index 5756a1c..f4712f6 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -55,6 +55,7 @@ extern char rtx_class[];
typedef union rtunion_def
{
+ HOST_WIDE_INT rtwint;
int rtint;
char *rtstr;
struct rtx_def *rtx;
@@ -132,6 +133,16 @@ typedef struct rtx_def
#define NULL_RTX (rtx) 0
+/* Define a generic NULL if one hasn't already been defined. */
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifndef NULL_PTR
+#define NULL_PTR (char *) NULL
+#endif
+
/* Define macros to access the `code' field of the rtx. */
#ifdef SHORT_ENUM_BUG
@@ -179,6 +190,7 @@ typedef struct rtvec_def{
#define XEXP(RTX, N) ((RTX)->fld[N].rtx)
#define XINT(RTX, N) ((RTX)->fld[N].rtint)
+#define XWINT(RTX, N) ((RTX)->fld[N].rtwint)
#define XSTR(RTX, N) ((RTX)->fld[N].rtstr)
#define XVEC(RTX, N) ((RTX)->fld[N].rtvec)
#define XVECLEN(RTX, N) ((RTX)->fld[N].rtvec->num_elem)
@@ -399,7 +411,7 @@ extern char *note_insn_name[];
/* For a CONST_INT rtx, INTVAL extracts the integer. */
-#define INTVAL(RTX) ((RTX)->fld[0].rtint)
+#define INTVAL(RTX) ((RTX)->fld[0].rtwint)
/* For a SUBREG rtx, SUBREG_REG extracts the value we want a subreg of.
SUBREG_WORD extracts the word-number. */
@@ -532,17 +544,36 @@ extern char *note_insn_name[];
/* Generally useful functions. */
+/* The following functions accept a wide integer argument. Rather than
+ having to cast on every function call, we use a macro instead, that is
+ defined here and in tree.h. */
+
+#ifndef exact_log2
+#define exact_log2(N) exact_log2_wide ((HOST_WIDE_INT) (N))
+#define floor_log2(N) floor_log2_wide ((HOST_WIDE_INT) (N))
+#endif
+
+#define plus_constant(X,C) plus_constant_wide (X, (HOST_WIDE_INT) (C))
+
+#define plus_constant_for_output(X,C) \
+ plus_constant_for_output_wide (X, (HOST_WIDE_INT) (C))
+
+extern rtx plus_constant_wide (), plus_constant_for_output_wide ();
+
+#define GEN_INT(N) gen_rtx (CONST_INT, VOIDmode, (N))
+
+extern rtx gen_rtx ();
+
extern char *xmalloc ();
extern void free ();
extern rtx rtx_alloc ();
extern rtvec rtvec_alloc ();
extern rtx find_reg_note ();
extern rtx find_regno_note ();
-extern int get_integer_term ();
+extern HOST_WIDE_INT get_integer_term ();
extern rtx get_related_value ();
extern rtx single_set ();
extern rtx find_last_value ();
-extern rtx gen_rtx ();
extern rtx copy_rtx ();
extern rtx copy_rtx_if_shared ();
extern rtx copy_most_rtx ();
@@ -623,7 +654,6 @@ extern enum rtx_code reverse_condition ();
extern enum rtx_code swap_condition ();
extern enum rtx_code unsigned_condition ();
extern enum rtx_code signed_condition ();
-extern rtx plus_constant (), plus_constant_for_output ();
extern rtx find_equiv_reg ();
extern rtx squeeze_notes ();
extern rtx delete_insn ();