summaryrefslogtreecommitdiff
path: root/gcc/recog.h
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-29 11:40:24 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-29 11:40:24 +0000
commit60f1f5ccc33cee0c5ab6170d0ed29d2b68e182d5 (patch)
tree86f0f02c1cd763e7136d740c442a6c1fed6e56af /gcc/recog.h
parent6531eca959da0a7e2999f602420911093844e742 (diff)
downloadgcc-60f1f5ccc33cee0c5ab6170d0ed29d2b68e182d5.tar.gz
* final.c (final_scan_insn): Remove extra extract_insn call;
Use caching for constrain_operands. (cleanup_subreg_operands): Use caching for extract_insn. * recog.c (constrain_operands_cached): New. * recog.h (constrain_operands_cached): Declare. * i386.c (ix86_attr_length_immediate_default, ix86_attr_length_address_default, ix86_agi_dependant): Cache extract_insn call. * recog.c (asm_noperands): Tweak. (extract_insn): Do not call asm_noperads for non-asm instructions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36665 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/recog.h')
-rw-r--r--gcc/recog.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/recog.h b/gcc/recog.h
index 3328af6850a..5987cfcbc33 100644
--- a/gcc/recog.h
+++ b/gcc/recog.h
@@ -21,6 +21,8 @@ Boston, MA 02111-1307, USA. */
/* Random number that should be large enough for all purposes. */
#define MAX_RECOG_ALTERNATIVES 30
+#define recog_memoized(I) (INSN_CODE (I) >= 0 \
+ ? INSN_CODE (I) : recog_memoized_1 (I))
/* Types of operands. */
enum op_type {
@@ -69,7 +71,7 @@ struct operand_alternative
extern void init_recog PARAMS ((void));
extern void init_recog_no_volatile PARAMS ((void));
-extern int recog_memoized PARAMS ((rtx));
+extern int recog_memoized_1 PARAMS ((rtx));
extern int check_asm_operands PARAMS ((rtx));
extern int asm_operand_ok PARAMS ((rtx, const char *));
extern int validate_change PARAMS ((rtx, rtx *, rtx, int));
@@ -77,6 +79,7 @@ extern int apply_change_group PARAMS ((void));
extern int num_validated_changes PARAMS ((void));
extern void cancel_changes PARAMS ((int));
extern int constrain_operands PARAMS ((int));
+extern int constrain_operands_cached PARAMS ((int));
extern int memory_address_p PARAMS ((enum machine_mode, rtx));
extern int strict_memory_address_p PARAMS ((enum machine_mode, rtx));
extern int validate_replace_rtx_subexp PARAMS ((rtx, rtx, rtx, rtx *));