Hi,
today I noticed that in cp_parser_lookup_name the code in the
object_type != NULL_TREE else can be tidied a bit and a lookup_name_real
often avoided. Tested x86_64-linux.
Thanks,
Paolo.
/////////////////////////
2013-10-14 Paolo Carlini <paolo.carl...@oracle.com>
* parser.c (cp_parser_lookup_name): Tidy.
Index: parser.c
===================================================================
--- parser.c (revision 203507)
+++ parser.c (working copy)
@@ -21716,7 +21716,7 @@ cp_parser_lookup_name (cp_parser *parser, tree nam
tree *ambiguous_decls,
location_t name_location)
{
- tree decl;
+ tree decl = NULL_TREE;
tree object_type = parser->context->object_type;
/* Assume that the lookup will be unambiguous. */
@@ -21875,7 +21875,6 @@ cp_parser_lookup_name (cp_parser *parser, tree nam
}
else if (object_type)
{
- tree object_decl = NULL_TREE;
/* Look up the name in the scope of the OBJECT_TYPE, unless the
OBJECT_TYPE is not a class. */
if (CLASS_TYPE_P (object_type))
@@ -21883,19 +21882,18 @@ cp_parser_lookup_name (cp_parser *parser, tree nam
be instantiated during name lookup. In that case, errors
may be issued. Even if we rollback the current tentative
parse, those errors are valid. */
- object_decl = lookup_member (object_type,
- name,
- /*protect=*/0,
- tag_type != none_type,
- tf_warning_or_error);
- /* Look it up in the enclosing context, too. */
- decl = lookup_name_real (name, tag_type != none_type,
- /*nonclass=*/0,
- /*block_p=*/true, is_namespace, 0);
+ decl = lookup_member (object_type,
+ name,
+ /*protect=*/0,
+ tag_type != none_type,
+ tf_warning_or_error);
+ if (!decl)
+ /* Look it up in the enclosing context. */
+ decl = lookup_name_real (name, tag_type != none_type,
+ /*nonclass=*/0,
+ /*block_p=*/true, is_namespace, 0);
parser->object_scope = object_type;
parser->qualifying_scope = NULL_TREE;
- if (object_decl)
- decl = object_decl;
}
else
{