Commit 07be3989 by Richard Kenner

(SUBREG_PROMOTED_{VAR,UNSIGNED}_P): New macros.

From-SVN: r2171
parent 4d9d7d9d
...@@ -87,6 +87,7 @@ typedef struct rtx_def ...@@ -87,6 +87,7 @@ typedef struct rtx_def
/* 1 in a MEM or REG if value of this expression will never change /* 1 in a MEM or REG if value of this expression will never change
during the current function, even though it is not during the current function, even though it is not
manifestly constant. 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 1 in a SYMBOL_REF if it addresses something in the per-function
constants pool. constants pool.
1 in a CALL_INSN if it is a const call. 1 in a CALL_INSN if it is a const call.
...@@ -104,6 +105,8 @@ typedef struct rtx_def ...@@ -104,6 +105,8 @@ typedef struct rtx_def
0 if the MEM was a variable or the result of a * operator in C; 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 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 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 1 in a CODE_LABEL if the label is used for nonlocal gotos
and must not be deleted even if its count is zero. 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 1 in a LABEL_REF if this is a reference to a label outside the
...@@ -443,6 +446,17 @@ extern char *note_insn_name[]; ...@@ -443,6 +446,17 @@ extern char *note_insn_name[];
#define SUBREG_REG(RTX) ((RTX)->fld[0].rtx) #define SUBREG_REG(RTX) ((RTX)->fld[0].rtx)
#define SUBREG_WORD(RTX) ((RTX)->fld[1].rtint) #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. */ /* Access various components of an ASM_OPERANDS rtx. */
#define ASM_OPERANDS_TEMPLATE(RTX) XSTR ((RTX), 0) #define ASM_OPERANDS_TEMPLATE(RTX) XSTR ((RTX), 0)
......
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