aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNicola Pero <nicola.pero@meta-innovation.com>2011-04-12 16:45:40 +0000
committerNicola Pero <nicola@gcc.gnu.org>2011-04-12 16:45:40 +0000
commit0d8a2528265c57e2fd0c90f33c38f603db43695a (patch)
tree353154a340a6269c5f793969b1e6158c9f58ba42 /gcc
parent06bd234a03462ea2ecd879392a2042584297fb0b (diff)
downloadgcc-0d8a2528265c57e2fd0c90f33c38f603db43695a.zip
gcc-0d8a2528265c57e2fd0c90f33c38f603db43695a.tar.gz
gcc-0d8a2528265c57e2fd0c90f33c38f603db43695a.tar.bz2
In gcc/: 2011-04-12 Nicola Pero <nicola.pero@meta-innovation.com>
In gcc/: 2011-04-12 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. In gcc/objc/: 2011-04-12 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. From-SVN: r172327
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/c-parser.c3
-rw-r--r--gcc/objc/ChangeLog5
-rw-r--r--gcc/objc/objc-act.c19
4 files changed, 24 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f35c45b..f640b28 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2011-04-12 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-12 Axel Freyn <axel-freyn@gmx.de>
* opts-common.c (decode_cmdline_options_to_array): Remove variable
diff --git a/gcc/c-parser.c b/gcc/c-parser.c
index 33e7362..7542a58 100644
--- a/gcc/c-parser.c
+++ b/gcc/c-parser.c
@@ -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;
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index d91ca29..e9e3be6 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -1,3 +1,8 @@
+2011-04-12 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-12 Martin Jambor <mjambor@suse.cz>
* objc-act.c (mark_referenced_methods): Call cgraph_get_create_node
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index 513da2f..dd81fd1 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -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);