diff options
Diffstat (limited to 'gcc/tree.h')
-rw-r--r-- | gcc/tree.h | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/gcc/tree.h b/gcc/tree.h index fe4e0335012..d4f4c50c636 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -175,14 +175,14 @@ struct tree_common TREE_VIA_VIRTUAL in TREE_LIST or TREE_VEC TREE_CONSTANT_OVERFLOW in - INTEGER_CST, REAL_CST, COMPLEX_CST + INTEGER_CST, REAL_CST, COMPLEX_CST, VECTOR_CST TREE_SYMBOL_REFERENCED in IDENTIFIER_NODE public_flag: TREE_OVERFLOW in - INTEGER_CST, REAL_CST, COMPLEX_CST + INTEGER_CST, REAL_CST, COMPLEX_CST, VECTOR_CST TREE_PUBLIC in VAR_DECL or FUNCTION_DECL or IDENTIFIER_NODE TREE_VIA_PUBLIC in @@ -512,9 +512,10 @@ extern void tree_class_check_failed PARAMS ((const tree, int, chain is via a `virtual' declaration. */ #define TREE_VIA_VIRTUAL(NODE) ((NODE)->common.static_flag) -/* In an INTEGER_CST, REAL_CST, or COMPLEX_CST, this means there was an - overflow in folding. This is distinct from TREE_OVERFLOW because ANSI C - requires a diagnostic when overflows occur in constant expressions. */ +/* In an INTEGER_CST, REAL_CST, COMPLEX_CST, or VECTOR_CST this means + there was an overflow in folding. This is distinct from + TREE_OVERFLOW because ANSI C requires a diagnostic when overflows + occur in constant expressions. */ #define TREE_CONSTANT_OVERFLOW(NODE) ((NODE)->common.static_flag) /* In an IDENTIFIER_NODE, this means that assemble_name was called with @@ -522,9 +523,10 @@ extern void tree_class_check_failed PARAMS ((const tree, int, #define TREE_SYMBOL_REFERENCED(NODE) \ (IDENTIFIER_NODE_CHECK (NODE)->common.static_flag) -/* In an INTEGER_CST, REAL_CST, of COMPLEX_CST, this means there was an - overflow in folding, and no warning has been issued for this subexpression. - TREE_OVERFLOW implies TREE_CONSTANT_OVERFLOW, but not vice versa. */ +/* In an INTEGER_CST, REAL_CST, COMPLEX_CST, or VECTOR_CST, this means + there was an overflow in folding, and no warning has been issued + for this subexpression. TREE_OVERFLOW implies + TREE_CONSTANT_OVERFLOW, but not vice versa. */ #define TREE_OVERFLOW(NODE) ((NODE)->common.public_flag) /* In a VAR_DECL or FUNCTION_DECL, @@ -707,9 +709,9 @@ struct tree_int_cst } int_cst; }; -/* In REAL_CST, STRING_CST, COMPLEX_CST nodes, and CONSTRUCTOR nodes, - and generally in all kinds of constants that could - be given labels (rather than being immediate). */ +/* 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) @@ -752,6 +754,16 @@ struct tree_complex tree real; tree imag; }; + +/* In a VECTOR_CST node. */ +#define TREE_VECTOR_CST_ELTS(NODE) (VECTOR_CST_CHECK (NODE)->vector.elements) + +struct tree_vector +{ + struct tree_common common; + rtx rtl; + tree elements; +}; #include "hashtable.h" @@ -1843,6 +1855,7 @@ union tree_node struct tree_common common; struct tree_int_cst int_cst; struct tree_real_cst real_cst; + struct tree_vector vector; struct tree_string string; struct tree_complex complex; struct tree_identifier identifier; @@ -2093,6 +2106,7 @@ extern tree build PARAMS ((enum tree_code, tree, ...)); extern tree build_nt PARAMS ((enum tree_code, ...)); extern tree build_int_2_wide PARAMS ((unsigned HOST_WIDE_INT, HOST_WIDE_INT)); +extern tree build_vector PARAMS ((tree, tree)); extern tree build_real PARAMS ((tree, REAL_VALUE_TYPE)); extern tree build_real_from_int_cst PARAMS ((tree, tree)); extern tree build_complex PARAMS ((tree, tree, tree)); |