recog: Split out a register_asm_p function
verify_changes has a test for whether a particular hard register is a user-defined register asm. A later patch needs to test the same thing, so this patch splits it out into a helper. gcc/ * rtl.h (register_asm_p): Declare. * recog.c (verify_changes): Split out the test for whether a hard register is a register asm to... * rtlanal.c (register_asm_p): ...this new function.
This commit is contained in:
parent
d6c9781e07
commit
b665081f57
@ -408,10 +408,7 @@ verify_changes (int num)
|
||||
changes[i].old
|
||||
&& REG_P (changes[i].old)
|
||||
&& asm_noperands (PATTERN (object)) > 0
|
||||
&& REG_EXPR (changes[i].old) != NULL_TREE
|
||||
&& HAS_DECL_ASSEMBLER_NAME_P (REG_EXPR (changes[i].old))
|
||||
&& DECL_ASSEMBLER_NAME_SET_P (REG_EXPR (changes[i].old))
|
||||
&& DECL_REGISTER (REG_EXPR (changes[i].old)))
|
||||
&& register_asm_p (changes[i].old))
|
||||
{
|
||||
/* Don't allow changes of hard register operands to inline
|
||||
assemblies if they have been defined as register asm ("x"). */
|
||||
|
@ -3525,6 +3525,7 @@ extern rtx tablejump_casesi_pattern (const rtx_insn *insn);
|
||||
extern int computed_jump_p (const rtx_insn *);
|
||||
extern bool tls_referenced_p (const_rtx);
|
||||
extern bool contains_mem_rtx_p (rtx x);
|
||||
extern bool register_asm_p (const_rtx);
|
||||
|
||||
/* Overload for refers_to_regno_p for checking a single register. */
|
||||
inline bool
|
||||
|
@ -6617,3 +6617,15 @@ add_auto_inc_notes (rtx_insn *insn, rtx x)
|
||||
add_auto_inc_notes (insn, XVECEXP (x, i, j));
|
||||
}
|
||||
}
|
||||
|
||||
/* Return true if X is register asm. */
|
||||
|
||||
bool
|
||||
register_asm_p (const_rtx x)
|
||||
{
|
||||
return (REG_P (x)
|
||||
&& REG_EXPR (x) != NULL_TREE
|
||||
&& HAS_DECL_ASSEMBLER_NAME_P (REG_EXPR (x))
|
||||
&& DECL_ASSEMBLER_NAME_SET_P (REG_EXPR (x))
|
||||
&& DECL_REGISTER (REG_EXPR (x)));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user