diff options
author | Richard Guenther <rguenther@suse.de> | 2009-09-10 08:52:36 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-09-10 08:52:36 +0000 |
commit | c7a3980a09b3f2d64162f55390ca5156f4dbf4d1 (patch) | |
tree | 1fe0e7a8182c821981f72fe98a9bb4fe78627690 /gcc/tree.h | |
parent | 7cb4dfec24da6c3a44ca7d20237f2e08cb92d495 (diff) | |
download | gcc-c7a3980a09b3f2d64162f55390ca5156f4dbf4d1.zip gcc-c7a3980a09b3f2d64162f55390ca5156f4dbf4d1.tar.gz gcc-c7a3980a09b3f2d64162f55390ca5156f4dbf4d1.tar.bz2 |
re PR middle-end/41254 (crashed compile Qt4 gui library)
2009-09-10 Richard Guenther <rguenther@suse.de>
PR middle-end/41254
* tree.c (struct free_lang_data_d): Add worklist member.
(find_decls_types_r): Push onto the worklist instead of recursing.
Handle TREE_BINFOs properly.
(find_decls_types): New function wrapped around find_decls_types_r
to process the worklist.
(find_decls_types_in_eh_region): Use it.
(find_decls_types_in_node): Likewise.
(find_decls_types_in_var): Likewise.
(free_lang_data_in_cgraph): Likewise. Free the worklist.
* tree.h (RECORD_OR_UNION_TYPE_P): New.
(AGGREGATE_TYPE_P): Adjust.
From-SVN: r151590
Diffstat (limited to 'gcc/tree.h')
-rw-r--r-- | gcc/tree.h | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -1065,12 +1065,17 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int, (SCALAR_FLOAT_TYPE_P (TYPE) \ && DECIMAL_FLOAT_MODE_P (TYPE_MODE (TYPE))) +/* Nonzero if TYPE is a record or union type. */ +#define RECORD_OR_UNION_TYPE_P(TYPE) \ + (TREE_CODE (TYPE) == RECORD_TYPE \ + || TREE_CODE (TYPE) == UNION_TYPE \ + || TREE_CODE (TYPE) == QUAL_UNION_TYPE) + /* Nonzero if TYPE represents an aggregate (multi-component) type. Keep these checks in ascending code order. */ #define AGGREGATE_TYPE_P(TYPE) \ - (TREE_CODE (TYPE) == ARRAY_TYPE || TREE_CODE (TYPE) == RECORD_TYPE \ - || TREE_CODE (TYPE) == UNION_TYPE || TREE_CODE (TYPE) == QUAL_UNION_TYPE) + (TREE_CODE (TYPE) == ARRAY_TYPE || RECORD_OR_UNION_TYPE_P (TYPE)) /* Nonzero if TYPE represents a pointer or reference type. (It should be renamed to INDIRECT_TYPE_P.) Keep these checks in |