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
     {

Reply via email to