aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNicola Pero <nicola.pero@meta-innovation.com>2010-09-29 22:21:20 +0000
committerNicola Pero <nicola@gcc.gnu.org>2010-09-29 22:21:20 +0000
commita6341d571d6cabf63ed6542d1048261281a2a028 (patch)
treefb7bbb6d12ab02321562a9f6812dba274c2241c4 /gcc
parentb14446e2ff63e339f814681b8ec7c467de819b66 (diff)
downloadgcc-a6341d571d6cabf63ed6542d1048261281a2a028.zip
gcc-a6341d571d6cabf63ed6542d1048261281a2a028.tar.gz
gcc-a6341d571d6cabf63ed6542d1048261281a2a028.tar.bz2
In gcc/: 2010-09-29 Nicola Pero <nicola.pero@meta-innovation.com>
In gcc/: 2010-09-29 Nicola Pero <nicola.pero@meta-innovation.com> Merge from 'apple/trunk' branch on FSF servers. * c-parser.c: Applied change originally in c-parse.in. 2005-10-04 Fariborz Jahanian <fjahanian@apple.com> Radar 4281748 * c-decl.c (start_decl): Check for redeclaration of class name. * c-parse.in (after_type_declarator): Recognize CLASSNAME. In gcc/c-family/: 2010-09-27 Nicola Pero <nicola.pero@meta-innovation.com> Merge from 'apple/trunk' branch on FSF servers. 2005-10-04 Fariborz Jahanian <fjahanian@apple.com> Radar 4281748 * c-common.h (objc_check_global_decl): New declaration. * stub-objc.c (objc_check_global_decl): New stub. In gcc/objc/: 2010-09-28 Nicola Pero <nicola.pero@meta-innovation.com> Merge from 'apple/trunk' branch on FSF servers. 2005-10-04 Fariborz Jahanian <fjahanian@apple.com> Radar 4281748 * objc-act.c (objc_check_global_decl): New In gcc/testsuite/: 2010-09-28 Nicola Pero <nicola.pero@meta-innovation.com> Merge from 'apple/trunk' branch on FSF servers. 2005-10-04 Fariborz Jahanian <fjahanian@apple.com> Radar 4281748 * objc.dg/naming-2.m: Update * objc.dg/naming-3.m: New From-SVN: r164735
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/c-decl.c5
-rw-r--r--gcc/c-family/ChangeLog10
-rw-r--r--gcc/c-family/c-common.h1
-rw-r--r--gcc/c-family/stub-objc.c5
-rw-r--r--gcc/c-parser.c3
-rw-r--r--gcc/objc/ChangeLog9
-rw-r--r--gcc/objc/objc-act.c8
-rw-r--r--gcc/testsuite/ChangeLog10
-rw-r--r--gcc/testsuite/objc.dg/naming-2.m2
-rw-r--r--gcc/testsuite/objc.dg/naming-3.m17
11 files changed, 79 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 67899b8..962c617 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2010-09-29 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ Merge from 'apple/trunk' branch on FSF servers.
+ * c-parser.c: Applied change originally in c-parse.in.
+
+ 2005-10-04 Fariborz Jahanian <fjahanian@apple.com>
+
+ Radar 4281748
+ * c-decl.c (start_decl): Check for redeclaration of class name.
+ * c-parse.in (after_type_declarator): Recognize CLASSNAME.
+
2010-09-29 Steve Ellcey <sje@cup.hp.com>
* config/ia64/ia64.c (ia64_builtin_decl): New.
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 35f3d29..8272d33 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -4072,6 +4072,11 @@ start_decl (struct c_declarator *declarator, struct c_declspecs *declspecs,
record_inline_static (input_location, current_function_decl,
decl, csi_modifiable);
+ if (c_dialect_objc ()
+ && (TREE_CODE (decl) == VAR_DECL
+ || TREE_CODE (decl) == FUNCTION_DECL))
+ objc_check_global_decl (decl);
+
/* Add this decl to the current scope.
TEM may equal DECL or it may be a previous decl of the same name. */
tem = pushdecl (decl);
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index d51728b..a0bcadf 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,13 @@
+2010-09-27 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ Merge from 'apple/trunk' branch on FSF servers.
+
+ 2005-10-04 Fariborz Jahanian <fjahanian@apple.com>
+
+ Radar 4281748
+ * c-common.h (objc_check_global_decl): New declaration.
+ * stub-objc.c (objc_check_global_decl): New stub.
+
2010-09-29 Joseph Myers <joseph@codesourcery.com>
* c.opt: Don't use VarExists.
diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h
index a988404..27a051c 100644
--- a/gcc/c-family/c-common.h
+++ b/gcc/c-family/c-common.h
@@ -955,6 +955,7 @@ extern void c_parse_error (const char *, enum cpp_ttype, tree, unsigned char);
extern tree objc_is_class_name (tree);
extern tree objc_is_object_ptr (tree);
extern void objc_check_decl (tree);
+extern void objc_check_global_decl (tree);
extern tree objc_common_type (tree, tree);
extern bool objc_compare_types (tree, tree, int, tree);
extern bool objc_have_common_type (tree, tree, int, tree);
diff --git a/gcc/c-family/stub-objc.c b/gcc/c-family/stub-objc.c
index 71a34de..51842eb 100644
--- a/gcc/c-family/stub-objc.c
+++ b/gcc/c-family/stub-objc.c
@@ -56,6 +56,11 @@ objc_check_decl (tree ARG_UNUSED (decl))
{
}
+void
+objc_check_global_decl (tree ARG_UNUSED (decl))
+{
+}
+
tree
objc_common_type (tree ARG_UNUSED (type1), tree ARG_UNUSED (type2))
{
diff --git a/gcc/c-parser.c b/gcc/c-parser.c
index aa266e2..cf61b93 100644
--- a/gcc/c-parser.c
+++ b/gcc/c-parser.c
@@ -2560,7 +2560,8 @@ c_parser_direct_declarator (c_parser *parser, bool type_seen_p, c_dtr_syn kind,
if (kind != C_DTR_ABSTRACT
&& c_parser_next_token_is (parser, CPP_NAME)
&& ((type_seen_p
- && c_parser_peek_token (parser)->id_kind == C_ID_TYPENAME)
+ && (c_parser_peek_token (parser)->id_kind == C_ID_TYPENAME
+ || c_parser_peek_token (parser)->id_kind == C_ID_CLASSNAME))
|| c_parser_peek_token (parser)->id_kind == C_ID_ID))
{
struct c_declarator *inner
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index 94c7ffa..1f5338a 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -1,3 +1,12 @@
+2010-09-28 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ Merge from 'apple/trunk' branch on FSF servers.
+
+ 2005-10-04 Fariborz Jahanian <fjahanian@apple.com>
+
+ Radar 4281748
+ * objc-act.c (objc_check_global_decl): New
+
2010-09-29 Nicola Pero <nicola.pero@meta-innovation.com>
* objc-act.c (objc_is_reserved_word): Removed.
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index 87eb11b..f63cde0 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -1495,6 +1495,14 @@ objc_check_decl (tree decl)
type);
}
+void
+objc_check_global_decl (tree decl)
+{
+ tree id = DECL_NAME (decl);
+ if (objc_is_class_name (id) && global_bindings_p())
+ error ("redeclaration of Objective-C class %qs", IDENTIFIER_POINTER (id));
+}
+
/* Construct a PROTOCOLS-qualified variant of INTERFACE, where INTERFACE may
either name an Objective-C class, or refer to the special 'id' or 'Class'
types. If INTERFACE is not a valid ObjC type, just return it unchanged. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2a5b94f..132c9c2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,13 @@
+2010-09-28 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ Merge from 'apple/trunk' branch on FSF servers.
+
+ 2005-10-04 Fariborz Jahanian <fjahanian@apple.com>
+
+ Radar 4281748
+ * objc.dg/naming-2.m: Update
+ * objc.dg/naming-3.m: New
+
2010-09-29 Bernd Schmidt <bernds@codesourcery.com>
PR target/40457
diff --git a/gcc/testsuite/objc.dg/naming-2.m b/gcc/testsuite/objc.dg/naming-2.m
index 7d8b22e..6d08750 100644
--- a/gcc/testsuite/objc.dg/naming-2.m
+++ b/gcc/testsuite/objc.dg/naming-2.m
@@ -4,7 +4,7 @@
@interface Foo
@end
-float Foo; /* { dg-error "parse error|syntax error|expected" } */
+float Foo; /* { dg-error "parse error|syntax error|expected|redeclaration" } */
double Bar;
@interface Bar
diff --git a/gcc/testsuite/objc.dg/naming-3.m b/gcc/testsuite/objc.dg/naming-3.m
new file mode 100644
index 0000000..dea388c
--- /dev/null
+++ b/gcc/testsuite/objc.dg/naming-3.m
@@ -0,0 +1,17 @@
+/* Test for class name same as an unrelated struct field name. */
+/* { dg-do compile } */
+@interface PassThrough {
+
+}
+@end
+
+struct S {
+ int (*PassThrough)();
+};
+
+int main()
+{
+ PassThrough* pt;
+ struct S s;
+ s.PassThrough();
+}