Hi

On 10/13/2013 08:26 PM, Paolo Carlini wrote:
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.
Can I apply this clean-up? It seems pretty straightforward to me, essentially matter of logic, and saves a redundant name lookup. I'm also attaching a variant which avoids early initializing the decl local and shaves about 120 bytes out the release cc1plus compared to the first version.

Thanks!
Paolo.

//////////////////////
Index: parser.c
===================================================================
--- parser.c    (revision 203517)
+++ parser.c    (working copy)
@@ -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,21 @@ 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);
+      else
+       decl = NULL_TREE;
+
+      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