diff --git a/src/parse_tree.cpp b/src/parse_tree.cpp index c1f1f80f3..ead78a6e5 100644 --- a/src/parse_tree.cpp +++ b/src/parse_tree.cpp @@ -1149,7 +1149,9 @@ void parse_ll_t::accept_tokens(parse_token_t token1, parse_token_t token2) // Get the production for the top of the stack parse_stack_element_t &stack_elem = symbol_stack.back(); parse_node_t &node = nodes.at(stack_elem.node_idx); - const production_t *production = production_for_token(stack_elem.type, token1, token2, &node.tag); + parse_node_tag_t tag = 0; + const production_t *production = production_for_token(stack_elem.type, token1, token2, &tag); + node.tag = tag; if (production == NULL) { parse_error_failed_production(stack_elem, token1); diff --git a/src/parse_tree.h b/src/parse_tree.h index b4c4b8ba4..4d0ad4a6b 100644 --- a/src/parse_tree.h +++ b/src/parse_tree.h @@ -103,10 +103,10 @@ public: enum parse_keyword_t keyword; /* Node flags */ - parse_node_flags_t flags; + parse_node_flags_t flags:4; /* This is used to store e.g. the statement decoration. */ - parse_node_tag_t tag; + parse_node_tag_t tag:4; /* Description */ wcstring describe(void) const;