(SUBREG_PROMOTED_{VAR,UNSIGNED}_P): New macros.
authorRichard Kenner <kenner@gcc.gnu.org>
Sat, 19 Sep 1992 19:44:05 +0000 (15:44 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Sat, 19 Sep 1992 19:44:05 +0000 (15:44 -0400)
From-SVN: r2171

gcc/rtl.h

index 3c33410b0b6c12269af264f9b990931593c390c0..0adbed90b523e978fe0058d44a9e4c7f6f29262f 100644 (file)
--- 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)