diff options
author | Nicola Pero <nicola.pero@meta-innovation.com> | 2011-02-23 10:57:59 +0000 |
---|---|---|
committer | Nicola Pero <nicola@gcc.gnu.org> | 2011-02-23 10:57:59 +0000 |
commit | 79d822528c732a292ec9974a2ffacdb0dc6db79f (patch) | |
tree | 00d37a8caa57c4cada7e20a68cfc6490ccfee7c6 /gcc | |
parent | 21e1e594a965e3742aca387b0f76e4bcbb19c64c (diff) | |
download | gcc-79d822528c732a292ec9974a2ffacdb0dc6db79f.zip gcc-79d822528c732a292ec9974a2ffacdb0dc6db79f.tar.gz gcc-79d822528c732a292ec9974a2ffacdb0dc6db79f.tar.bz2 |
Removed conflict in usage of TYPE_LANG_SLOT_0 between Objective-C and C
From-SVN: r170436
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/objc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/objc/objc-act.c | 3 | ||||
-rw-r--r-- | gcc/objc/objc-act.h | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/objc.dg/attributes/objc-exception-1.m | 32 |
5 files changed, 44 insertions, 6 deletions
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index 9c466aa..e5cff3f 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -1,3 +1,10 @@ +2011-02-23 Nicola Pero <nicola.pero@meta-innovation.com> + + * objc-act.c (build_private_template): Do not copy the + CLASS_HAS_EXCEPTION_ATTR from the class to the struct. + * objc-act.h (CLASS_HAS_EXCEPTION_ATTR): Define using + TYPE_LANG_SLOT_0. + 2011-02-22 Nicola Pero <nicola.pero@meta-innovation.com> PR objc/47832 diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index 85ef8fb..049dc00 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -4203,9 +4203,6 @@ build_private_template (tree klass) /* Copy the attributes from the class to the type. */ if (TREE_DEPRECATED (klass)) TREE_DEPRECATED (record) = 1; - - if (CLASS_HAS_EXCEPTION_ATTR (klass)) - CLASS_HAS_EXCEPTION_ATTR (record) = 1; } } diff --git a/gcc/objc/objc-act.h b/gcc/objc/objc-act.h index 54f067f..3983d4b 100644 --- a/gcc/objc/objc-act.h +++ b/gcc/objc/objc-act.h @@ -164,9 +164,7 @@ typedef enum objc_property_assign_semantics { #define CLASS_CATEGORY_LIST(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 3) #define CLASS_PROTOCOL_LIST(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 4) #define TOTAL_CLASS_RAW_IVARS(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 5) - -/* FIXME */ -#define CLASS_HAS_EXCEPTION_ATTR(CLASS) ((CLASS)->type.lang_flag_0) +#define CLASS_HAS_EXCEPTION_ATTR(CLASS) (TYPE_LANG_FLAG_0 (CLASS)) #define PROTOCOL_NAME(CLASS) ((CLASS)->type.name) #define PROTOCOL_LIST(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 0) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 60e924b..a89c08d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2011-02-23 Nicola Pero <nicola.pero@meta-innovation.com> + + * objc.dg/attributes/objc-exception-1.m: New. + 2011-02-23 Jie Zhang <jie@codesourcery.com> * gcc.dg/cpp/include7.c: New test. diff --git a/gcc/testsuite/objc.dg/attributes/objc-exception-1.m b/gcc/testsuite/objc.dg/attributes/objc-exception-1.m new file mode 100644 index 0000000..e7f6f85 --- /dev/null +++ b/gcc/testsuite/objc.dg/attributes/objc-exception-1.m @@ -0,0 +1,32 @@ +/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, February 2011. */ +/* { dg-do compile } */ + +/* Test that the 'objc_exception' attribute is accepted for + @interfaces, but not for anything else. */ + +#include <objc/objc.h> + +/* Fine. */ +__attribute__ ((objc_exception)) +@interface MyClass +{ + Class isa; +} +@end + +/* Fine. */ +__attribute__ ((__objc_exception__)) +@interface MyClass2 +{ + Class isa; +} +@end + +__attribute__ ((objc_exception)) +@protocol MyProtocol; /* { dg-warning "ignored" } */ + +__attribute__ ((objc_exception)) +int myVariable; /* { dg-warning "ignored" } */ + +__attribute__ ((objc_exception)) +int myFunction (int argument); /* { dg-warning "ignored" } */ |