After all that, we can finally make tree_exp inherit from typed_tree. Quite anticlimatic.
-Nathan gcc/ * tree.h (struct tree_exp): Inherit from struct typed_tree. * tree.c (initialize_tree_contains_struct): Mark TS_EXP as TS_TYPED instead of TS_COMMON. diff --git a/gcc/tree.c b/gcc/tree.c index d63e7d5..16100a6 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -378,6 +378,7 @@ initialize_tree_contains_struct (void) case TS_COMPLEX: case TS_SSA_NAME: case TS_CONSTRUCTOR: + case TS_EXP: MARK_TS_TYPED (code); break; @@ -386,7 +387,6 @@ initialize_tree_contains_struct (void) case TS_TYPE: case TS_LIST: case TS_VEC: - case TS_EXP: case TS_BLOCK: case TS_BINFO: case TS_STATEMENT_LIST: diff --git a/gcc/tree.h b/gcc/tree.h index c81186a..461674c 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -1905,7 +1905,7 @@ enum omp_clause_default_kind (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_DEFAULT)->omp_clause.subcode.default_kind) struct GTY(()) tree_exp { - struct tree_common common; + struct typed_tree typed; location_t locus; tree block; tree GTY ((special ("tree_exp"),