aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorNathan Froyd <froydnj@codesourcery.com>2011-05-26 17:38:51 +0000
committerNathan Froyd <froydnj@gcc.gnu.org>2011-05-26 17:38:51 +0000
commit92e948a836d98e98a1721008795dfddbb47828a6 (patch)
treed221c28a4588d4ee669bca17061040874f839eab /gcc/tree.c
parentd74be3171290547f3311f959351e0c3afe7dcd21 (diff)
downloadgcc-92e948a836d98e98a1721008795dfddbb47828a6.zip
gcc-92e948a836d98e98a1721008795dfddbb47828a6.tar.gz
gcc-92e948a836d98e98a1721008795dfddbb47828a6.tar.bz2
make TS_BLOCK a substructure of TS_BASE
make TS_BLOCK a substructure of TS_BASE gcc/ * tree.c (initialize_tree_contains_struct): Mark TS_BLOCK as TS_BASE instead of TS_COMMON. (find_decls_types_r): Check for TS_TYPED structure before looking at TREE_TYPE. * tree.h (struct tree_block): Inherit from tree_base, not tree_common. Add chain field. (BLOCK_CHAIN): Use new chain field. gcc/c-family/ * c-common.c (warning_candidate_p): Check for BLOCKs. gcc/java/ * decl.c (poplevel): Don't access TREE_TYPE of BLOCKs. * expr.c (build_jni_stub): Likewise. From-SVN: r174300
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 2738979..178873c 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -368,6 +368,7 @@ initialize_tree_contains_struct (void)
switch (ts_code)
{
case TS_TYPED:
+ case TS_BLOCK:
MARK_TS_BASE (code);
break;
@@ -389,7 +390,6 @@ initialize_tree_contains_struct (void)
case TS_TYPE_COMMON:
case TS_LIST:
case TS_VEC:
- case TS_BLOCK:
case TS_BINFO:
case TS_STATEMENT_LIST:
case TS_OMP_CLAUSE:
@@ -4892,7 +4892,8 @@ find_decls_types_r (tree *tp, int *ws, void *data)
fld_worklist_push (BLOCK_ABSTRACT_ORIGIN (t), fld);
}
- if (TREE_CODE (t) != IDENTIFIER_NODE)
+ if (TREE_CODE (t) != IDENTIFIER_NODE
+ && CODE_CONTAINS_STRUCT (TREE_CODE (t), TS_TYPED))
fld_worklist_push (TREE_TYPE (t), fld);
return NULL_TREE;