[C++ PATCH] Kill IDENTIFIER_LABEL_VALUE
authorNathan Sidwell <nathan@acm.org>
Wed, 25 Oct 2017 21:37:33 +0000 (21:37 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Wed, 25 Oct 2017 21:37:33 +0000 (21:37 +0000)
commita2af967e9718d3d15461dbc5c52008ceab63a2f0
treef6836d25afadb688414fefdc89db506d2709781a
parent733ba9b9a347d8a2ac2dedec820c51481c5c6338
[C++ PATCH] Kill IDENTIFIER_LABEL_VALUE

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg01854.html
Kill IDENTIFIER_LABEL_VALUE.
* cp-tree.h (lang_identifier): Delete label_value slot.
(IDENTIFIER_LABEL_VALUE, SET_IDENTIFIER_LABEL_VALUE): Delete.
(struct named_label_hasher): Rename to ...
(struct named_label_hash): ... here.  Reimplement.
(struct language_function): Adjust x_named_labels.
* name-lookup.h (struct cp_label_binding): Delete.
(struct cp_binding_level): Delete shadowed_labels slot.
* decl.c (struct named_label_entry): Add name and outer slots.
(pop_label): Rename to ...
(check_label_used): ... here.  Don't pop.
(note_label, sort_labels): Delete.
(pop_labels, pop_local_label): Reimplement.
(poplevel): Pop local labels as any other decl. Remove
shadowed_labels handling.
(named_label_hash::hash, named_label_hash::equal): New.
(make_label_decl): Absorb into ...
(lookup_label_1): ... here.  Add making_local_p arg, reimplement.
(lookup_label, declare_local_label): Adjust.
(check_goto, define_label): Adjust.
* lex.c (make_conv_op_name): Don't clear IDENTIFIER_LABEL_VALUE.
* ptree.c (cxx_print_identifier): Don't print identifier binding.

From-SVN: r254087
gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/lex.c
gcc/cp/name-lookup.h
gcc/cp/ptree.c