diff options
Diffstat (limited to 'gcc/config/pa/pa.h')
-rw-r--r-- | gcc/config/pa/pa.h | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index 9130d6177ee..30b982a0aec 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -1262,6 +1262,13 @@ extern int may_call_alloca; || cint_ok_for_move (INTVAL (X)))) \ && !function_label_operand (X, VOIDmode)) +/* Target flags set on a symbol_ref. */ + +/* Set by ASM_OUTPUT_SYMBOL_REF when a symbol_ref is output. */ +#define SYMBOL_FLAG_REFERENCED (1 << SYMBOL_FLAG_MACH_DEP_SHIFT) +#define SYMBOL_REF_REFERENCED_P(RTX) \ + ((SYMBOL_REF_FLAGS (RTX) & SYMBOL_FLAG_REFERENCED) != 0) + /* Subroutines for EXTRA_CONSTRAINT. Return 1 iff OP is a pseudo which did not get a hard register and @@ -1532,7 +1539,12 @@ extern int may_call_alloca; && (TARGET_NO_SPACE_REGS \ ? (base && REG_P (index)) \ : (base == XEXP (X, 1) && REG_P (index) \ - && REG_POINTER (base) && !REG_POINTER (index))) \ + && (reload_completed \ + || (reload_in_progress && HARD_REGISTER_P (base)) \ + || REG_POINTER (base)) \ + && (reload_completed \ + || (reload_in_progress && HARD_REGISTER_P (index)) \ + || !REG_POINTER (index)))) \ && MODE_OK_FOR_UNSCALED_INDEXING_P (MODE) \ && REG_OK_FOR_INDEX_P (index) \ && borx_reg_operand (base, Pmode) \ @@ -1949,6 +1961,14 @@ forget_section (void) \ fputs (xname, FILE); \ } while (0) +/* This how we output the symbol_ref X. */ + +#define ASM_OUTPUT_SYMBOL_REF(FILE,X) \ + do { \ + SYMBOL_REF_FLAGS (X) |= SYMBOL_FLAG_REFERENCED; \ + assemble_name (FILE, XSTR (X, 0)); \ + } while (0) + /* This is how to store into the string LABEL the symbol_ref name of an internal numbered label where PREFIX is the class of label and NUM is the number within the class. |