From: Richard Kenner Date: Sat, 19 Sep 1992 19:44:05 +0000 (-0400) Subject: (SUBREG_PROMOTED_{VAR,UNSIGNED}_P): New macros. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=07be3989ad978ad4916344110279db68f2770690;p=gcc.git (SUBREG_PROMOTED_{VAR,UNSIGNED}_P): New macros. From-SVN: r2171 --- diff --git a/gcc/rtl.h b/gcc/rtl.h index 3c33410b0b6..0adbed90b52 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -87,6 +87,7 @@ typedef struct rtx_def /* 1 in a MEM or REG if value of this expression will never change during the current function, even though it is not manifestly constant. + 1 in a SUBREG if it is from a promoted variable that is unsigned. 1 in a SYMBOL_REF if it addresses something in the per-function constants pool. 1 in a CALL_INSN if it is a const call. @@ -104,6 +105,8 @@ typedef struct rtx_def 0 if the MEM was a variable or the result of a * operator in C; 1 if it was the result of a . or -> operator (on a struct) in C. 1 in a REG if the register is used only in exit code a loop. + 1 in a SUBREG expression if was generated from a variable with a + promoted mode. 1 in a CODE_LABEL if the label is used for nonlocal gotos and must not be deleted even if its count is zero. 1 in a LABEL_REF if this is a reference to a label outside the @@ -443,6 +446,17 @@ extern char *note_insn_name[]; #define SUBREG_REG(RTX) ((RTX)->fld[0].rtx) #define SUBREG_WORD(RTX) ((RTX)->fld[1].rtint) +/* 1 if the REG contained in SUBREG_REG is already known to be + sign- or zero-extended from the mode of the SUBREG to the mode of + the reg. SUBREG_PROMOTED_UNSIGNED_P gives the signedness of the + extension. + + When used as a LHS, is means that this extension must be done + when assigning to SUBREG_REG. */ + +#define SUBREG_PROMOTED_VAR_P(RTX) ((RTX)->in_struct) +#define SUBREG_PROMOTED_UNSIGNED_P(RTX) ((RTX)->unchanging) + /* Access various components of an ASM_OPERANDS rtx. */ #define ASM_OPERANDS_TEMPLATE(RTX) XSTR ((RTX), 0)