diff options
author | Michael Matz <matz@suse.de> | 2009-09-09 00:43:36 +0000 |
---|---|---|
committer | Michael Matz <matz@gcc.gnu.org> | 2009-09-09 00:43:36 +0000 |
commit | 4e18a7d41d5fc0b5a9e596e5693e514cc6bdfbf7 (patch) | |
tree | a983d9f99d48e2a96d50bdf1d707e518b0f89c42 /gcc/rtl.h | |
parent | 5fb455bc704247467133ca73922a026489be9947 (diff) | |
download | gcc-4e18a7d41d5fc0b5a9e596e5693e514cc6bdfbf7.zip gcc-4e18a7d41d5fc0b5a9e596e5693e514cc6bdfbf7.tar.gz gcc-4e18a7d41d5fc0b5a9e596e5693e514cc6bdfbf7.tar.bz2 |
re PR middle-end/41268 (bootstrap is broken after r151350 (expand from tuples))
PR middle-end/41268
* cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
* rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
to reflect reality.
From-SVN: r151544
Diffstat (limited to 'gcc/rtl.h')
-rw-r--r-- | gcc/rtl.h | 14 |
1 files changed, 11 insertions, 3 deletions
@@ -255,8 +255,7 @@ struct GTY((chain_next ("RTX_NEXT (&%h)"), ECF_LOOPING_CONST_OR_PURE and DECL_LOOPING_CONST_OR_PURE_P. */ unsigned int call : 1; /* 1 in a REG, MEM, or CONCAT if the value is set at most once, anywhere. - 1 in a SUBREG if it references an unsigned object whose mode has been - from a promoted to a wider mode. + 1 in a SUBREG used for SUBREG_PROMOTED_UNSIGNED_P. 1 in a SYMBOL_REF if it addresses something in the per-function constants pool. 1 in a CALL_INSN logically equivalent to ECF_CONST and TREE_READONLY. @@ -268,7 +267,7 @@ struct GTY((chain_next ("RTX_NEXT (&%h)"), if it has been deleted. 1 in a REG expression if corresponds to a variable declared by the user, 0 for an internally generated temporary. - 1 in a SUBREG with a negative value. + 1 in a SUBREG used for SUBREG_PROMOTED_UNSIGNED_P. 1 in a LABEL_REF, REG_LABEL_TARGET or REG_LABEL_OPERAND note for a non-local label. In a SYMBOL_REF, this flag is used for machine-specific purposes. @@ -1161,6 +1160,15 @@ do { \ _rtx->unchanging = (VAL); \ } \ } while (0) + +/* Valid for subregs which are SUBREG_PROMOTED_VAR_P(). In that case + this gives the necessary extensions: + 0 - signed + 1 - normal unsigned + -1 - pointer unsigned, which most often can be handled like unsigned + extension, except for generating instructions where we need to + emit special code (ptr_extend insns) on some architectures. */ + #define SUBREG_PROMOTED_UNSIGNED_P(RTX) \ ((RTL_FLAG_CHECK1("SUBREG_PROMOTED_UNSIGNED_P", (RTX), SUBREG)->volatil) \ ? -1 : (int) (RTX)->unchanging) |