Hi, I created a set of scripts that generates predicates.md based on PREDICATE_CODES in tm.h. The generated file looks like this:
;; Predicate definitions for FIXME FIXME. ;; Copyright (C) 2005 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; ;; : ;; : Usual copyright notice ;; : ;; Return true if OP is a valid source operand for an integer move instruction. (define_predicate "general_operand_src" (match_code "const_int,const_double,const,symbol_ref,label_ref,subreg,reg,mem") { if (GET_MODE (op) == mode && GET_CODE (op) == MEM && GET_CODE (XEXP (op, 0)) == POST_INC) return 1; return general_operand (op, mode); }) : : More predicates follow. : 1. A copyright is automatically inserted except the port name. 2. A comment for each function is taken from tm.c. 3. The name of a predicate along with codes it accepts are automatically taken from PREDICATE_CODES. 4. The C code for a predicate is automatically taken from tm.c. My scripts will only generate predicate.md. It does not remove PREDICATE_CODES from tm.h, predicates from tm.c, or prototypes from tm-protos.h. All these are left for your code cleanup pleasure. :-) Another thing that my scripts won't do is to convert a C-style predicate to a LISP-style predicate. My scripts are only meant to alleviate the mechanical part of the conversion. Anyway, untar the attachment and run predicatecodes.sh h8300 under config/h8300 to generate predicates.md. Of course, you can replace h8300 with any port with PREDICATE_CODES. My scripts are not robust, so don't blame me if they eat your files. I might actually start posting patches to convert to predicate.md. Kazu Hirata
conv_predicate_codes.tar.gz
Description: Binary data