extern int flag_traditional;
extern FILE *asm_out_file;
-static char out_sccs_id[] = "@(#)m88k.c 1.96.5.2 06 Feb 1992 10:02:20";
+static char out_sccs_id[] = "@(#)m88k.c 2.0.2.1 28 Feb 1992 12:36:54";
static char tm_sccs_id [] = TM_SCCS_ID;
char *m88k_pound_sign = ""; /* Either # for SVR4 or empty for SVR3 */
rtx m88k_compare_reg; /* cmp output pseudo register */
rtx m88k_compare_op0; /* cmpsi operand 0 */
rtx m88k_compare_op1; /* cmpsi operand 1 */
+
+enum attr_cpu m88k_cpu; /* target cpu */
\f
/* Determine what instructions are needed to manufacture the integer VALUE
in the given MODE. */
offset -= m88k_stack_size;
else if (reg != arg_pointer_rtx)
{
+#if (MONITOR_GCC & 0x10) /* Watch for suspicious symbolic locations. */
if (! (GET_CODE (reg) == REG
&& REGNO (reg) >= FIRST_PSEUDO_REGISTER))
- /* @@ For now, I'd like to know if this happens. */
warning ("Internal gcc error: Can't express symbolic location");
+#endif
return 0;
}
extern struct rtx_def *m88k_compare_op0;
extern struct rtx_def *m88k_compare_op1;
+extern enum attr_cpu m88k_cpu;
+
extern int null_epilogue ();
extern int integer_ok_for_set ();
extern int m88k_debugger_offset ();
/* Print subsidiary information on the compiler version in use.
Redefined in m88kv4.h, and m88kluna.h. */
#define VERSION_INFO1 "88open OCS/BCS, "
-#define VERSION_INFO2 "12 Feb 1992"
+#define VERSION_INFO2 "28 Feb 1992"
#define VERSION_STRING version_string
-#define TM_SCCS_ID "@(#)m88k.h 1.96.5.5 12 Feb 1992 12:59:25"
+#define TM_SCCS_ID "@(#)m88k.h 2.0.2.1 28 Feb 1992 12:37:41"
/* Run-time compilation parameters selecting different hardware subsets. */
if ((target_flags & MASK_88000) == 0) \
target_flags |= CPU_DEFAULT; \
\
+ m88k_cpu = (TARGET_88000 ? CPU_M88000 \
+ : (TARGET_88100 ? CPU_M88100 : CPU_M88110)); \
+ \
if (TARGET_BIG_PIC) \
flag_pic = 2; \
\
(define_expand "m88k_sccs_id"
[(match_operand:SI 0 "" "")]
""
- "{ static char sccs_id[] = \"@(#)m88k.md 1.96.4.3 1/14/92 09:46:15\";
+ "{ static char sccs_id[] = \"@(#)m88k.md 2.0.2.1 28 Feb 1992 12:38:31\";
FAIL; }")
\f
;; Attribute specifications
+; Target CPU.
+(define_attr "cpu" "m88000,m88100,m88110"
+ (symbol_ref "m88k_cpu"))
+
; Type of each instruction. Default is arithmetic.
; I'd like to write the list as this, but genattrtab won't accept it.
;
;; The actual compare instructions.
(define_insn ""
- [(set (match_operand:CC 0 "register_operand" "=r,r")
- (compare:CC (match_operand:SI 1 "register_operand" "rO,I")
- (match_operand:SI 2 "arith_operand" "rI,r")))]
+ [(set (match_operand:CC 0 "register_operand" "=r")
+ (compare:CC (match_operand:SI 1 "register_operand" "rO")
+ (match_operand:SI 2 "arith_operand" "rI")))]
""
- "@
- cmp %0,%r1,%2
- cmp %0,%2,%1\;xor.c %0,%#r0,%0"
- [(set_attr "type" "arith,marith")])
+ "cmp %0,%r1,%2")
(define_insn ""
[(set (match_operand:CC 0 "register_operand" "=r,r")
reg1 = XEXP (addr, 1);
addr = XEXP (addr, 0);
}
+ else if (GET_CODE (XEXP (addr, 0)) == REG)
+ {
+ reg1 = XEXP (addr, 0);
+ addr = XEXP (addr, 1);
+ }
else
abort ();