diff options
author | Nicola Pero <nicola.pero@meta-innovation.com> | 2010-09-29 22:21:20 +0000 |
---|---|---|
committer | Nicola Pero <nicola@gcc.gnu.org> | 2010-09-29 22:21:20 +0000 |
commit | a6341d571d6cabf63ed6542d1048261281a2a028 (patch) | |
tree | fb7bbb6d12ab02321562a9f6812dba274c2241c4 /gcc | |
parent | b14446e2ff63e339f814681b8ec7c467de819b66 (diff) | |
download | gcc-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/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/c-decl.c | 5 | ||||
-rw-r--r-- | gcc/c-family/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/c-family/c-common.h | 1 | ||||
-rw-r--r-- | gcc/c-family/stub-objc.c | 5 | ||||
-rw-r--r-- | gcc/c-parser.c | 3 | ||||
-rw-r--r-- | gcc/objc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/objc/objc-act.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/testsuite/objc.dg/naming-2.m | 2 | ||||
-rw-r--r-- | gcc/testsuite/objc.dg/naming-3.m | 17 |
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(); +} |