diff options
author | Daniel Jacobowitz <dan@debian.org> | 2004-10-12 19:28:56 +0000 |
---|---|---|
committer | Daniel Jacobowitz <dan@debian.org> | 2004-10-12 19:28:56 +0000 |
commit | 6d8aab3139d2bc27fc4e7c9f6f8b1426da37bdc2 (patch) | |
tree | 32fb1749887c1bb5a4613d1d87b18c9a8537c8f4 /gcc/defaults.h | |
parent | 901014674ddd97981f597b1e7bc641ce12b92095 (diff) |
* defaults.h (REGNO_MODE_OK_FOR_BASE_P, REG_MODE_OK_FOR_BASE_P)
(MODE_BASE_REG_REG_CLASS, REGNO_MODE_OK_FOR_REG_BASE_P)
(REG_MODE_OK_FOR_REG_BASE_P): Provide default definitions.
* regclass.c (record_address_regs): Remove ifdef. Use
REG_MODE_OK_FOR_REG_BASE_P and MODE_BASE_REG_REG_CLASS.
* regrename.c (REG_MODE_OK_FOR_BASE_P): Remove unnecessary
definition.
(scan_rtx_address, replace_oldest_value_addr): Use
REG_MODE_OK_FOR_REG_BASE_P and MODE_BASE_REG_REG_CLASS.
* reload.c (REGNO_MODE_OK_FOR_BASE_P, REG_MODE_OK_FOR_BASE_P): Remove
unnecessary definitions.
(find_reloads_address_1): Support REG_MODE_OK_FOR_REG_BASE_P
and MODE_BASE_REG_REG_CLASS.
* config/arm/arm.h (MODE_BASE_REG_CLASS): Don't check reload_completed.
(MODE_BASE_REG_REG_CLASS): Define.
(REGNO_MODE_OK_FOR_REG_BASE_P): Define.
(REG_MODE_OK_FOR_REG_BASE_P): Define.
* doc/tm.texi (Register Classes): Document MODE_BASE_REG_REG_CLASS,
REG_MODE_OK_FOR_REG_BASE_P, and REGNO_MODE_OK_FOR_REG_BASE_P.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@88948 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/defaults.h')
-rw-r--r-- | gcc/defaults.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/gcc/defaults.h b/gcc/defaults.h index d842742e760..5aa667d9461 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -577,6 +577,19 @@ do { fputs (integer_asm_op (POINTER_SIZE / BITS_PER_UNIT, TRUE), FILE); \ #define TARGET_FLOAT_FORMAT IEEE_FLOAT_FORMAT #endif +/* Some macros can be defined by the backend in either a mode-dependent + or mode-independent form. The compiler proper should only use the + mode-dependent form, providing VOIDmode when the mode is unknown. + We can't poison the macros because the backend may reference them. */ + +#ifndef REGNO_MODE_OK_FOR_BASE_P +#define REGNO_MODE_OK_FOR_BASE_P(REGNO, MODE) REGNO_OK_FOR_BASE_P (REGNO) +#endif + +#ifndef REG_MODE_OK_FOR_BASE_P +#define REG_MODE_OK_FOR_BASE_P(REG, MODE) REG_OK_FOR_BASE_P (REG) +#endif + /* Determine the register class for registers suitable to be the base address register in a MEM. Allow the choice to be dependent upon the mode of the memory access. */ @@ -584,6 +597,20 @@ do { fputs (integer_asm_op (POINTER_SIZE / BITS_PER_UNIT, TRUE), FILE); \ #define MODE_BASE_REG_CLASS(MODE) BASE_REG_CLASS #endif +/* Some machines require a different base register class if the index + is a register. By default, assume that a base register is acceptable. */ +#ifndef MODE_BASE_REG_REG_CLASS +#define MODE_BASE_REG_REG_CLASS(MODE) MODE_BASE_REG_CLASS(MODE) +#endif + +#ifndef REGNO_MODE_OK_FOR_REG_BASE_P +#define REGNO_MODE_OK_FOR_REG_BASE_P(REGNO, MODE) REGNO_MODE_OK_FOR_BASE_P (REGNO, MODE) +#endif + +#ifndef REG_MODE_OK_FOR_REG_BASE_P +#define REG_MODE_OK_FOR_REG_BASE_P(REGNO, MODE) REG_MODE_OK_FOR_BASE_P (REGNO, MODE) +#endif + #ifndef LARGEST_EXPONENT_IS_NORMAL #define LARGEST_EXPONENT_IS_NORMAL(SIZE) 0 #endif |