diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-09-14 23:23:17 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-09-14 23:23:17 +0000 |
commit | ec8a2ceccee08f7ce443792a77012622dfae4d67 (patch) | |
tree | 90fc3d83b06445a99964e9388ae95062502885c5 /gcc/recog.h | |
parent | ba952bbf8148d262e8ef2f13dc679461fe937912 (diff) | |
download | gcc-ec8a2ceccee08f7ce443792a77012622dfae4d67.tar.gz |
* recog.h (struct recog_data): Make dup_num, operand_address_p,
n_operands, n_dups, n_alternatives `char' instead of `unsigned char'.
(struct insn_data): Likewise with n_operands, n_dups,
n_alternatives, output_format.
* regclass.c (scan_one_insn): Cast n_operands to int before
arithmetic inside comparison.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29413 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/recog.h')
-rw-r--r-- | gcc/recog.h | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/gcc/recog.h b/gcc/recog.h index e5875d59293..869bb31455c 100644 --- a/gcc/recog.h +++ b/gcc/recog.h @@ -156,21 +156,31 @@ struct recog_data /* Gives the operand number that was duplicated in the Nth duplicate-appearance of an operand. */ - unsigned char dup_num[MAX_DUP_OPERANDS]; + char dup_num[MAX_DUP_OPERANDS]; #ifndef REGISTER_CONSTRAINTS /* Nonzero if operand N should be an address. */ - unsigned char operand_address_p[MAX_RECOG_OPERANDS]; + char operand_address_p[MAX_RECOG_OPERANDS]; #endif + /* ??? Note that these are `char' instead of `unsigned char' to (try to) + avoid certain lossage from K&R C, wherein `unsigned char' default + promotes to `unsigned int' instead of `int' as in ISO C. As of 1999, + the most common places to bootstrap from K&R C are SunOS and HPUX, + both of which have signed characters by default. The only other + supported natives that have both K&R C and unsigned characters are + ROMP and Irix 3, and neither have been seen for a while, but do + continue to consider unsignedness when performing arithmetic inside + a comparison. */ + /* The number of operands of the insn. */ - unsigned char n_operands; + char n_operands; /* The number of MATCH_DUPs in the insn. */ - unsigned char n_dups; + char n_dups; /* The number of alternatives in the constraints for the insn. */ - unsigned char n_alternatives; + char n_alternatives; }; extern struct recog_data recog_data; @@ -225,10 +235,10 @@ struct insn_data insn_gen_fn genfun; const struct insn_operand_data *operand; - unsigned char n_operands; - unsigned char n_dups; - unsigned char n_alternatives; - unsigned char output_format; + char n_operands; + char n_dups; + char n_alternatives; + char output_format; }; extern const struct insn_data insn_data[]; |