diff options
author | Matt Austern <austern@apple.com> | 2004-11-24 18:22:27 +0000 |
---|---|---|
committer | Matt Austern <austern@gcc.gnu.org> | 2004-11-24 18:22:27 +0000 |
commit | f5523e6dedd24c21d7127775a6322399eccefcc9 (patch) | |
tree | 541afad07a054071f9b596da5f93ae365b489e19 /gcc/recog.h | |
parent | 62a4d9428b459473bdb080c9734c1db46e87d6dd (diff) | |
download | gcc-f5523e6dedd24c21d7127775a6322399eccefcc9.zip gcc-f5523e6dedd24c21d7127775a6322399eccefcc9.tar.gz gcc-f5523e6dedd24c21d7127775a6322399eccefcc9.tar.bz2 |
Minor back end speedup.
* recog.c (recog_memoized_1): Remove.
* recog.h (recog_memoized_1): Remove declaration.
(recog_memoized): Change from macro to inline function.
From-SVN: r91185
Diffstat (limited to 'gcc/recog.h')
-rw-r--r-- | gcc/recog.h | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/gcc/recog.h b/gcc/recog.h index eae37fb..3e88fad5 100644 --- a/gcc/recog.h +++ b/gcc/recog.h @@ -21,8 +21,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA /* 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 { @@ -73,7 +71,6 @@ struct operand_alternative extern void init_recog (void); extern void init_recog_no_volatile (void); -extern int recog_memoized_1 (rtx); extern int check_asm_operands (rtx); extern int asm_operand_ok (rtx, const char *); extern int validate_change (rtx, rtx *, rtx, int); @@ -102,6 +99,7 @@ extern int offsettable_address_p (int, enum machine_mode, rtx); extern int mode_dependent_address_p (rtx); extern int recog (rtx, rtx, int *); +static inline int recog_memoized (rtx insn); extern void add_clobbers (rtx, int); extern int added_clobbers_hard_reg_p (int); extern void insn_extract (rtx); @@ -122,6 +120,23 @@ extern rtx peephole2_insns (rtx, rtx, int *); extern int store_data_bypass_p (rtx, rtx); extern int if_test_bypass_p (rtx, rtx); +/* Try recognizing the instruction INSN, + and return the code number that results. + Remember the code so that repeated calls do not + need to spend the time for actual rerecognition. + + This function is the normal interface to instruction recognition. + The automatically-generated function `recog' is normally called + through this one. (The only exception is in combine.c.) */ + +static inline int +recog_memoized (rtx insn) +{ + if (INSN_CODE (insn) < 0) + INSN_CODE (insn) = recog (PATTERN (insn), insn, 0); + return INSN_CODE (insn); +} + /* Nonzero means volatile operands are recognized. */ extern int volatile_ok; |