diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-11-04 21:25:00 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-11-04 21:25:00 +0000 |
commit | 7f82be900335f5db3b3604365cc7f746789b43a4 (patch) | |
tree | 99a39e0c8a6a367f35a2aad560dc42aff38fce41 /gcc/recog.h | |
parent | 1d2be6a7034a4264ce912ee8c4cc15d858f1c4af (diff) | |
download | gcc-7f82be900335f5db3b3604365cc7f746789b43a4.tar.gz |
* recog.h (enum op_type): Define.
(constrain_operands): Adjust prototype.
(recog_op_type): Declare new variable.
* recog.c (recog_op_type): New variable.
(insn_invalid_p): Allow modifying an asm statement after reload.
(extract_insn): Set up recog_op_type.
(constrain_operands): Lose INSN_CODE_NUM arg. All callers changed.
Don't compute operand types, use recog_op_type.
Use the information computed by extract_insn instead of the previous
method of finding it by insn code number.
* caller-save.c (init_caller_save): Use extract_insn, not insn_extract.
* reorg.c (fill_slots_from_thread): Likewise.
* reload1.c (reload_as_needed): Likewise.
(gen_reload): Likewise.
(inc_for_reload): Likewise.
(reload_cse_simplify_operands): Likewise.
Use the information computed by extract_insn instead of the previous
method of finding it by insn code number.
* genattrtab.c (write_attr_case): Generate call to extract_insn, not
insn_extract.
* final.c (final_scan_insn): Use extract_insn, not insn_extract.
(cleanup_operand_subregs): Use extract_insn, not insn_extract.
Use the information computed by extract_insn instead of the previous
method of finding it by insn code number.
* regmove.c (find_matches): Likewise. Change meaning of the return
value to be nonzero if the optimization can be performed, zero if
not. All callers changed.
Shorten some variable names to fix formatting problems.
(regmove_optimize): Shorten some variable names to fix formatting
problems.
Use the information computed by extract_insn instead of the previous
method of finding it by insn code number.
* regclass.c (scan_one_insn): Likewise.
(record_reg_classes): Don't compute operand types, use recog_op_type.
* reload.c (find_reloads): Lose CONSTRAINTS1 variable; use
recog_constraints instead.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23529 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/recog.h')
-rw-r--r-- | gcc/recog.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/recog.h b/gcc/recog.h index 1bf77b4d0fc..d96da77fccc 100644 --- a/gcc/recog.h +++ b/gcc/recog.h @@ -20,6 +20,13 @@ Boston, MA 02111-1307, USA. */ #include "gansidecl.h" +/* Types of operands. */ +enum op_type { + OP_IN, + OP_OUT, + OP_INOUT +}; + extern void init_recog PROTO((void)); extern void init_recog_no_volatile PROTO((void)); extern int recog_memoized PROTO((rtx)); @@ -28,7 +35,7 @@ extern int validate_change PROTO((rtx, rtx *, rtx, int)); extern int apply_change_group PROTO((void)); extern int num_validated_changes PROTO((void)); extern void cancel_changes PROTO((int)); -extern int constrain_operands PROTO((int, int)); +extern int constrain_operands PROTO((int)); extern int memory_address_p PROTO((enum machine_mode, rtx)); extern int strict_memory_address_p PROTO((enum machine_mode, rtx)); extern int validate_replace_rtx PROTO((rtx, rtx, rtx)); @@ -103,6 +110,9 @@ extern enum machine_mode recog_operand_mode[]; /* Indexed by N, gives the constraint string for operand N. */ extern char *recog_constraints[]; +/* Indexed by N, gives the type (in, out, inout) for operand N. */ +extern enum op_type recog_op_type[]; + #ifndef REGISTER_CONSTRAINTS /* Indexed by N, nonzero if operand N should be an address. */ extern char recog_operand_address_p[]; |