diff options
author | zack <zack@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-04-28 20:02:28 +0000 |
---|---|---|
committer | zack <zack@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-04-28 20:02:28 +0000 |
commit | b56337d2c37b4bf7a6f5bc9240171ce19e71d79a (patch) | |
tree | 92ce3e71b6733dbef67b47393f4d33f639182d26 /gcc | |
parent | d459e0d8b669bbf8bb3b9446daeba0a82eb1c727 (diff) | |
download | gcc-b56337d2c37b4bf7a6f5bc9240171ce19e71d79a.tar.gz |
* tree.h (TREE_CST_RTL, CST_OR_CONSTRUCTOR_CHECK): Delete.
(struct tree_int_cst, struct tree_real_cst, struct tree_string,
struct tree_complex, struct tree_vector): Remove RTL field.
(CONSTRUCTOR_ELTS): Use elt 0.
* tree.def (CONSTRUCTOR): Delete first of its two operands.
* varasm.c (output_constant_def): Remove early exit if
TREE_CST_RTL is set. Don't set TREE_CST_RTL.
(decode_addr_const): Don't mention TREE_CST_RTL in comment.
* target.h (select_section): Don't mention TREE_CST_RTL in comment.
* doc/tm.texi (encode_section_info): Don't talk about TREE_CST_RTL.
ada:
* utils.c (convert): No need to clear TREE_CST_RTL.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@66182 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 33 | ||||
-rw-r--r-- | gcc/ada/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/ada/utils.c | 7 | ||||
-rw-r--r-- | gcc/doc/tm.texi | 3 | ||||
-rw-r--r-- | gcc/target.h | 7 | ||||
-rw-r--r-- | gcc/tree.def | 8 | ||||
-rw-r--r-- | gcc/tree.h | 21 | ||||
-rw-r--r-- | gcc/varasm.c | 10 |
8 files changed, 36 insertions, 57 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ecf8202b84e..0069cd37e34 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2003-04-28 Zack Weinberg <zack@codesourcery.com> + + * tree.h (TREE_CST_RTL, CST_OR_CONSTRUCTOR_CHECK): Delete. + (struct tree_int_cst, struct tree_real_cst, struct tree_string, + struct tree_complex, struct tree_vector): Remove RTL field. + (CONSTRUCTOR_ELTS): Use elt 0. + * tree.def (CONSTRUCTOR): Delete first of its two operands. + * varasm.c (output_constant_def): Remove early exit if + TREE_CST_RTL is set. Don't set TREE_CST_RTL. + (decode_addr_const): Don't mention TREE_CST_RTL in comment. + * target.h (select_section): Don't mention TREE_CST_RTL in comment. + * doc/tm.texi (encode_section_info): Don't talk about TREE_CST_RTL. + 2003-04-28 Jakub Jelinek <jakub@redhat.com> * c-decl.c (finish_decl): When prototype with asmspec is found @@ -8,16 +21,16 @@ 2003-04-28 Richard Henderson <rth@redhat.com> - * config/sparc/sparc.c (print_operand): Add 's' to sign-extend. - * config/sparc/sparc.md (const_mulsidi3_v8plus): Fix mode of - integral constant mult operand. - (const_mulsidi3_sp32, const_mulsidi3_sp64): Likewise. - (const_smulsi3_highpart_v8plus): Likewise. - (const_smulsi3_highpart): Likewise. - (const_umulsidi3_sp32): Likewise; sign-extend it in the output. - (const_umulsidi3_sp64, const_umulsidi3_v8plus): Likewise. - (const_umulsi3_highpart_v8plus): Likewise. - (const_umulsi3_highpart): Likewise. + * config/sparc/sparc.c (print_operand): Add 's' to sign-extend. + * config/sparc/sparc.md (const_mulsidi3_v8plus): Fix mode of + integral constant mult operand. + (const_mulsidi3_sp32, const_mulsidi3_sp64): Likewise. + (const_smulsi3_highpart_v8plus): Likewise. + (const_smulsi3_highpart): Likewise. + (const_umulsidi3_sp32): Likewise; sign-extend it in the output. + (const_umulsidi3_sp64, const_umulsidi3_v8plus): Likewise. + (const_umulsi3_highpart_v8plus): Likewise. + (const_umulsi3_highpart): Likewise. 2003-04-28 David O'Brien <obrien@FreeBSD.org> diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 0d720738ffe..e0b9aa28da1 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,7 @@ +2003-04-28 Zack Weinberg <zack@codesourcery.com> + + * utils.c (convert): No need to clear TREE_CST_RTL. + 2003-04-23 Geert Bosch <bosch@gnat.com> * 1aexcept.adb, 1aexcept.ads, 1ic.ads, 1ssecsta.adb, diff --git a/gcc/ada/utils.c b/gcc/ada/utils.c index fa58936a53e..d21a097cfdd 100644 --- a/gcc/ada/utils.c +++ b/gcc/ada/utils.c @@ -2877,18 +2877,13 @@ convert (type, expr) case CONSTRUCTOR: /* If we are converting a STRING_CST to another constrained array type, just make a new one in the proper type. Likewise for a - CONSTRUCTOR. But if the mode of the type is different, we must - ensure a new RTL is made for the constant. */ + CONSTRUCTOR. */ if (code == ecode && AGGREGATE_TYPE_P (etype) && ! (TREE_CODE (TYPE_SIZE (etype)) == INTEGER_CST && TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)) { expr = copy_node (expr); TREE_TYPE (expr) = type; - - if (TYPE_MODE (type) != TYPE_MODE (etype)) - TREE_CST_RTL (expr) = 0; - return expr; } break; diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 88ad237291a..c932422ce98 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -6062,8 +6062,7 @@ The hook is executed immediately after rtl has been created for @var{decl}, which may be a variable or function declaration or an entry in the constant pool. In either case, @var{rtl} is the rtl in question. Do @emph{not} use @code{DECL_RTL (@var{decl})} -or @code{TREE_CST_RTL (@var{decl})} in this hook; that field may -not have been initialized yet. +in this hook; that field may not have been initialized yet. In the case of a constant, it is safe to assume that the rtl is a @code{mem} whose address is a @code{symbol_ref}. Most decls diff --git a/gcc/target.h b/gcc/target.h index 8207b3216ef..12e95735c8b 100644 --- a/gcc/target.h +++ b/gcc/target.h @@ -102,10 +102,9 @@ struct gcc_target void (* eh_frame_section) PARAMS ((void)); /* Select and switch to a section for EXP. It may be a DECL or a - constant for which TREE_CST_RTL is valid. RELOC is nonzero if - runtime relocations must be applied; bit 1 will be set if the - runtime relocations require non-local name resolution. ALIGN is - the required alignment of the data. */ + constant. RELOC is nonzero if runtime relocations must be applied; + bit 1 will be set if the runtime relocations require non-local + name resolution. ALIGN is the required alignment of the data. */ void (* select_section) PARAMS ((tree, int, unsigned HOST_WIDE_INT)); /* Select and switch to a section for X with MODE. ALIGN is diff --git a/gcc/tree.def b/gcc/tree.def index a8f35ca9da9..378830c81bf 100644 --- a/gcc/tree.def +++ b/gcc/tree.def @@ -387,10 +387,8 @@ DEFTREECODE (VTABLE_REF, "vtable_ref", 'r', 3) /* Constructor: return an aggregate value made from specified components. In C, this is used only for structure and array initializers. Also used for SET_TYPE in Chill (and potentially Pascal). - The first "operand" is really a pointer to the RTL, - for constant constructors only. - The second operand is a list of component values - made out of a chain of TREE_LIST nodes. + The operand is a list of component values made out of a chain of + TREE_LIST nodes. For ARRAY_TYPE: The TREE_PURPOSE of each node is the corresponding index. @@ -406,7 +404,7 @@ DEFTREECODE (VTABLE_REF, "vtable_ref", 'r', 3) The TREE_VALUE specifies a value (index) in the set that is true. If TREE_PURPOSE is non-NULL, it specifies the lower limit of a range of true values. Elements not listed are false (not in the set). */ -DEFTREECODE (CONSTRUCTOR, "constructor", 'e', 2) +DEFTREECODE (CONSTRUCTOR, "constructor", 'e', 1) /* The expression types are mostly straightforward, with the fourth argument of DEFTREECODE saying how many operands there are. diff --git a/gcc/tree.h b/gcc/tree.h index 44ccd451784..4b0b4a6eb7d 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -295,13 +295,6 @@ struct tree_common GTY(()) __t; }) /* These checks have to be special cased. */ -#define CST_OR_CONSTRUCTOR_CHECK(t) __extension__ \ -({ const tree __t = (t); \ - enum tree_code const __c = TREE_CODE(__t); \ - if (__c != CONSTRUCTOR && TREE_CODE_CLASS(__c) != 'c') \ - tree_check_failed (__t, CONSTRUCTOR, __FILE__, __LINE__, \ - __FUNCTION__); \ - __t; }) #define EXPR_CHECK(t) __extension__ \ ({ const tree __t = (t); \ char const __c = TREE_CODE_CLASS(TREE_CODE(__t)); \ @@ -748,8 +741,6 @@ extern void tree_operand_check_failed PARAMS ((int, enum tree_code, struct tree_int_cst GTY(()) { struct tree_common common; - rtx rtl; /* acts as link to register transfer language - (rtl) info */ /* A sub-struct is necessary here because the function `const_hash' wants to scan both words as a unit and taking the address of the sub-struct yields the properly inclusive bounded pointer. */ @@ -759,12 +750,6 @@ struct tree_int_cst GTY(()) } int_cst; }; -/* In REAL_CST, STRING_CST, COMPLEX_CST, VECTOR_CST nodes, and - CONSTRUCTOR nodes, and generally in all kinds of constants that - could be given labels (rather than being immediate). */ - -#define TREE_CST_RTL(NODE) (CST_OR_CONSTRUCTOR_CHECK (NODE)->real_cst.rtl) - /* In a REAL_CST node. struct real_value is an opaque entity, with manipulators defined in real.h. We don't want tree.h depending on real.h and transitively on tm.h. */ @@ -776,7 +761,6 @@ struct real_value; struct tree_real_cst GTY(()) { struct tree_common common; - rtx rtl; /* acts as link to register transfer language (rtl) info */ struct real_value * real_cst_ptr; }; @@ -787,7 +771,6 @@ struct tree_real_cst GTY(()) struct tree_string GTY(()) { struct tree_common common; - rtx rtl; /* acts as link to register transfer language (rtl) info */ int length; const char *pointer; }; @@ -799,7 +782,6 @@ struct tree_string GTY(()) struct tree_complex GTY(()) { struct tree_common common; - rtx rtl; /* acts as link to register transfer language (rtl) info */ tree real; tree imag; }; @@ -810,7 +792,6 @@ struct tree_complex GTY(()) struct tree_vector GTY(()) { struct tree_common common; - rtx rtl; tree elements; }; @@ -883,7 +864,7 @@ struct tree_vec GTY(()) TREE_RTL_OPERAND_CHECK (NODE, WITH_CLEANUP_EXPR, 2) /* In a CONSTRUCTOR node. */ -#define CONSTRUCTOR_ELTS(NODE) TREE_OPERAND_CHECK_CODE (NODE, CONSTRUCTOR, 1) +#define CONSTRUCTOR_ELTS(NODE) TREE_OPERAND_CHECK_CODE (NODE, CONSTRUCTOR, 0) /* In ordinary expression nodes. */ #define TREE_OPERAND(NODE, I) TREE_OPERAND_CHECK (NODE, I) diff --git a/gcc/varasm.c b/gcc/varasm.c index f42f5295f12..5b038b263b0 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -2093,8 +2093,6 @@ decode_addr_const (exp, value) case COMPLEX_CST: case CONSTRUCTOR: case INTEGER_CST: - /* This constant should have been output already, but we can't simply - use TREE_CST_RTL since INTEGER_CST doesn't have one. */ x = output_constant_def (target, 1); break; @@ -2554,7 +2552,6 @@ build_constant_desc (exp) If DEFER is nonzero, the output of string constants can be deferred and output only if referenced in the function after all optimizations. - The TREE_CST_RTL of EXP is set up to point to that rtx. The const_hash_table records which constants already have label strings. */ rtx @@ -2565,12 +2562,6 @@ output_constant_def (exp, defer) int hash; struct constant_descriptor_tree *desc; - /* We can't just use the saved RTL if this is a deferred string constant - and we are not to defer anymore. */ - if (TREE_CST_RTL (exp) - && (defer || !STRING_POOL_ADDRESS_P (XEXP (TREE_CST_RTL (exp), 0)))) - return TREE_CST_RTL (exp); - /* Compute hash code of EXP. Search the descriptors for that hash code to see if any of them describes EXP. If yes, the descriptor records the label number already assigned. */ @@ -2597,7 +2588,6 @@ output_constant_def (exp, defer) maybe_output_constant_def_contents (exp, desc->rtl, 0); } - TREE_CST_RTL (exp) = desc->rtl; return desc->rtl; } |