Commit ac030a7b by Richard Kenner

(EXTRA_CONSTRAINT): Add new letter, `R'.

(ENCODE_SECTION_INFO): Don't check TREE_ASM_WRITTEN.
(PREDICATE_COSTS): Add call_operand.

From-SVN: r7965
parent 7eec3328
...@@ -510,10 +510,13 @@ enum reg_class { NO_REGS, GENERAL_REGS, FLOAT_REGS, ALL_REGS, ...@@ -510,10 +510,13 @@ enum reg_class { NO_REGS, GENERAL_REGS, FLOAT_REGS, ALL_REGS,
/* Optional extra constraints for this machine. /* Optional extra constraints for this machine.
For the Alpha, `Q' means that this is a memory operand but not a For the Alpha, `Q' means that this is a memory operand but not a
reference to an unaligned location. */ reference to an unaligned location.
`R' is a SYMBOL_REF that has SYMBOL_REF_FLAG set or is the current
function. */
#define EXTRA_CONSTRAINT(OP, C) \ #define EXTRA_CONSTRAINT(OP, C) \
((C) == 'Q' ? GET_CODE (OP) == MEM && GET_CODE (XEXP (OP, 0)) != AND \ ((C) == 'Q' ? GET_CODE (OP) == MEM && GET_CODE (XEXP (OP, 0)) != AND \
: (C) == 'R' ? current_file_function_operand (OP, Pmode) \
: 0) : 0)
/* Given an rtx X being reloaded into a reg required to be /* Given an rtx X being reloaded into a reg required to be
...@@ -1514,14 +1517,12 @@ literal_section () \ ...@@ -1514,14 +1517,12 @@ literal_section () \
#define READONLY_DATA_SECTION literal_section #define READONLY_DATA_SECTION literal_section
/* If we are referencing a function that is static or is known to be /* If we are referencing a function that is static, make the SYMBOL_REF
in this file, make the SYMBOL_REF special. We can use this to see special. We use this to see indicate we can branch to this function
indicate that we can branch to this function without setting PV or without setting PV or restoring GP. */
restoring GP. */
#define ENCODE_SECTION_INFO(DECL) \ #define ENCODE_SECTION_INFO(DECL) \
if (TREE_CODE (DECL) == FUNCTION_DECL \ if (TREE_CODE (DECL) == FUNCTION_DECL && ! TREE_PUBLIC (DECL)) \
&& (TREE_ASM_WRITTEN (DECL) || ! TREE_PUBLIC (DECL))) \
SYMBOL_REF_FLAG (XEXP (DECL_RTL (DECL), 0)) = 1; SYMBOL_REF_FLAG (XEXP (DECL_RTL (DECL), 0)) = 1;
/* How to refer to registers in assembler output. /* How to refer to registers in assembler output.
...@@ -1837,6 +1838,7 @@ literal_section () \ ...@@ -1837,6 +1838,7 @@ literal_section () \
{"divmod_operator", {DIV, MOD, UDIV, UMOD}}, \ {"divmod_operator", {DIV, MOD, UDIV, UMOD}}, \
{"fp0_operand", {CONST_DOUBLE}}, \ {"fp0_operand", {CONST_DOUBLE}}, \
{"current_file_function_operand", {SYMBOL_REF}}, \ {"current_file_function_operand", {SYMBOL_REF}}, \
{"call_operand", {REG, SYMBOL_REF}}, \
{"input_operand", {SUBREG, REG, MEM, CONST_INT, CONST_DOUBLE, \ {"input_operand", {SUBREG, REG, MEM, CONST_INT, CONST_DOUBLE, \
SYMBOL_REF, CONST, LABEL_REF}}, \ SYMBOL_REF, CONST, LABEL_REF}}, \
{"aligned_memory_operand", {MEM}}, \ {"aligned_memory_operand", {MEM}}, \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment