Patchwork ObjC: some minor optimizations

login
register
mail settings
Submitter Nicola Pero
Date April 11, 2011, 5:09 p.m.
Message ID <1302541785.662131434@192.168.4.58>
Download mbox | patch
Permalink /patch/90628/
State New
Headers show

Comments

Nicola Pero - April 11, 2011, 5:09 p.m.
This patch removes some very minor inefficiencies in the ObjC compiler code.
Ok to commit ?

Thanks
Mike Stump - April 11, 2011, 10:06 p.m.
On Apr 11, 2011, at 10:09 AM, Nicola Pero wrote:
> This patch removes some very minor inefficiencies in the ObjC compiler code.
> Ok to commit ?

Ok.  I do wonder if namespaces and Objective-C work well together...

Patch

Index: gcc/objc/ChangeLog
===================================================================
--- gcc/objc/ChangeLog  (revision 172239)
+++ gcc/objc/ChangeLog  (working copy)
@@ -1,3 +1,8 @@ 
+2011-04-10  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * objc-act.c (objc_is_class_name, objc_is_id): For efficiency,
+       avoid calling identifier_global_value() multiple times.
+
 2011-04-06  Joseph Myers  <joseph@codesourcery.com>
 
        * objc-act.c: Include c-target.h instead of target.h.
Index: gcc/objc/objc-act.c
===================================================================
--- gcc/objc/objc-act.c (revision 172239)
+++ gcc/objc/objc-act.c (working copy)
@@ -3411,9 +3411,13 @@  objc_is_class_name (tree ident)
 {
   hash target;
 
-  if (ident && TREE_CODE (ident) == IDENTIFIER_NODE
-      && identifier_global_value (ident))
-    ident = identifier_global_value (ident);
+  if (ident && TREE_CODE (ident) == IDENTIFIER_NODE)
+    {
+      tree t = identifier_global_value (ident);
+      if (t)
+       ident = t;
+    }
+
   while (ident && TREE_CODE (ident) == TYPE_DECL && DECL_ORIGINAL_TYPE (ident))
     ident = OBJC_TYPE_NAME (DECL_ORIGINAL_TYPE (ident));
 
@@ -3453,9 +3457,12 @@  objc_is_class_name (tree ident)
 tree
 objc_is_id (tree type)
 {
-  if (type && TREE_CODE (type) == IDENTIFIER_NODE
-      && identifier_global_value (type))
-    type = identifier_global_value (type);
+  if (type && TREE_CODE (type) == IDENTIFIER_NODE)
+    {
+      tree t = identifier_global_value (type);
+      if (t)
+       type = t;
+    }
 
   if (type && TREE_CODE (type) == TYPE_DECL)
     type = TREE_TYPE (type);
Index: gcc/ChangeLog
===================================================================
--- gcc/ChangeLog       (revision 172239)
+++ gcc/ChangeLog       (working copy)
@@ -1,3 +1,8 @@ 
+2011-04-10  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * c-parser.c (c_lex_one_token): Rewritten conditional used when
+       compiling Objective-C to be more efficient.
+
 2011-04-09  Anatoly Sokolov  <aesok@post.ru>
 
        * expr.c (expand_expr_real_1): Use add_to_hard_reg_set function
Index: gcc/c-parser.c
===================================================================
--- gcc/c-parser.c      (revision 172239)
+++ gcc/c-parser.c      (working copy)
@@ -334,8 +334,7 @@  c_lex_one_token (c_parser *parser, c_token *token)
               variables and typedefs, and hence are shadowed by local
               declarations.  */
            if (objc_interface_decl
-               && (global_bindings_p ()
-                   || (!objc_force_identifier && !decl)))
+                && (!objc_force_identifier || global_bindings_p ()))
              {
                token->value = objc_interface_decl;
                token->id_kind = C_ID_CLASSNAME;