After consolidating HI and SI mode patterns for logical bit operators, the remaining patterns "logical<mode>3_sn" "logical<mode>3" are in effect identical.
This patch deletes logical<mode>3_sn. This (not surprisingly) makes no difference in the generated code :-) Installed on the trunk Jeff
* config/h8300/h8300.md (logical<mode>3_sn, logical<mode>3): Merge into a single pattern. diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md index 5014fd5..faa9c78 100644 --- a/gcc/config/h8300/h8300.md +++ b/gcc/config/h8300/h8300.md @@ -1797,34 +1640,13 @@ ;; {AND,IOR,XOR}{HI3,SI3} PATTERNS ;; ---------------------------------------------------------------------- -;; We need a separate pattern here because machines other than the -;; original H8300 don't have to split the 16-bit operand into a pair -;; of high/low instructions, so we can accept literal addresses, that -;; have to be loaded into a register on H8300. - -(define_insn "*logical<mode>3_sn" - [(set (match_operand:HSI 0 "h8300_dst_operand" "=rQ") - (match_operator:HSI 3 "bit_operator" - [(match_operand:HSI 1 "h8300_dst_operand" "%0") - (match_operand:HSI 2 "h8300_src_operand" "rQi")]))] - "(TARGET_H8300S || TARGET_H8300H) && h8300_operands_match_p (operands)" -{ - return output_logical_op (<MODE>mode, operands); -} - [(set (attr "length") - (symbol_ref "compute_logical_op_length (<MODE>mode, operands)")) - (set (attr "cc") - (symbol_ref "compute_logical_op_cc (<MODE>mode, operands)"))]) - (define_insn "*logical<mode>3" [(set (match_operand:HSI 0 "h8300_dst_operand" "=rQ") (match_operator:HSI 3 "bit_operator" [(match_operand:HSI 1 "h8300_dst_operand" "%0") (match_operand:HSI 2 "h8300_src_operand" "rQi")]))] "h8300_operands_match_p (operands)" -{ - return output_logical_op (<MODE>mode, operands); -} + { return output_logical_op (<MODE>mode, operands); } [(set (attr "length") (symbol_ref "compute_logical_op_length (<MODE>mode, operands)")) (set (attr "cc")