aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Hannum <mycroft@gnu.org>1992-03-14 05:04:03 +0000
committerCharles Hannum <mycroft@gnu.org>1992-03-14 05:04:03 +0000
commitbf55c04f34813ae1195e20906b456253f90e749a (patch)
tree0f59e4d249b2f0e3ff4b10937c31d800039597ea
parentc415fa055b3e70f48e25cea506b76c2e4c793bdc (diff)
downloadgcc-bf55c04f34813ae1195e20906b456253f90e749a.zip
gcc-bf55c04f34813ae1195e20906b456253f90e749a.tar.gz
gcc-bf55c04f34813ae1195e20906b456253f90e749a.tar.bz2
entered into RCS
From-SVN: r469
-rw-r--r--gcc/conditions.h111
-rw-r--r--gcc/gsyms.h76
2 files changed, 187 insertions, 0 deletions
diff --git a/gcc/conditions.h b/gcc/conditions.h
new file mode 100644
index 0000000..140fbd9
--- /dev/null
+++ b/gcc/conditions.h
@@ -0,0 +1,111 @@
+/* Definitions for condition code handling in final.c and output routines.
+ Copyright (C) 1987 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* None of the things in the files exist if we don't use CC0. */
+
+#ifdef HAVE_cc0
+
+/* The variable cc_status says how to interpret the condition code.
+ It is set by output routines for an instruction that sets the cc's
+ and examined by output routines for jump instructions.
+
+ cc_status contains two components named `value1' and `value2'
+ that record two equivalent expressions for the values that the
+ condition codes were set from. (Either or both may be null if
+ there is no useful expression to record.) These fields are
+ used for eliminating redundant test and compare instructions
+ in the cases where the condition codes were already set by the
+ previous instruction.
+
+ cc_status.flags contains flags which say that the condition codes
+ were set in a nonstandard manner. The output of jump instructions
+ uses these flags to compensate and produce the standard result
+ with the nonstandard condition codes. Standard flags are defined here.
+ The tm.h file can also define other machine-dependent flags.
+
+ cc_status also contains a machine-dependent component `mdep'
+ whose type, `CC_STATUS_MDEP', may be defined as a macro in the
+ tm.h file. */
+
+#ifndef CC_STATUS_MDEP
+#define CC_STATUS_MDEP int
+#endif
+
+#ifndef CC_STATUS_MDEP_INIT
+#define CC_STATUS_MDEP_INIT 0
+#endif
+
+typedef struct {int flags; rtx value1, value2; CC_STATUS_MDEP mdep;} CC_STATUS;
+
+/* While outputting an insn as assembler code,
+ this is the status BEFORE that insn. */
+extern CC_STATUS cc_prev_status;
+
+/* While outputting an insn as assembler code,
+ this is being altered to the status AFTER that insn. */
+extern CC_STATUS cc_status;
+
+/* These are the machine-independent flags: */
+
+/* Set if the sign of the cc value is inverted:
+ output a following jump-if-less as a jump-if-greater, etc. */
+#define CC_REVERSED 1
+
+/* This bit means that the current setting of the N bit is bogus
+ and conditional jumps should use the Z bit in its place.
+ This state obtains when an extraction of a signed single-bit field
+ or an arithmetic shift right of a byte by 7 bits
+ is turned into a btst, because btst does not set the N bit. */
+#define CC_NOT_POSITIVE 2
+
+/* This bit means that the current setting of the N bit is bogus
+ and conditional jumps should pretend that the N bit is clear.
+ Used after extraction of an unsigned bit
+ or logical shift right of a byte by 7 bits is turned into a btst.
+ The btst does not alter the N bit, but the result of that shift
+ or extract is never negative. */
+#define CC_NOT_NEGATIVE 4
+
+/* This bit means that the current setting of the overflow flag
+ is bogus and conditional jumps should pretend there is no overflow. */
+#define CC_NO_OVERFLOW 010
+
+/* This bit means that what ought to be in the Z bit
+ should be tested as the complement of the N bit. */
+#define CC_Z_IN_NOT_N 020
+
+/* This bit means that what ought to be in the Z bit
+ should be tested as the N bit. */
+#define CC_Z_IN_N 040
+
+/* Nonzero if we must invert the sense of the following branch, i.e.
+ change EQ to NE. This is not safe for IEEE floating point operations!
+ It is intended for use only when a combination of arithmetic
+ or logical insns can leave the condition codes set in a fortuitous
+ (though inverted) state. */
+#define CC_INVERTED 0100
+
+/* This is how to initialize the variable cc_status.
+ final does this at appropriate moments. */
+
+#define CC_STATUS_INIT \
+ (cc_status.flags = 0, cc_status.value1 = 0, cc_status.value2 = 0, \
+ CC_STATUS_MDEP_INIT)
+
+#endif
diff --git a/gcc/gsyms.h b/gcc/gsyms.h
new file mode 100644
index 0000000..a2054bb
--- /dev/null
+++ b/gcc/gsyms.h
@@ -0,0 +1,76 @@
+/* For cross compilation, use the portable definitions from the COFF
+ documentation. */
+
+#define __GNU_SYMS__
+
+enum sdb_storage_class
+{
+ C_EFCN = -1,
+ C_NULL = 0,
+ C_AUTO = 1,
+ C_EXT = 2,
+ C_STAT = 3,
+ C_REG = 4,
+ C_EXTDEF = 5,
+ C_LABEL = 6,
+ C_ULABEL = 7,
+ C_MOS = 8,
+ C_ARG = 9,
+ C_STRTAG = 10,
+ C_MOU = 11,
+ C_UNTAG = 12,
+ C_TPDEF = 13,
+ C_USTATIC = 14,
+ C_ENTAG = 15,
+ C_MOE = 16,
+ C_REGPARM = 17,
+ C_FIELD = 18,
+
+ C_BLOCK = 100,
+ C_FCN = 101,
+ C_EOS = 102,
+ C_FILE = 103,
+ C_LINE = 104,
+ C_ALIAS = 105,
+ C_HIDDEN = 106
+};
+
+enum sdb_type
+{
+ T_NULL = 0,
+ T_ARG = 1,
+ T_VOID = 1,
+ T_CHAR = 2,
+ T_SHORT = 3,
+ T_INT = 4,
+ T_LONG = 5,
+ T_FLOAT = 6,
+ T_DOUBLE = 7,
+ T_STRUCT = 8,
+ T_UNION = 9,
+ T_ENUM = 10,
+ T_MOE = 11,
+ T_UCHAR = 12,
+ T_USHORT = 13,
+ T_UINT = 14,
+ T_ULONG = 15
+};
+
+enum sdb_type_class
+{
+ DT_NON = 0,
+ DT_PTR = 1,
+ DT_FCN = 2,
+ DT_ARY = 3
+};
+
+enum sdb_masks
+{
+ N_BTMASK = 017,
+ N_TMASK = 060,
+ N_TMASK1 = 0300,
+ N_TMASK2 = 0360,
+ N_BTSHFT = 4,
+ N_TSHIFT = 2
+};
+