RISC-V: make USE_LOAD_ADDRESS_MACRO easier to understand

The current macro has several && and || making it really hard to understand
the first time.

Signed-off-by: Vineet Gupta <vineetg@rivosinc.com>

gcc/ChangeLog:

	* config/riscv/riscv.h (LOCAL_SYM_P): New.
	(USE_LOAD_ADDRESS_MACRO): Simplify by calling LOCAL_SYM_P.
This commit is contained in:
Vineet Gupta 2022-09-02 16:08:20 -07:00 committed by Kito Cheng
parent b2fe02b476
commit 7d4df630c6

View file

@ -749,18 +749,19 @@ typedef struct {
#define CASE_VECTOR_MODE SImode
#define CASE_VECTOR_PC_RELATIVE (riscv_cmodel != CM_MEDLOW)
#define LOCAL_SYM_P(sym) \
((SYMBOL_REF_P (sym) && SYMBOL_REF_LOCAL_P (sym)) \
|| ((GET_CODE (sym) == CONST) \
&& SYMBOL_REF_P (XEXP (XEXP (sym, 0),0)) \
&& SYMBOL_REF_LOCAL_P (XEXP (XEXP (sym, 0),0))))
/* The load-address macro is used for PC-relative addressing of symbols
that bind locally. Don't use it for symbols that should be addressed
via the GOT. Also, avoid it for CM_MEDLOW, where LUI addressing
currently results in more opportunities for linker relaxation. */
#define USE_LOAD_ADDRESS_MACRO(sym) \
(!TARGET_EXPLICIT_RELOCS && \
((flag_pic \
&& ((SYMBOL_REF_P (sym) && SYMBOL_REF_LOCAL_P (sym)) \
|| ((GET_CODE (sym) == CONST) \
&& SYMBOL_REF_P (XEXP (XEXP (sym, 0),0)) \
&& SYMBOL_REF_LOCAL_P (XEXP (XEXP (sym, 0),0))))) \
|| riscv_cmodel == CM_MEDANY))
((flag_pic && LOCAL_SYM_P (sym)) || riscv_cmodel == CM_MEDANY))
/* Define this as 1 if `char' should by default be signed; else as 0. */
#define DEFAULT_SIGNED_CHAR 0