From: Stephane Carrez Date: Sat, 12 Apr 2003 21:52:33 +0000 (+0200) Subject: * config/m68hc11/m68hc11-protos.h X-Git-Tag: releases/gcc-3.4.0~7332 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cebcfdc87f29ba2dcbcb72052999a1795df34c34;p=thirdparty%2Fgcc.git * config/m68hc11/m68hc11-protos.h (m68hc11_eq_compare_operator): Declare * config/m68hc11/m68hc11.h (PREDICATE_CODES): Register new predicate. * config/m68hc11/m68hc11.c (m68hc11_eq_compare_operator): New predicate (d_register_operand): Check the operand mode. (hard_addr_reg_operand): Likewise. From-SVN: r65529 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4f73a65c7363..c49afa1e8f44 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2003-04-12 Stephane Carrez + + * config/m68hc11/m68hc11-protos.h + (m68hc11_eq_compare_operator): Declare + * config/m68hc11/m68hc11.h (PREDICATE_CODES): Register new predicate. + * config/m68hc11/m68hc11.c (m68hc11_eq_compare_operator): New predicate + (d_register_operand): Check the operand mode. + (hard_addr_reg_operand): Likewise. + 2003-04-12 Stephane Carrez * config/m68hc11/m68hc11.md ("decrement_and_branch_until_zero"): New diff --git a/gcc/config/m68hc11/m68hc11-protos.h b/gcc/config/m68hc11/m68hc11-protos.h index 20b5ae02fa4e..3c814d73ece4 100644 --- a/gcc/config/m68hc11/m68hc11-protos.h +++ b/gcc/config/m68hc11/m68hc11-protos.h @@ -120,6 +120,7 @@ extern int m68hc11_arith_operator PARAMS((rtx, enum machine_mode)); extern int m68hc11_non_shift_operator PARAMS((rtx, enum machine_mode)); extern int m68hc11_shift_operator PARAMS((rtx, enum machine_mode)); extern int m68hc11_unary_operator PARAMS((rtx, enum machine_mode)); +extern int m68hc11_eq_compare_operator PARAMS((rtx, enum machine_mode)); extern int non_push_operand PARAMS((rtx, enum machine_mode)); extern int hard_reg_operand PARAMS((rtx, enum machine_mode)); extern int soft_reg_operand PARAMS((rtx, enum machine_mode)); diff --git a/gcc/config/m68hc11/m68hc11.c b/gcc/config/m68hc11/m68hc11.c index 5c762cace35f..abada3cc2848 100644 --- a/gcc/config/m68hc11/m68hc11.c +++ b/gcc/config/m68hc11/m68hc11.c @@ -1026,6 +1026,9 @@ d_register_operand (operand, mode) rtx operand; enum machine_mode mode ATTRIBUTE_UNUSED; { + if (GET_MODE (operand) != mode && mode != VOIDmode) + return 0; + if (GET_CODE (operand) == SUBREG) operand = XEXP (operand, 0); @@ -1040,6 +1043,9 @@ hard_addr_reg_operand (operand, mode) rtx operand; enum machine_mode mode ATTRIBUTE_UNUSED; { + if (GET_MODE (operand) != mode && mode != VOIDmode) + return 0; + if (GET_CODE (operand) == SUBREG) operand = XEXP (operand, 0); @@ -1131,6 +1137,14 @@ symbolic_memory_operand (op, mode) } } +int +m68hc11_eq_compare_operator (op, mode) + register rtx op; + enum machine_mode mode ATTRIBUTE_UNUSED; +{ + return GET_CODE (op) == EQ || GET_CODE (op) == NE; +} + int m68hc11_logical_operator (op, mode) register rtx op; diff --git a/gcc/config/m68hc11/m68hc11.h b/gcc/config/m68hc11/m68hc11.h index cb689cc6454f..a29f56d70053 100644 --- a/gcc/config/m68hc11/m68hc11.h +++ b/gcc/config/m68hc11/m68hc11.h @@ -1665,6 +1665,7 @@ do { \ {"m68hc11_non_shift_operator", {AND, IOR, XOR, PLUS, MINUS}}, \ {"m68hc11_unary_operator", {NEG, NOT, SIGN_EXTEND, ZERO_EXTEND}}, \ {"m68hc11_shift_operator", {ASHIFT, ASHIFTRT, LSHIFTRT, ROTATE, ROTATERT}},\ +{"m68hc11_eq_compare_operator", {EQ, NE}}, \ {"non_push_operand", {SUBREG, REG, MEM}}, \ {"reg_or_some_mem_operand", {SUBREG, REG, MEM}}, \ {"tst_operand", {SUBREG, REG, MEM}}, \