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
This commit is contained in:
Matt Austern 2004-11-24 18:22:27 +00:00 committed by Matt Austern
parent 62a4d9428b
commit f5523e6ded
3 changed files with 24 additions and 19 deletions

View File

@ -1,3 +1,9 @@
2004-11-24 Matt Austern <austern@apple.com>
* recog.c (recog_memoized_1): Remove.
* recog.h (recog_memoized_1): Remove declaration.
(recog_memoized): Change from macro to inline function.
2004-11-24 Devang Patel <dpatel@apple.com> 2004-11-24 Devang Patel <dpatel@apple.com>
PR/18555 PR/18555

View File

@ -107,22 +107,6 @@ init_recog (void)
volatile_ok = 1; volatile_ok = 1;
} }
/* 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.) */
int
recog_memoized_1 (rtx insn)
{
if (INSN_CODE (insn) < 0)
INSN_CODE (insn) = recog (PATTERN (insn), insn, 0);
return INSN_CODE (insn);
}
/* Check that X is an insn-body for an `asm' with operands /* Check that X is an insn-body for an `asm' with operands
and that the operands mentioned in it are legitimate. */ and that the operands mentioned in it are legitimate. */

View File

@ -21,8 +21,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
/* Random number that should be large enough for all purposes. */ /* Random number that should be large enough for all purposes. */
#define MAX_RECOG_ALTERNATIVES 30 #define MAX_RECOG_ALTERNATIVES 30
#define recog_memoized(I) (INSN_CODE (I) >= 0 \
? INSN_CODE (I) : recog_memoized_1 (I))
/* Types of operands. */ /* Types of operands. */
enum op_type { enum op_type {
@ -73,7 +71,6 @@ struct operand_alternative
extern void init_recog (void); extern void init_recog (void);
extern void init_recog_no_volatile (void); extern void init_recog_no_volatile (void);
extern int recog_memoized_1 (rtx);
extern int check_asm_operands (rtx); extern int check_asm_operands (rtx);
extern int asm_operand_ok (rtx, const char *); extern int asm_operand_ok (rtx, const char *);
extern int validate_change (rtx, rtx *, rtx, int); 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 mode_dependent_address_p (rtx);
extern int recog (rtx, rtx, int *); extern int recog (rtx, rtx, int *);
static inline int recog_memoized (rtx insn);
extern void add_clobbers (rtx, int); extern void add_clobbers (rtx, int);
extern int added_clobbers_hard_reg_p (int); extern int added_clobbers_hard_reg_p (int);
extern void insn_extract (rtx); 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 store_data_bypass_p (rtx, rtx);
extern int if_test_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. */ /* Nonzero means volatile operands are recognized. */
extern int volatile_ok; extern int volatile_ok;