diff options
Diffstat (limited to 'gcc-4.8.1/gcc/testsuite/obj-c++.dg')
373 files changed, 0 insertions, 17587 deletions
diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/at-class-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/at-class-1.mm deleted file mode 100644 index 63721aa99..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/at-class-1.mm +++ /dev/null @@ -1,11 +0,0 @@ -/* Test @class. */ -/* { dg-do compile } */ - -@class Object; /* Ok */ - -@class Object, ; /* { dg-error "expected identifier" } */ -@class Object, ; /* { dg-error "expected identifier" } */ -@class Object, AnotherObject, ; /* { dg-error "expected identifier" } */ -@class Object, AnotherObject, TestObject ; /* Ok */ - -@class Object /* { dg-error "expected .;." } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/attributes.exp b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/attributes.exp deleted file mode 100644 index 0e1a11dd0..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/attributes.exp +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (C) 2010-2013 Free Software Foundation, Inc. -# -# This file is part of GCC. -# -# GCC is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3, or (at your option) -# any later version. -# -# GCC is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GCC; see the file COPYING3. If not see -# <http://www.gnu.org/licenses/>. - -# Load support procs. -load_lib obj-c++-dg.exp - -# If a testcase doesn't have special options, use these. -global DEFAULT_OBJCXXFLAGS -if ![info exists DEFAULT_OBJCXXFLAGS] then { - set DEFAULT_OBJCXXFLAGS " -ansi -pedantic-errors -Wno-long-long" -} - -# Initialize `dg'. -dg-init - -# Gather a list of all tests. -set tests [lsort [glob -nocomplain $srcdir/$subdir/*.mm]] - -# Main loop. -dg-runtest $tests "-fgnu-runtime" $DEFAULT_OBJCXXFLAGS - -# darwin targets can also run code with the NeXT runtime. -if [istarget "*-*-darwin*" ] { - dg-runtest $tests "-fnext-runtime" $DEFAULT_OBJCXXFLAGS -} - -# All done. -dg-finish diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/categ-attribute-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/categ-attribute-1.mm deleted file mode 100644 index 63d837fb6..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/categ-attribute-1.mm +++ /dev/null @@ -1,31 +0,0 @@ -/* { dg-do compile } */ - -#include <objc/objc.h> -#include "../../objc-obj-c++-shared/TestsuiteObject.h" - -@interface obj : TestsuiteObject { -@public - int var; -} -- (int) mth; -@end - -@implementation obj -- (int) mth { return var; } -@end - -__attribute ((deprecated)) -@interface obj (dep_categ) /* { dg-warning "category attributes are not available in this version" } */ -- (int) depmth; -@end - -@implementation obj (dep_categ) -- (int) depmth { return var + 1; } -@end - -int foo (void) -{ - obj *p = [obj new]; - int q = [p depmth]; - return [p mth]; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/categ-attribute-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/categ-attribute-2.mm deleted file mode 100644 index 934279eca..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/categ-attribute-2.mm +++ /dev/null @@ -1,32 +0,0 @@ -/* { dg-do compile } */ - -#include <objc/objc.h> -#include "../../objc-obj-c++-shared/TestsuiteObject.h" - -@interface obj : TestsuiteObject { -@public - int var; -} -- (int) mth; -@end - -@implementation obj -- (int) mth { return var; } -@end - -__attribute__ ((deprecated("no dep_categ"))) -@interface obj (dep_categ) /* { dg-warning "category attributes are not available in this version" } */ -- (int) depmth; -@end - -__attribute__ ((deprecated)) -@implementation obj (dep_categ) /* { dg-warning "prefix attributes are ignored before" } */ -- (int) depmth { return var + 1; } -@end - -int foo (void) -{ - obj *p = [obj new]; - int q = [p depmth]; - return [p mth]; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/class-attribute-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/class-attribute-1.mm deleted file mode 100644 index f078339b8..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/class-attribute-1.mm +++ /dev/null @@ -1,61 +0,0 @@ -/* { dg-do compile } */ -/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ - -/* Test deprecate attribute with an @interface declaration. */ - -#include <objc/objc.h> -#include <objc/runtime.h> - -__attribute__ ((deprecated)) -@interface DeprecatedClass -{ - Class isa; -} -+ (id) classObject; -+ (id) new; -@end - -@implementation DeprecatedClass -+ (id) classObject { return self; } -+ (id) new { return nil; } -@end - -@interface DeprecatedClass (Category) /* { dg-warning "is deprecated" } */ -@end - -@interface Subclass : DeprecatedClass /* { dg-warning "is deprecated" } */ -@end - -DeprecatedClass *object; /* { dg-warning "is deprecated" } */ - -int function (DeprecatedClass *object) /* { dg-warning "is deprecated" } */ -{ - /* Note how the following deprecation warning is generated by - "DeprecatedClass *", not by "[DeprecatedClass ...]. */ - DeprecatedClass *x = [DeprecatedClass new]; /* { dg-warning "is deprecated" } */ - - if (x == object) - return 0; - else - return 1; -} - -id function2 (void) -{ - return DeprecatedClass.classObject; /* { dg-warning "is deprecated" } */ -} - -@interface NormalClass -{ - Class isa; - DeprecatedClass *object; /* { dg-warning "is deprecated" } */ -} -- (DeprecatedClass *)method; /* { dg-warning "is deprecated" } */ -@end - -@implementation NormalClass -- (DeprecatedClass *)method /* { dg-warning "is deprecated" } */ -{ - return nil; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/class-attribute-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/class-attribute-2.mm deleted file mode 100644 index 35015c037..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/class-attribute-2.mm +++ /dev/null @@ -1,21 +0,0 @@ -/* { dg-do compile } */ - -#include <objc/objc.h> - -__attribute__ ((deprecated)) -@interface DeprecatedClass -{ - Class isa; -} -+ (id) new; -@end - -__attribute__ ((deprecated)) -@implementation DeprecatedClass /* { dg-warning "prefix attributes are ignored" } */ -+ (id) new { return nil; } -@end - -void function (void) -{ - DeprecatedClass *object = [DeprecatedClass new]; /* { dg-warning "is deprecated" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/class-attribute-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/class-attribute-3.mm deleted file mode 100644 index f96500de4..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/class-attribute-3.mm +++ /dev/null @@ -1,14 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-do compile } */ - -/* Test that you get a warning when an unknown class attribute is ignored. */ - -#include <objc/objc.h> - -__attribute__ ((unknown_attribute)) -@interface MyClass /* { dg-warning "ignored" } */ -{ - Class isa; -} -+ (id) new; -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/invalid-attribute-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/invalid-attribute-1.mm deleted file mode 100644 index 96ee178d7..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/invalid-attribute-1.mm +++ /dev/null @@ -1,6 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, January 2011. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -__attribute__ ((deprecated)) @class A; /* { dg-error "attributes may not be specified before the ..class. Objective-C.. keyword" } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-attribute-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-attribute-1.mm deleted file mode 100644 index 60d7822f0..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-attribute-1.mm +++ /dev/null @@ -1,40 +0,0 @@ -/* { dg-do compile } */ - -#include <objc/objc.h> -#include "../../objc-obj-c++-shared/TestsuiteObject.h" - -@interface obj : TestsuiteObject { -@public - int var; -} -- (int) mth; -+ (id) dep_cls_mth __attribute__((deprecated)) ; -- (int) dep_ins_mth __attribute__((deprecated)) ; -- (int) dep_ins_mtharg: (int) i __attribute__((deprecated)) ; -- (int) dep_ins_mtharg1: (int) i __attribute__((deprecated)) add: (int) j;/* { dg-error "method attributes must be specified at the end " } */ -- (int) nodef __attribute__((deprecated)) { return var-2; } ; /* { dg-error "expected ';' before '\{' token" } */ -__attribute__((deprecated)) -- (int) bad_pref_mth; /* { dg-warning "prefix attributes are ignored for methods" } */ -@end - -@implementation obj -- (int) mth { return var; } -+ (id) dep_cls_mth { return self; } -- (int) dep_ins_mth { return var ; } -- (int) dep_ins_mtharg: (int) i { return var + i ; } -- (int) dep_ins_mtharg1: (int) i add: (int) j { return var + i + j ; } -- (int) bad_pref_mth { return var; }; -- (int) nodef { return var-2; } ; -@end - -int foo (void) -{ - obj *p = [obj new]; - id n = [obj dep_cls_mth]; /* { dg-warning "is deprecated" } */ - - [p dep_ins_mth]; /* { dg-warning "is deprecated" } */ - [p dep_ins_mtharg:2]; /* { dg-warning "is deprecated" } */ - [p dep_ins_mtharg1:3 add:3]; - - return [p mth]; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-attribute-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-attribute-2.mm deleted file mode 100644 index 90369cc66..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-attribute-2.mm +++ /dev/null @@ -1,33 +0,0 @@ -/* { dg-do compile } */ - -#include <objc/objc.h> -#include "../../objc-obj-c++-shared/TestsuiteObject.h" - -@interface obj : TestsuiteObject { -@public - int var; -} -- (int) depmth __attribute__((deprecated)); -- (int) depmtharg:(int) iarg __attribute__((deprecated)); -- (int) unusedarg:(int) __attribute__((unused)) uarg ; -- (int) depunusedarg:(int) __attribute__((unused)) uarg __attribute__((deprecated)) ; -@end - -@implementation obj -- (int) depmth __attribute__((deprecated)) { return var; } /* { dg-warning "method attributes can not be specified in @implementation context" } */ -- (int) depmtharg:(int) iarg { return var + iarg ; } -- (int) unusedarg:(int) __attribute__((unused)) uarg { return var; } -- (int) depunusedarg:(int) __attribute__((unused)) uarg { return var; } -@end - -int foo (void) -{ - obj *p = [obj new]; - - [p depmth]; /* { dg-warning "is deprecated" } */ - [p depmtharg:1]; /* { dg-warning "is deprecated" } */ - [p unusedarg:2]; /* { dg-bogus "is deprecated" } */ - [p depunusedarg:3 ]; /* { dg-warning "is deprecated" } */ - - return [p depmtharg:0]; /* { dg-warning "is deprecated" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-attribute-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-attribute-3.mm deleted file mode 100644 index 3993c5f17..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-attribute-3.mm +++ /dev/null @@ -1,24 +0,0 @@ -/* { dg-do compile } */ - -#include "../../objc-obj-c++-shared/TestsuiteObject.h" - -@interface obj : TestsuiteObject { -@public - int var; -} -- (int) vargsn: (int) count, ... __attribute__((deprecated)); -@end - -@implementation obj -- (int) vargsn: (int) count, ... -{ - return 0; -} -@end - -int foo (void) -{ - obj *p = [obj new]; - - return [p vargsn:0]; /* { dg-warning "'vargsn:' is deprecated .declared at" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-deprecated-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-deprecated-1.mm deleted file mode 100644 index 8343856a5..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-deprecated-1.mm +++ /dev/null @@ -1,33 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MyClass -{ - Class isa; -} -+ (int) method; -- (int) method; -+ (int) deprecatedClassMethod __attribute__((deprecated)); -- (int) deprecatedInstanceMethod __attribute__((deprecated)); -@end - -/* Test that deprecation warnings are produced, but not if the - receiver is of type 'id'. */ -void foo (void) -{ - Class c; - id object; - MyClass *another_object; - - [c method]; - [object method]; - [c deprecatedClassMethod]; - [object deprecatedInstanceMethod]; - - [object method]; - [another_object method]; - [MyClass deprecatedClassMethod]; /* { dg-warning "is deprecated" } */ - [another_object deprecatedInstanceMethod]; /* { dg-warning "is deprecated" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-deprecated-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-deprecated-2.mm deleted file mode 100644 index 1e5d87f3e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-deprecated-2.mm +++ /dev/null @@ -1,23 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MyClass -{ - Class isa; -} -+ (int) deprecatedClassMethod: (id)firstObject, ... __attribute__((sentinel)) __attribute__((deprecated)); -- (int) deprecatedInstanceMethod: (id)firstobject, ... __attribute__((sentinel)) __attribute__((deprecated)); -@end - -/* Test that deprecation warnings are produced even if the method is - also marked with another attribute too (this is to test the - processing of multiple attributes). */ -void foo (void) -{ - MyClass *object = nil; - - [MyClass deprecatedClassMethod: object, nil]; /* { dg-warning "is deprecated" } */ - [object deprecatedInstanceMethod: object, nil]; /* { dg-warning "is deprecated" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-deprecated-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-deprecated-3.mm deleted file mode 100644 index 5c715a20b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-deprecated-3.mm +++ /dev/null @@ -1,21 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -/* Test that __attribute__ ((__deprecated__)) works as well as __attribute__ ((deprecated)). */ -@interface MyClass -{ - Class isa; -} -+ (int) deprecatedClassMethod: (id)firstObject, ... __attribute__((__deprecated__)); -- (int) deprecatedInstanceMethod: (id)firstobject, ... __attribute__((__deprecated__)); -@end - -void foo (void) -{ - MyClass *object = nil; - - [MyClass deprecatedClassMethod: object, nil]; /* { dg-warning "is deprecated" } */ - [object deprecatedInstanceMethod: object, nil]; /* { dg-warning "is deprecated" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-format-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-format-1.mm deleted file mode 100644 index 11ce8eebb..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-format-1.mm +++ /dev/null @@ -1,43 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do compile } */ -/* { dg-options "-Wall" } */ - -#include <objc/objc.h> -#include <stdlib.h> - -@interface LogObject -{ - Class isa; -} -+ (void) log: (int)level message: (const char *) my_format, ... __attribute__ ((format (printf, 2, 3))); -- (void) log: (int)level message: (const char *) my_format, ... __attribute__ ((format (printf, 2, 3))); - -+ (void) debug: (const char *) my_format, ... __attribute__ ((format (printf, 1, 2))); -- (void) debug: (const char *) my_format, ... __attribute__ ((format (printf, 1, 2))); - -/* Just make sure a missing or invalid attribute won't crash the compiler. */ -- (void) log2: (int)level message: (const char *) my_format, ... __attribute__ ((format (printf, 2))); /* { dg-error "wrong" } */ -+ (void) debug2: (const char *) my_format, ... __attribute__ ((format (printf))); /* { dg-error "wrong" } */ -- (void) debug2: (const char *) my_format, ... __attribute__ ((format (printf))); /* { dg-error "wrong" } */ -+ (void) alert: (const char *) my_format __attribute__ ((format (printf, 1, 2))); /* { dg-error "args to be formatted is not ..." } */ -- (void) alert: (const char *) my_format __attribute__ ((format (printf, 1, 2))); /* { dg-error "args to be formatted is not ..." } */ -@end - -void test (LogObject *object) -{ - [object log: 2 message: "attribute only applies to variadic functions"]; - [object log: 2 message: "attribute %s only applies to variadic functions", "'format'"]; - [object log: 2 message: "attribute %s only applies to variadic functions"]; /* { dg-warning "expects a matching" } */ - - [object debug: "attribute only applies to variadic functions"]; - [object debug: "attribute %s only applies to variadic functions", "'format'"]; - [object debug: "attribute %s only applies to variadic functions"]; /* { dg-warning "expects a matching" } */ - - [LogObject log: 2 message: "attribute only applies to variadic functions"]; - [LogObject log: 2 message: "attribute %s only applies to variadic functions", "'format'"]; - [LogObject log: 2 message: "attribute %s only applies to variadic functions"]; /* { dg-warning "expects a matching" } */ - - [LogObject debug: "attribute only applies to variadic functions"]; - [LogObject debug: "attribute %s only applies to variadic functions", "'format'"]; - [LogObject debug: "attribute %s only applies to variadic functions"]; /* { dg-warning "expects a matching" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-nonnull-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-nonnull-1.mm deleted file mode 100644 index c554894b2..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-nonnull-1.mm +++ /dev/null @@ -1,46 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, May 2011. */ -/* { dg-do compile } */ -/* { dg-options "-Wall" } */ - -#include <objc/objc.h> -#include <stdlib.h> - -@interface MyArray -{ - Class isa; -} -+ (void) addObject: (id)object __attribute__ ((nonnull)); -- (void) addObject: (id)object __attribute__ ((nonnull)); - -+ (void) insertObject: (id)object atIndex: (size_t)index __attribute__ ((nonnull (1))); -- (void) insertObject: (id)object atIndex: (size_t)index __attribute__ ((nonnull (1))); - -+ (void) insertObject: (id)object atIndex: (size_t)index andObject: (id)anotherObject atIndex: (size_t)anotherIndex __attribute__ ((nonnull (1, 3))); -- (void) insertObject: (id)object atIndex: (size_t)index andObject: (id)anotherObject atIndex: (size_t)anotherIndex __attribute__ ((nonnull (1, 3))); - -/* Test the behaviour with invalid code. */ -+ (void) removeObject: (id)object __attribute__ ((nonnull (0))); /* { dg-error "out-of-range" } */ -- (void) removeObject: (id)object __attribute__ ((nonnull (0))); /* { dg-error "out-of-range" } */ - -+ (void) removeObject: (id)object __attribute__ ((nonnull (2))); /* { dg-error "out-of-range" } */ -- (void) removeObject: (id)object __attribute__ ((nonnull (2))); /* { dg-error "out-of-range" } */ - -+ (void) removeObjectAtIndex: (size_t)object __attribute__ ((nonnull (1))); /* { dg-error "non-pointer operand" } */ -- (void) removeObjectAtIndex: (size_t)object __attribute__ ((nonnull (1))); /* { dg-error "non-pointer operand" } */ - -+ (void) removeObject: (id)object __attribute__ ((nonnull (MyArray))); /* { dg-error "" } */ -- (void) removeObject: (id)object __attribute__ ((nonnull (MyArray))); /* { dg-error "" } */ -@end - -void test (MyArray *object) -{ - [object addObject: object]; - [object addObject: nil]; /* { dg-warning "null argument where non-null required" } */ - - [object insertObject: object atIndex: 4]; - [object insertObject: nil atIndex: 4]; /* { dg-warning "null argument where non-null required" } */ - - [object insertObject: object atIndex: 2 andObject: object atIndex: 3]; - [object insertObject: nil atIndex: 2 andObject: object atIndex: 3]; /* { dg-warning "null argument where non-null required" } */ - [object insertObject: object atIndex: 2 andObject: nil atIndex: 3]; /* { dg-warning "null argument where non-null required" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-noreturn-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-noreturn-1.mm deleted file mode 100644 index 717d6e65e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-noreturn-1.mm +++ /dev/null @@ -1,34 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> -#include <stdlib.h> - -@interface MyClass -{ - Class isa; -} -+ (id) method1 __attribute__ ((noreturn)); -- (id) method2 __attribute__ ((noreturn)); -+ (id) method3 __attribute__ ((noreturn)); -- (id) method4 __attribute__ ((noreturn)); -@end - -@implementation MyClass -+ (id) method1 -{ - return self; /* { dg-warning "function declared .noreturn. has a .return. statement" } */ -} /* { dg-warning ".noreturn. function does return" "" { target *-*-* } 20 } */ -- (id) method2 -{ - return self; /* { dg-warning "function declared .noreturn. has a .return. statement" } */ -} /* { dg-warning ".noreturn. function does return" "" { target *-*-* } 24 } */ -+ (id) method3 -{ - abort (); -} -- (id) method4 -{ - abort (); -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-sentinel-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-sentinel-1.mm deleted file mode 100644 index 2b8e6fd25..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/method-sentinel-1.mm +++ /dev/null @@ -1,36 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do compile } */ -/* { dg-options "-Wall" } */ - -#include <objc/objc.h> -#include <stdlib.h> -/* Ensure a compatible definition of nil. */ -#include "../../objc-obj-c++-shared/objc-test-suite-types.h" - -@interface NSArray -{ - Class isa; -} -+ (id) arrayWithObject: (id)object __attribute__ ((sentinel)); /* { dg-warning "attribute only applies to variadic functions" } */ -+ (id) arrayWithObjects: (id)firstObject, ... __attribute__ ((sentinel)); - -- (id) initWithObject: (id)object __attribute__ ((sentinel)); /* { dg-warning "attribute only applies to variadic functions" } */ -- (id) initWithObjects: (id)firstObject, ... __attribute__ ((sentinel)); -@end - -void test (id object) -{ - NSArray *array; - - array = [NSArray arrayWithObject: object]; - array = [NSArray arrayWithObjects: object, nil]; - array = [NSArray arrayWithObjects: object, object, nil]; - array = [NSArray arrayWithObjects: object]; /* { dg-warning "not enough variable arguments" } */ - array = [NSArray arrayWithObjects: object, object]; /* { dg-warning "missing sentinel" } */ - - [array initWithObject: object]; - [array initWithObjects: object, nil]; - [array initWithObjects: object, object, nil]; - [array initWithObjects: object]; /* { dg-warning "not enough variable arguments" } */ - [array initWithObjects: object, object]; /* { dg-warning "missing sentinel" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/parameter-attribute-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/parameter-attribute-1.mm deleted file mode 100644 index a4ba25943..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/parameter-attribute-1.mm +++ /dev/null @@ -1,45 +0,0 @@ -/* Test __attribute__((unused)) for an Objective-C method parameter. */ -/* { dg-do compile } */ -/* { dg-options "-Wunused-parameter" } */ - -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; -} -- (id) method1: (id) argument1; -- (id) method2: (id) __attribute__((unused)) argument1; -- (id) method3: (id) __attribute__((unused)) argument1 - andArgument: (id) argument2; -- (id) method4: (id) __attribute__((unused)) argument1 - andArgument: (id) __attribute__((unused)) argument2; -- (id) method5: (id) argument1 - andArgument: (id) __attribute__ ((unused)) argument2; -@end - -@implementation MyRootClass -- (id) method1: (id) argument1 /* { dg-warning "unused parameter .argument1." } */ -{ - return nil; -} -- (id) method2: (id) __attribute__((unused)) argument1 -{ - return nil; -} -- (id) method3: (id) __attribute__((unused)) argument1 - andArgument: (id) argument2 /* { dg-warning "unused parameter .argument2." } */ -{ - return nil; -} -- (id) method4: (id) __attribute__((unused)) argument1 - andArgument: (id) __attribute__((unused)) argument2 -{ - return nil; -} -- (id) method5: (id) argument1 - andArgument: (id) __attribute__ ((unused)) argument2 /* { dg-warning "unused parameter .argument1." } */ -{ - return nil; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/parameter-attribute-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/parameter-attribute-2.mm deleted file mode 100644 index 3908faf99..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/parameter-attribute-2.mm +++ /dev/null @@ -1,25 +0,0 @@ -/* Test that we get warnings for unrecognized attributes. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; -} -/* TODO: Emit warnings in the @interface as well. Currently we only emit - them in @implementation. */ -+ (id) method1: (id) __attribute__ ((xxxxx)) argument1; -+ (id) method2: (id) __attribute__ ((noinline)) argument1; -@end - -@implementation MyRootClass -+ (id) method1: (id) __attribute__ ((xxxxx)) argument1 /* { dg-warning ".xxxxx. attribute directive ignored" } */ -{ - return argument1; -} -+ (id) method2: (id) __attribute__ ((noinline)) argument1 /* { dg-warning ".noinline. attribute ignored" } */ -{ - return argument1; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/proto-attribute-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/proto-attribute-1.mm deleted file mode 100644 index a852a7a6c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/proto-attribute-1.mm +++ /dev/null @@ -1,21 +0,0 @@ -/* { dg-do compile } */ - -#include <objc/objc.h> - -__attribute ((deprecated)) -@protocol dep_proto -- (int) depprotomth; -@end - -@interface obj <dep_proto> /* { dg-warning "is deprecated" } */ -{ -@public - int var; -} -- (int) mth; -@end - -@implementation obj -- (int) mth { return var; } -- (int) depprotomth { return var + 1; } -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/proto-attribute-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/proto-attribute-2.mm deleted file mode 100644 index aba58ff33..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/proto-attribute-2.mm +++ /dev/null @@ -1,33 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ -/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ - -/* Test deprecate attribute with a forward declarations of - @protocol. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -__attribute__ ((deprecated)) -@protocol DeprecatedProtocol1; - -@protocol NonDeprecatedProtocol1; - -void function1 (id <DeprecatedProtocol1> object); /* { dg-warning "is deprecated" } */ -void function2 (id <NonDeprecatedProtocol1> object); - -@class Class4; - -void function3 (Class4 <DeprecatedProtocol1> *object); /* { dg-warning "is deprecated" } */ -void function4 (Class4 <NonDeprecatedProtocol1> *object); -void function5 (Class4 <NonDeprecatedProtocol1, DeprecatedProtocol1> *object); /* { dg-warning "is deprecated" } */ - -int function6 (void) -{ - Protocol *p1 = @protocol (DeprecatedProtocol1); /* { dg-warning "is deprecated" } */ - Protocol *p2 = @protocol (NonDeprecatedProtocol1); - - return (p1 == p2); -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/proto-attribute-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/proto-attribute-3.mm deleted file mode 100644 index fc5251eee..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/proto-attribute-3.mm +++ /dev/null @@ -1,62 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ -/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ - - -/* Test deprecate attribute with normal @protocol declarations. */ - - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -__attribute__ ((deprecated)) -@protocol DeprecatedProtocol1 -- (void) aMethod; -@end - -@protocol NonDeprecatedProtocol1 -- (void) anotherMethod; -@end - -@protocol Protocol2 <DeprecatedProtocol1> /* { dg-warning "is deprecated" } */ -- (void) someOtherMethod; -@end - -@protocol Protocol3 <NonDeprecatedProtocol1> -- (void) someOtherMethod2; -@end - -@protocol Protocol4 <NonDeprecatedProtocol1, DeprecatedProtocol1> /* { dg-warning "is deprecated" } */ -- (void) someOtherMethod3; -@end - - -@interface Class1 <DeprecatedProtocol1> /* { dg-warning "is deprecated" } */ -@end - -@interface Class2 <NonDeprecatedProtocol1> -@end - -@interface Class3 <NonDeprecatedProtocol1, DeprecatedProtocol1> /* { dg-warning "is deprecated" } */ -@end - -@interface Class2 (Category1) <DeprecatedProtocol1> /* { dg-warning "is deprecated" } */ -@end - -void function1 (id <DeprecatedProtocol1> object); /* { dg-warning "is deprecated" } */ -void function2 (id <NonDeprecatedProtocol1> object); - -@class Class4; - -void function3 (Class4 <DeprecatedProtocol1> *object); /* { dg-warning "is deprecated" } */ -void function4 (Class4 <NonDeprecatedProtocol1> *object); -void function5 (Class4 <NonDeprecatedProtocol1, DeprecatedProtocol1> *object); /* { dg-warning "is deprecated" } */ - -int function6 (void) -{ - Protocol *p1 = @protocol (DeprecatedProtocol1); /* { dg-warning "is deprecated" } */ - Protocol *p2 = @protocol (NonDeprecatedProtocol1); - - return (p1 == p2); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/proto-attribute-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/proto-attribute-4.mm deleted file mode 100644 index d2e5f28a1..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/proto-attribute-4.mm +++ /dev/null @@ -1,31 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-do compile } */ - -/* Test that you get a warning when an unknown protocol attribute is ignored. */ - -#include <objc/objc.h> - -__attribute__ ((unknown_attribute)) -@protocol MyProtocol /* { dg-warning "ignored" } */ -- (id) new; -@end - -__attribute__ ((unknown_attribute)) -@protocol MyProtocol2; /* { dg-warning "ignored" } */ - -/* Use the protocols to double-check that no more warnings are - generated. */ - -@interface MyClass <MyProtocol> -@end - -int test (id <MyProtocol2> x) -{ - if (@protocol (MyProtocol) == @protocol (MyProtocol2)) - return 1; - - if (x) - return 2; - - return 3; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/unused-parameter-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/unused-parameter-1.mm deleted file mode 100644 index 8fbb11e20..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/attributes/unused-parameter-1.mm +++ /dev/null @@ -1,50 +0,0 @@ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; -} -- (id) method1: (id) argument1; -- (id) method2: (id) __attribute__((unused)) argument1; -- (id) method3: (id) __attribute__((unused)) argument1 - andArgument: (id) argument2; -- (id) method4: (id) __attribute__((unused)) argument1 - andArgument: (id) __attribute__((unused)) argument2; -- (id) method5: (id) argument1 - andArgument: (id) __attribute__ ((unused)) argument2; -- (id) method6: (id) argument1 - andArgument: (id) argument2; -@end - -@implementation MyRootClass -- (id) method1: (id) argument1 -{ - return nil; -} -- (id) method2: (id) __attribute__((unused)) argument1 -{ - return nil; -} -- (id) method3: (id) __attribute__((unused)) argument1 - andArgument: (id) argument2 -{ - return nil; -} -- (id) method4: (id) __attribute__((unused)) argument1 - andArgument: (id) __attribute__((unused)) argument2 -{ - return nil; -} -- (id) method5: (id) argument1 - andArgument: (id) __attribute__ ((unused)) argument2 -{ - return nil; -} -- (id) method6: (id) argument1 - andArgument: (id) argument2 -{ - return nil; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bad-forward-decl.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bad-forward-decl.mm deleted file mode 100644 index e16db7e52..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bad-forward-decl.mm +++ /dev/null @@ -1,3 +0,0 @@ -class TestCPP { }; /* { dg-error "previous declaration of" } */ - -@class TestCPP; /* { dg-error "redeclared as different kind of symbol" } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bad-receiver-type.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bad-receiver-type.mm deleted file mode 100644 index 1d6699f99..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bad-receiver-type.mm +++ /dev/null @@ -1,15 +0,0 @@ -// { dg-do compile } -// { dg-options "" } - -@interface A - -- (void)test; - -@end - -extern int foo(); - -void baz() -{ - [foo test]; /* { dg-warning "invalid receiver type" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/basic.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/basic.mm deleted file mode 100644 index 668be2730..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/basic.mm +++ /dev/null @@ -1,24 +0,0 @@ -// A basic sanity check for Objective-C++. -// { dg-do run } -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <iostream> - -@interface Greeter : TestsuiteObject -- (void) greet: (const char *)msg; -@end - -@implementation Greeter -- (void) greet: (const char *)msg -{ std::cout << msg << __VERSION__ << std::endl;} -@end - -int -main () -{ - std::cout << "Hello from C++" << __VERSION__ << std::endl; - Greeter *obj = [Greeter new]; - [obj greet: "Hello from Objective-C++"]; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bitfield-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bitfield-1.mm deleted file mode 100644 index 92aaae4cf..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bitfield-1.mm +++ /dev/null @@ -1,124 +0,0 @@ -/* Check if ObjC class layout follows the ABI (informally) - set in the past. ObjC structs must be laid out as if - all ivars, including those inherited from superclasses, - were defined at once (i.e., any padding introduced for - superclasses should be removed). */ -/* Contributed by Ziemowit Laski <zlaski@apple.com>. */ -/* { dg-do run } */ -/* { dg-options "-Wpadded -Wabi" } */ - -/* Leave blank lines here to keep warnings on the same lines. */ - -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <objc/objc.h> -#include <stdlib.h> - -#define CHECK_IF(expr) if(!(expr)) abort() - -enum Enum { zero, one, two, three, four }; - -@interface Base: TestsuiteObject { -@public - unsigned a: 2; - int b: 3; - enum Enum c: 4; - unsigned d: 5; -} /* { dg-warning "padding struct size to alignment boundary" } */ -@end - -struct Base_0 { /* { dg-warning "padding struct size to alignment boundary" } */ - Class isa; - unsigned a: 2; - int b: 3; - enum Enum c: 4; - unsigned d: 5; -}; - -@interface Derived: Base { -@public - signed e: 5; - unsigned f: 4; - enum Enum g: 3; -} -@end - -struct Derived_0 { - Class isa; - unsigned a: 2; - int b: 3; - enum Enum c: 4; - unsigned d: 5; - signed e: 5; - int f: 4; - enum Enum g: 3; -}; - -@interface Leaf: Derived { -@public - signed h: 2; -} -@end - -struct Leaf_0 { - Class isa; - unsigned a: 2; - int b: 3; - enum Enum c: 4; - unsigned d: 5; - signed e: 5; - unsigned f: 4; - enum Enum g: 3; - signed h: 2; -}; - -/* Note that the semicolon after @defs(...) is optional. */ - -typedef struct { @defs(Base) } Base_t; /* { dg-warning "padding struct size to alignment boundary" } */ -typedef struct { @defs(Derived); } Derived_t; -typedef struct { @defs(Leaf); } Leaf_t; - -int main(void) -{ - struct Leaf_0 l_0; - Leaf *l = (Leaf *)&l_0; - Leaf_t *l_t = (Leaf_t *)&l_0; - - CHECK_IF(sizeof(Base_t) == sizeof(Base)); - CHECK_IF(sizeof(Derived_t) == sizeof(Derived)); - CHECK_IF(sizeof(Leaf_t) == sizeof(Leaf)); - - CHECK_IF(sizeof(struct Base_0) == sizeof(Base)); - CHECK_IF(sizeof(struct Derived_0) == sizeof(Derived)); - CHECK_IF(sizeof(struct Leaf_0) == sizeof(Leaf)); - - l_0.isa = (Class)0; - l_0.a = 3; - l_0.b = 0; - l_0.c = three; - l_0.d = 31; - l_0.e = 0; - l_0.f = 15; - l_0.g = zero; - l_0.h = -2; - - CHECK_IF(!l_t->isa); - CHECK_IF(l->a == 3 && l_t->a == 3); - CHECK_IF(!l->b && !l_t->b); - CHECK_IF(l->c == three && l_t->c == three); - CHECK_IF(l->d == 31 && l_t->d == 31); - CHECK_IF(!l->e && !l_t->e); - CHECK_IF(l->f == 15 && l_t->f == 15); - CHECK_IF(l->g == zero && l_t->g == zero); - CHECK_IF(l->h == -2 && l_t->h == -2); - - return 0; -} - -/* { dg-prune-output "In file included from" } Ignore this message. */ -/* { dg-bogus "padding struct to align" "PR23610" { target *-*-* } 0 } */ -/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 42 } */ -/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 45 } */ -/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 59 } */ -/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 62 } */ -/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 77 } */ -/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 78 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bitfield-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bitfield-2.mm deleted file mode 100644 index e88811ee5..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bitfield-2.mm +++ /dev/null @@ -1,80 +0,0 @@ -/* Check if bitfield ivars are inherited correctly (i.e., without - being "promoted" to ints). */ -/* Contributed by Ziemowit Laski <zlaski@apple.com>. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdlib.h> - -#define CHECK_IF(expr) if(!(expr)) abort(); - -@interface Base: TestsuiteObject -{ - int full; - int full2: 32; - int _refs: 8; - int field2: 3; - unsigned f3: 8; - short cc; - unsigned g: 16; - int r2: 8; - int r3: 8; - int r4: 2; - int r5: 8; - char c; -} -- (void)setValues; -@end - -@interface Derived: Base -{ - char d; - int _field3: 6; -} -- (void)checkValues; -@end - -@implementation Base --(void)setValues { - full = 1; - full2 = 2; - _refs = 3; - field2 = 1; - f3 = 6; - cc = 7; - g = 8; - r2 = 9; - r3 = 10; - r4 = 1; - r5 = 12; - c = 13; -} -@end - -@implementation Derived --(void)checkValues { - CHECK_IF(full == 1); - CHECK_IF(full2 == 2); - CHECK_IF(_refs == 3); - CHECK_IF(field2 == 1); - CHECK_IF(f3 == 6); - CHECK_IF(cc == 7); - CHECK_IF(g == 8); - CHECK_IF(r2 == 9); - CHECK_IF(r3 == 10); - CHECK_IF(r4 == 1); - CHECK_IF(r5 == 12); - CHECK_IF(c == 13); -} -@end - -int main(void) { - Derived *obj = [[Derived alloc] init]; - - [obj setValues]; - [obj checkValues]; - - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bitfield-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bitfield-3.mm deleted file mode 100644 index d81976ab6..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bitfield-3.mm +++ /dev/null @@ -1,56 +0,0 @@ -/* Check if bitfield ivars are correctly @encode'd when - the NeXT runtime is used. */ -/* Contributed by Ziemowit Laski <zlaski@apple.com>. */ -/* { dg-do run { target *-*-darwin* } } */ -/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ -/* { dg-options "-fsigned-char" } */ - -typedef struct objc_object { struct objc_class *class_pointer; } *id; - -#include <stdlib.h> -#include <string.h> - -#define CHECK_IF(expr) if(!(expr)) abort(); - -@interface Base -{ - struct objc_class *isa; - int full; - int full2: 32; - int _refs: 8; - int field2: 3; - unsigned f3: 8; - short cc; - unsigned g: 16; - int r2: 8; - int r3: 8; - int r4: 2; - int r5: 8; - char c; -} -@end - -@interface Derived: Base -{ - char d; - int _field3: 6; -} -@end - -@implementation Base -@end - -@implementation Derived -@end - -int main(void) { - const char *s1r = "{Base=#ib32b8b3b8sb16b8b8b2b8c}"; - const char *s1 = @encode(Base); - const char *s2r = "{Derived=#ib32b8b3b8sb16b8b8b2b8ccb6}"; - const char *s2 = @encode(Derived); - - CHECK_IF(!strcmp(s1r, s1)); - CHECK_IF(!strcmp(s2r, s2)); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bitfield-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bitfield-4.mm deleted file mode 100644 index 9ffa39898..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bitfield-4.mm +++ /dev/null @@ -1,56 +0,0 @@ -/* Check if the @defs() construct preserves the correct - layout of bitfields. */ -/* Contributed by Ziemowit Laski <zlaski@apple.com>. */ -/* { dg-do run } */ -/* { dg-options "-Wpadded" } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.m" - -#include <stdlib.h> -#include <string.h> - -#define CHECK_IF(expr) if(!(expr)) abort() - -enum Enum { one, two, three, four }; - -@interface Base: TestsuiteObject { - unsigned a: 2; - int b: 3; - enum Enum c: 4; - unsigned d: 5; -} /* { dg-warning "padding struct size to alignment boundary" } */ -@end - -@interface Derived: Base { - signed e: 5; - int f: 4; - enum Enum g: 3; -} -@end - -/* Note that the semicolon after @defs(...) is optional. */ - -typedef struct { @defs(Base) } Base_t; /* { dg-warning "padding struct size to alignment boundary" } */ -typedef struct { @defs(Derived); } Derived_t; - -int main(void) -{ - CHECK_IF(sizeof(Base_t) == sizeof(Base)); - CHECK_IF(sizeof(Derived_t) == sizeof(Derived)); - -#ifdef __NEXT_RUNTIME__ - CHECK_IF(!strcmp(@encode(Base), "{Base=#b2b3b4b5}")); - CHECK_IF(!strcmp(@encode(Derived), "{Derived=#b2b3b4b5b5b4b3}")); - - CHECK_IF(!strcmp(@encode(Base_t), "{?=#b2b3b4b5}")); - CHECK_IF(!strcmp(@encode(Derived_t), "{?=#b2b3b4b5b5b4b3}")); -#endif /* __NEXT_RUNTIME__ */ - - return 0; -} - -/* { dg-prune-output "In file included from" } Ignore this message. */ -/* { dg-bogus "padding struct to align" "PR23610" { target *-*-* } 0 } */ - -/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 28 } */ -/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 34 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bitfield-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bitfield-5.mm deleted file mode 100644 index b6716df8d..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/bitfield-5.mm +++ /dev/null @@ -1,29 +0,0 @@ - -/* Make sure that bitfield types are printed correctly, and that ivar redeclaration - (@interface vs. @implementation) checks take the bitfield width into account. */ -/* Author: Ziemowit Laski <zlaski@apple.com> */ -/* { dg-do compile } */ - -@interface Base { - int i; -} -@end - -@interface WithBitfields: Base { - void *isa; - unsigned a: 3; - signed b: 4; - int c: 5; -} -@end - -@implementation WithBitfields { - char *isa; /* { dg-error "conflicting instance variable type .char \\*isa." } */ - /* { dg-error "previous declaration of .void \\*isa." "" { target *-*-* } 13 } */ - unsigned a: 5; /* { dg-error "conflicting instance variable type .unsigned( int)? a: 5." } */ - /* { dg-error "previous declaration of .unsigned( int)? a: 3." "" { target *-*-* } 14 } */ - signed b: 4; /* This one is fine. */ - int c: 3; /* { dg-error "conflicting instance variable type .int c: 3." } */ - /* { dg-error "previous declaration of .int c: 5." "" { target *-*-* } 16 } */ -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/class-extension-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/class-extension-1.mm deleted file mode 100644 index eab59c413..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/class-extension-1.mm +++ /dev/null @@ -1,30 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-do compile } */ - -/* This test tests the basic of class extensions. */ - -#include <objc/objc.h> - -@interface MyObject -{ - Class isa; -} -- (int) test; -@end - -@interface MyObject () -- (int) test2; -- (int) test3; -@end - -@implementation MyObject -- (int) test -{ - return 20; -} -- (int) test2 -{ - return 20; -} -@end /* { dg-warning "incomplete implementation of class .MyObject." } */ - /* { dg-warning "method definition for .-test3. not found" "" { target *-*-* } 29 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/class-extension-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/class-extension-2.mm deleted file mode 100644 index 79b126f52..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/class-extension-2.mm +++ /dev/null @@ -1,56 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-do compile } */ - -/* This test tests class extensions and protocols. */ - -#include <objc/objc.h> - -/* First, a simple test where a plain class has a protocol attached to - it in a class extension. */ -@interface MyObject -{ - Class isa; -} -@end - -@protocol MyProtocol -- (void) test; -@end - -@interface MyObject () <MyProtocol> -@end - -@implementation MyObject -@end /* { dg-warning "incomplete implementation of class .MyObject." } */ - /* { dg-warning "method definition for .-test. not found" "" { target *-*-* } 24 } */ - /* { dg-warning "class .MyObject. does not fully implement the .MyProtocol. protocol" "" { target *-*-* } 24 } */ - - - -/* Second, a more interesting test where protocols are added from the - main class and from two different class extensions. */ -@interface MyObject2 : MyObject <MyProtocol> -@end - -@protocol MyProtocol2 -- (void) test2; -@end - -@protocol MyProtocol3 -- (void) test3; -@end - -@interface MyObject2 () <MyProtocol2> -@end - -@interface MyObject2 () <MyProtocol3> -@end - -@implementation MyObject2 -@end /* { dg-warning "incomplete implementation of class .MyObject2." } */ - /* { dg-warning "method definition for .-test. not found" "" { target *-*-* } 50 } */ - /* { dg-warning "class .MyObject2. does not fully implement the .MyProtocol. protocol" "" { target *-*-* } 50 } */ - /* { dg-warning "method definition for .-test2. not found" "" { target *-*-* } 50 } */ - /* { dg-warning "class .MyObject2. does not fully implement the .MyProtocol2. protocol" "" { target *-*-* } 50 } */ - /* { dg-warning "method definition for .-test3. not found" "" { target *-*-* } 50 } */ - /* { dg-warning "class .MyObject2. does not fully implement the .MyProtocol3. protocol" "" { target *-*-* } 50 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/class-extension-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/class-extension-3.mm deleted file mode 100644 index 69e570539..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/class-extension-3.mm +++ /dev/null @@ -1,26 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-do compile } */ - -/* This test tests warnings on class extensions. */ - -#include <objc/objc.h> - -@interface MyObject -{ - Class isa; - int count; -} -- (int) test; /* { dg-message "previous declaration" } */ -@property int count; /* { dg-message "originally specified here" } */ -@end - -@interface MyObject () -- (void) test; /* { dg-error "duplicate declaration of method .-test." } */ -@end - -@interface MyObject () -@end - -@interface MyObject () -@property int count; /* { dg-error "redeclaration of property .count." } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/class-extension-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/class-extension-4.mm deleted file mode 100644 index 9e19aa70d..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/class-extension-4.mm +++ /dev/null @@ -1,19 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-do compile } */ - -/* This test tests you can not declare a class extension after the class @implementation. */ - -#include <objc/objc.h> - -@interface MyObject -{ - Class isa; -} -@end - -@implementation MyObject -@end - -@interface MyObject () /* { dg-error "class extension for class .MyObject. declared after its ..implementation." } */ -- (void) test; -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/class-protocol-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/class-protocol-1.mm deleted file mode 100644 index 9e68c2ba6..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/class-protocol-1.mm +++ /dev/null @@ -1,441 +0,0 @@ -/* Check Class <protocol> types */ -/* Author: David Ayers <d.ayers@inode.at> */ -/* { dg-do compile } */ - -#include <objc/objc.h> -#include "../objc-obj-c++-shared/runtime.h" - -@protocol MyProto1 -+(void)doItClass1; --(void)doItInstance1; -@end - -@protocol MyProto2 -+(void)doItClass2; --(void)doItInstance2; -@end - -@interface MyClass1 <MyProto1> -{ - Class isa; -} -@end -@implementation MyClass1 -+(void)doItClass1{} --(void)doItInstance1{} -@end - -@interface MyClass2 : MyClass1 <MyProto2> -@end -@implementation MyClass2 -+(void)doItClass2{} --(void)doItInstance2{} -@end - -@interface MyClass3 -{ - Class isa; -} -@end -@interface MyClass4 : MyClass3 <MyProto1> -@end - -/*----------------------------------------*/ - -Class cls = 0; -Class <MyProto1> clsP1 = 0; -Class <MyProto2> clsP2 = 0; - -void -testSimple(void) -{ - [cls doItClass1]; - [cls doItInstance1]; - [cls doItClass2]; - [cls doItInstance2]; - - [clsP1 doItClass1]; - [clsP1 doItInstance1]; /* { dg-warning "instead of" } */ - [clsP1 doItClass2]; /* { dg-warning "not found in protocol" } */ - [clsP1 doItInstance2]; /* { dg-warning "not found in protocol" } */ - - [clsP2 doItClass1]; /* { dg-warning "not found in protocol" } */ - [clsP2 doItInstance1]; /* { dg-warning "not found in protocol" } */ - [clsP2 doItClass2]; - [clsP2 doItInstance2]; /* { dg-warning "instead of" } */ - - [MyClass1 doItClass1]; - [MyClass1 doItInstance1]; - [MyClass1 doItClass2]; /* { dg-warning "may not respond to" } */ - [MyClass1 doItInstance2]; /* { dg-warning "may not respond to" } */ - - [MyClass2 doItClass1]; - [MyClass2 doItInstance1]; - [MyClass2 doItClass2]; - [MyClass2 doItInstance2]; /* { dg-warning "may not respond to" } */ - - [MyClass3 doItClass1]; /* { dg-warning "may not respond to" } */ - [MyClass3 doItInstance1]; /* { dg-warning "may not respond to" } */ - - [MyClass4 doItClass1]; - [MyClass4 doItInstance1]; /* { dg-warning "may not respond to" } */ -} - -/*----------------------------------------*/ -/* Protocols declared by categories */ - -@protocol MyProto3 -+(void)doItClass3; --(void)doItInstance3; -@end -@protocol MyProto4 -+(void)doItClass4; --(void)doItInstance4; -@end - -@interface MyClass1 (Category1) <MyProto3> -@end -@interface MyClass2 (Category2) <MyProto4> -@end - -void -testCategory(void) -{ - [cls doItClass3]; - [cls doItInstance3]; - [cls doItClass4]; - [cls doItInstance4]; - - [MyClass1 doItClass3]; - [MyClass1 doItInstance3]; - [MyClass1 doItClass4]; /* { dg-warning "may not respond" } */ - [MyClass1 doItInstance4]; /* { dg-warning "may not respond" } */ - - [MyClass2 doItClass3]; - [MyClass2 doItInstance3]; - [MyClass2 doItClass4]; - [MyClass2 doItInstance4]; /* { dg-warning "may not respond" } */ - -} - -/*----------------------------------------*/ -/* Inherited protocols declared by categories */ - -@protocol MyProto5 <MyProto1> -+(void)doItClass5; --(void)doItInstance5; -@end - -@protocol MyProto6 <MyProto2> -+(void)doItClass6; --(void)doItInstance6; -@end - -@interface MyClass1 (Category3) <MyProto5> -@end -@interface MyClass2 (Category4) <MyProto6> -@end - -Class <MyProto5> clsP5 = 0; -Class <MyProto6> clsP6 = 0; - -void -testCategoryInherited(void) -{ - [cls doItClass5]; - [cls doItInstance5]; - [cls doItClass6]; - [cls doItInstance6]; - - [clsP5 doItClass1]; - [clsP5 doItInstance1]; /* { dg-warning "instead of" } */ - [clsP5 doItClass2]; /* { dg-warning "not found in protocol" } */ - [clsP5 doItInstance2]; /* { dg-warning "not found in protocol" } */ - - [clsP6 doItClass1]; /* { dg-warning "not found in protocol" } */ - [clsP6 doItInstance1]; /* { dg-warning "not found in protocol" } */ - [clsP6 doItClass2]; - [clsP6 doItInstance2]; /* { dg-warning "instead of" } */ - - - [MyClass1 doItClass5]; - [MyClass1 doItInstance5]; - [MyClass1 doItClass6]; /* { dg-warning "may not respond" } */ - [MyClass1 doItInstance6]; /* { dg-warning "may not respond" } */ - - [MyClass2 doItClass5]; - [MyClass2 doItInstance5]; - [MyClass2 doItClass6]; - [MyClass2 doItInstance6]; /* { dg-warning "may not respond" } */ - -} - -/*----------------------------------------*/ -/* Forward declared root protocols */ - -@protocol FwProto; - -@interface MyClass1 (Forward) <FwProto> /* { dg-warning "definition of protocol .FwProto. not found" } */ -@end - -Class <FwProto> clsP7 = 0; - -void -testForwardeDeclared1(void) -{ - [cls doItClass7]; /* { dg-warning "no .\\+doItClass7. method found" } */ - [cls doItInstance7]; /* { dg-warning "no .\\+doItInstance7. method found" } */ - - [clsP7 doItClass7]; /* { dg-warning "not found in protocol" } */ - /* { dg-warning "no .\\+doItClass7. method found" "" { target *-*-* } 189 } */ - [clsP7 doItInstance7]; /* { dg-warning "not found in protocol" } */ - /* { dg-warning "no .\\+doItInstance7. method found" "" { target *-*-* } 191 } */ - - [MyClass1 doItClass7]; /* { dg-warning "may not respond" } */ - [MyClass1 doItInstance7]; /* { dg-warning "may not respond" } */ - - [MyClass2 doItClass7]; /* { dg-warning "may not respond" } */ - [MyClass2 doItInstance7]; /* { dg-warning "may not respond" } */ - -} - -@protocol FwProto -+(void)doItClass7; --(void)doItInstance7; -@end - -void -testForwardeDeclared2(void) -{ - [cls doItClass7]; - [cls doItInstance7]; - - [clsP7 doItClass7]; - [clsP7 doItInstance7]; /* { dg-warning "instead of" } */ - - [MyClass1 doItClass7]; - [MyClass1 doItInstance7]; - - [MyClass2 doItClass7]; - [MyClass2 doItInstance7]; -} - -/*----------------------------------------*/ -/* Inherited non root protocols */ - -@protocol MyProto8 -+(void)doItClass8; --(void)doItInstance8; -@end - -@protocol MyProto9 <MyProto8> -+(void)doItClass9; --(void)doItInstance9; -@end - -@interface MyClass1 (InheritedNonRoot) <MyProto9> -@end - -Class <MyProto8> clsP8 = 0; -Class <MyProto9> clsP9 = 0; - -void -testInheritedNonRoot(void) -{ - [cls doItClass8]; - [cls doItInstance8]; - [cls doItClass9]; - [cls doItInstance9]; - - [clsP8 doItClass8]; - [clsP8 doItInstance8]; /* { dg-warning "instead of" } */ - [clsP8 doItClass9]; /* { dg-warning "not found in protocol" } */ - [clsP8 doItInstance9]; /* { dg-warning "not found in protocol" } */ - - [clsP9 doItClass8]; - [clsP9 doItInstance8]; /* { dg-warning "instead of" } */ - [clsP9 doItClass9]; - [clsP9 doItInstance9]; /* { dg-warning "instead of" } */ - - [MyClass1 doItClass8]; - [MyClass1 doItInstance8]; - [MyClass1 doItClass9]; - [MyClass1 doItInstance9]; - - [MyClass2 doItClass8]; - [MyClass2 doItInstance8]; - [MyClass2 doItClass9]; - [MyClass2 doItInstance9]; - -} - -/*----------------------------------------*/ -/* Prototype mismatch */ - -@protocol MyOtherProto1 -+(id)doItClass1; --(id)doItInstance1; -@end -@interface MyOtherClass1 <MyOtherProto1> -@end - -Class <MyOtherProto1> oclsP1; - -void -testPrototypeMismatch(void) -{ - id tmp1 = [oclsP1 doItClass1]; - id tmp2 = [oclsP1 doItInstance1]; /* { dg-warning "instead of" } */ - - [clsP1 doItClass1]; - [clsP1 doItInstance1]; /* { dg-warning "instead of" } */ -} - -id obj = nil; -id <MyProto1> objP1 = nil; -id <MyProto2> objP2 = nil; -id <MyProto5> objP5 = nil; -int num = 0; -void *ptr = 0; - -MyClass1 *mc1 = nil; - -void -testComptypes(void) -{ - { /* id <protocol>, id <protocol> */ - objP1 == objP2; /* { dg-warning "lacks a cast" } */ - objP2 == objP1; /* { dg-warning "lacks a cast" } */ - - objP1 == objP5; - objP5 == objP1; - } - { /* id <protocol>, SomeClass * */ - mc1 == objP1; - objP1 == mc1; - - mc1 == objP2; /* { dg-warning "lacks a cast" } */ - objP2 == mc1; /* { dg-warning "lacks a cast" } */ - } - { /* id <protocol>, id */ - obj == objP1; - objP1 == obj; - } - { /* id <protocol>, Class */ - cls == objP1; /* { dg-warning "lacks a cast" } */ - objP1 == cls; /* { dg-warning "lacks a cast" } */ - } - { /* id <protocol>, non-ObjC */ - num == objP1; /* { dg-error "between pointer" } */ - objP1 == num; /* { dg-error "between pointer" } */ - - ptr == objP1; - objP1 == ptr; - } - { /* Class <protocol>, Class <protocol> */ - clsP1 == clsP2; /* { dg-warning "lacks a cast" } */ - clsP2 == clsP1; /* { dg-warning "lacks a cast" } */ - - clsP1 == clsP5; - clsP5 == clsP1; - } - { /* Class <protocol>, SomeClass * */ - mc1 == clsP1; /* { dg-warning "lacks a cast" } */ - clsP1 == mc1; /* { dg-warning "lacks a cast" } */ - } - { /* Class <protocol>, id */ - obj == clsP1; - clsP1 == obj; - } - { /* Class <protocol>, Class */ - cls == clsP1; - clsP1 == cls; - } - { /* Class <protocol>, non-ObjC */ - num == clsP1; /* { dg-error "between pointer" } */ - clsP1 == num; /* { dg-error "between pointer" } */ - - ptr == clsP1; - clsP1 == ptr; - } - { /* Class <protocol>, id <protocol> */ - clsP1 == objP1; /* { dg-warning "lacks a cast" } */ - objP1 == clsP1; /* { dg-warning "lacks a cast" } */ - } - - { /* id <protocol>, id <protocol> */ - objP1 = objP2; /* { dg-warning "does not conform" } */ - objP2 = objP1; /* { dg-warning "does not conform" } */ - - objP1 = objP5; - objP5 = objP1; /* { dg-warning "does not conform" } */ - } - { /* id <protocol>, SomeClass * */ - mc1 = objP1; - objP1 = mc1; - - mc1 = objP2; /* { dg-warning "does not conform" } */ - objP2 = mc1; /* { dg-warning "does not implement" } */ - } - { /* id <protocol>, id */ - obj = objP1; - objP1 = obj; - } - { /* id <protocol>, Class */ - cls = objP1; /* { dg-warning "distinct Objective\\-C type" } */ - objP1 = cls; /* { dg-warning "distinct Objective\\-C type" } */ - } - { /* id <protocol>, non-ObjC */ - num = objP1; /* { dg-error "invalid conversion" } */ - objP1 = num; /* { dg-error "invalid conversion" } */ - - ptr = objP1; - objP1 = ptr; /* { dg-error "invalid conversion" } */ - } - { /* Class <protocol>, Class <protocol> */ - clsP1 = clsP2; /* { dg-warning "does not conform" } */ - clsP2 = clsP1; /* { dg-warning "does not conform" } */ - - clsP1 = clsP5; - clsP5 = clsP1; /* { dg-warning "does not conform" } */ - } - { /* Class <protocol>, SomeClass * */ - /* These combinations should always elicit a warning. */ - mc1 = clsP1; /* { dg-warning "distinct Objective\\-C type" } */ - clsP1 = mc1; /* { dg-warning "distinct Objective\\-C type" } */ - - mc1 = clsP2; /* { dg-warning "distinct Objective\\-C type" } */ - clsP2 = mc1; /* { dg-warning "distinct Objective\\-C type" } */ - } - { /* Class <protocol>, id */ - obj = clsP1; - clsP1 = obj; - } - { /* Class <protocol>, Class */ - cls = clsP1; - clsP1 = cls; - } - { /* Class <protocol>, non-ObjC */ - num = clsP1; /* { dg-error "invalid conversion" } */ - clsP1 = num; /* { dg-error "invalid conversion" } */ - - ptr = clsP1; - clsP1 = ptr; /* { dg-error "invalid conversion" } */ - } - { /* Class <protocol>, id <protocol> */ - clsP1 = objP1; /* { dg-warning "distinct Objective\\-C type" } */ - objP1 = clsP1; /* { dg-warning "distinct Objective\\-C type" } */ - } -} - -int main () -{ - testSimple(); - testCategory(); - testCategoryInherited(); - return(0); -} - -/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */ -/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */ -/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-1.mm deleted file mode 100644 index 6d4e86e4b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-1.mm +++ /dev/null @@ -1,16 +0,0 @@ -/* { dg-do compile } */ - -@interface A -+ new; -@end - -@interface B : A -@end - -int main(int argc, char **argv) { - B *b = [B new]; - A *a = b; - - return (b == a); -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-10.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-10.mm deleted file mode 100644 index c7f0cb635..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-10.mm +++ /dev/null @@ -1,20 +0,0 @@ -/* Yet another mysterious gimplifier crasher. */ -/* { dg-do compile } */ -/* { dg-prune-output ".*internal compiler error.*" } */ -/* { dg-options "-O3" } */ - -@class NSString; -@protocol NSObject -@end -@interface NSObject <NSObject> { -} -@end -void __setRetained(id *ivar, id value) { - *ivar = value; -} -static NSString *_logProcessPrefix = 0; -@implementation NSObject (ScopeAdditions) -+ (void)setObjectLogProcessPrefix:(NSString *)processPrefix { - __setRetained(&_logProcessPrefix, processPrefix); -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-11.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-11.mm deleted file mode 100644 index b95af5de1..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-11.mm +++ /dev/null @@ -1,27 +0,0 @@ -/* { dg-do compile } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -@protocol Foo -- (id)meth1; -- (id)meth2:(int)arg; -@end - -@interface Derived1: TestsuiteObject -@end - -@interface Derived2: TestsuiteObject -+ (Derived1 *)new; -@end - -id<Foo> func(void) { - TestsuiteObject *o = [TestsuiteObject new]; - return o; /* { dg-warning "class .TestsuiteObject. does not implement the .Foo. protocol" } */ -} - -@implementation Derived2 -+ (Derived1 *)new { - Derived2 *o = [super new]; - return o; /* { dg-warning "distinct Objective\\-C type in return" } */ -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-12.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-12.mm deleted file mode 100644 index 1585937cb..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-12.mm +++ /dev/null @@ -1,13 +0,0 @@ -/* { dg-do compile } */ -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -@interface Derived: TestsuiteObject -@end - -extern TestsuiteObject* foo(void); -static Derived *test(void) -{ - Derived *m = foo(); /* { dg-warning "initialization from distinct Objective\\-C type" } */ - - return m; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-13.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-13.mm deleted file mode 100644 index 5e32cfe92..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-13.mm +++ /dev/null @@ -1,19 +0,0 @@ -/* When assigning function pointers, allow for covariant return types - and contravariant argument types. */ -/* { dg-do compile } */ -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -@class Derived; - -TestsuiteObject *ExternFunc (TestsuiteObject *filePath, TestsuiteObject *key); -typedef id FuncSignature (TestsuiteObject *arg1, Derived *arg2); - -@interface Derived: TestsuiteObject -+ (void)registerFunc:(FuncSignature *)function; -@end - -void foo(void) -{ - [Derived registerFunc: ExternFunc]; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-2.mm deleted file mode 100644 index 07043785a..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-2.mm +++ /dev/null @@ -1,88 +0,0 @@ -/* Test various ObjC types assignments and comparisons. */ -/* Author: Nicola Pero <nicola@brainstorm.co.uk>. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@protocol MyProtocol -- (void) foo; -@end - -@interface MyClass -@end - -@interface MyOtherClass <MyProtocol> -- (void) foo; -@end - -int main() -{ - id obj = nil; - id<MyProtocol> obj_p = nil; - MyClass *obj_c = nil; - MyOtherClass *obj_cp = nil; - Class obj_C = Nil; - - /* Assigning to an 'id' variable should never - generate a warning. */ - obj = obj_p; /* Ok */ - obj = obj_c; /* Ok */ - obj = obj_cp; /* Ok */ - obj = obj_C; /* Ok */ - - /* Assigning to a 'MyClass *' variable should always generate a - warning, unless done from an 'id'. */ - obj_c = obj; /* Ok */ - obj_c = obj_p; /* { dg-warning "distinct Objective\\-C type" } */ - obj_c = obj_cp; /* { dg-warning "distinct Objective\\-C type" } */ - obj_c = obj_C; /* { dg-warning "distinct Objective\\-C type" } */ - - /* Assigning to an 'id<MyProtocol>' variable should generate a - warning if done from a 'MyClass *' (which doesn't implement - MyProtocol), but not from an 'id' or from a 'MyOtherClass *' - (which implements MyProtocol). */ - obj_p = obj; /* Ok */ - obj_p = obj_c; /* { dg-warning "does not implement" } */ - obj_p = obj_cp; /* Ok */ - obj_p = obj_C; /* { dg-warning "distinct Objective\\-C type" } */ - - /* Assigning to a 'MyOtherClass *' variable should always generate - a warning, unless done from an 'id' or an 'id<MyProtocol>' (since - MyOtherClass implements MyProtocol). */ - obj_cp = obj; /* Ok */ - obj_cp = obj_c; /* { dg-warning "distinct Objective\\-C type" } */ - obj_cp = obj_p; /* Ok */ - obj_cp = obj_C; /* { dg-warning "distinct Objective\\-C type" } */ - - /* Any comparison involving an 'id' must be without warnings. */ - if (obj == obj_p) ; /* Ok */ /*Bogus warning here in 2.95.4*/ - if (obj_p == obj) ; /* Ok */ - if (obj == obj_c) ; /* Ok */ - if (obj_c == obj) ; /* Ok */ - if (obj == obj_cp) ; /* Ok */ - if (obj_cp == obj) ; /* Ok */ - if (obj == obj_C) ; /* Ok */ - if (obj_C == obj) ; /* Ok */ - - /* Any comparison between 'MyClass *' and anything which is not an 'id' - must generate a warning. */ - if (obj_c == obj_p) ; /* { dg-warning "lacks a cast" } */ - if (obj_p == obj_c) ; /* { dg-warning "lacks a cast" } */ - if (obj_c == obj_cp) ; /* { dg-warning "lacks a cast" } */ - if (obj_cp == obj_c) ; /* { dg-warning "lacks a cast" } */ - if (obj_c == obj_C) ; /* { dg-warning "lacks a cast" } */ - if (obj_C == obj_c) ; /* { dg-warning "lacks a cast" } */ - - /* Any comparison between 'MyOtherClass *' (which implements - MyProtocol) and an 'id' implementing MyProtocol are Ok. */ - if (obj_cp == obj_p) ; /* Ok */ - if (obj_p == obj_cp) ; /* Ok */ - - - if (obj_p == obj_C) ; /* { dg-warning "lacks a cast" } */ - if (obj_C == obj_p) ; /* { dg-warning "lacks a cast" } */ - if (obj_cp == obj_C) ; /* { dg-warning "lacks a cast" } */ - if (obj_C == obj_cp) ; /* { dg-warning "lacks a cast" } */ - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-3.mm deleted file mode 100644 index 2bea01534..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-3.mm +++ /dev/null @@ -1,38 +0,0 @@ -/* Test simple ObjC types casts. */ -/* Author: Nicola Pero <nicola@brainstorm.co.uk>. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@protocol MyProtocol -- (void) foo; -@end - -@interface MyClass -@end - -int main() -{ - id obj = nil; - id<MyProtocol> obj_p = nil; - MyClass *obj_c = nil; - Class obj_C = Nil; - - /* All these casts should generate no warnings. */ - - obj = (id)obj_p; - obj = (id)obj_c; - obj = (id)obj_C; - obj_c = (MyClass *)obj; - obj_c = (MyClass *)obj_p; - obj_c = (MyClass *)obj_C; - obj_p = (id<MyProtocol>)obj; - obj_p = (id<MyProtocol>)obj_c; - obj_p = (id<MyProtocol>)obj_C; - obj_C = (Class)obj; - obj_C = (Class)obj_p; - obj_C = (Class)obj_c; - - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-4.mm deleted file mode 100644 index 6867f8278..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-4.mm +++ /dev/null @@ -1,64 +0,0 @@ -/* Test assignments and comparisons between protocols (obscure case). */ -/* Author: Nicola Pero <nicola@brainstorm.co.uk>. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@protocol MyProtocolA -- (void) methodA; -@end - -@protocol MyProtocolB -- (void) methodB; -@end - -@protocol MyProtocolAB <MyProtocolA, MyProtocolB> -@end - -@protocol MyProtocolAC <MyProtocolA> -- (void) methodC; -@end - -int main() -{ - id<MyProtocolA> obj_a = nil; - id<MyProtocolB> obj_b = nil; - id<MyProtocolAB> obj_ab = nil; - id<MyProtocolAC> obj_ac = nil; - - obj_a = obj_b; /* { dg-warning "does not conform" } */ - obj_a = obj_ab; /* Ok */ - obj_a = obj_ac; /* Ok */ - - obj_b = obj_a; /* { dg-warning "does not conform" } */ - obj_b = obj_ab; /* Ok */ - obj_b = obj_ac; /* { dg-warning "does not conform" } */ - - obj_ab = obj_a; /* { dg-warning "does not conform" } */ - obj_ab = obj_b; /* { dg-warning "does not conform" } */ - obj_ab = obj_ac; /* { dg-warning "does not conform" } */ - - obj_ac = obj_a; /* { dg-warning "does not conform" } */ - obj_ac = obj_b; /* { dg-warning "does not conform" } */ - obj_ac = obj_ab; /* { dg-warning "does not conform" } */ - - if (obj_a == obj_b) ; /* { dg-warning "lacks a cast" } */ - if (obj_b == obj_a) ; /* { dg-warning "lacks a cast" } */ - - if (obj_a == obj_ab) ; /* Ok */ - if (obj_ab == obj_a) ; /* Ok */ /* Spurious 2.95.4 warning here */ - - if (obj_a == obj_ac) ; /* Ok */ - if (obj_ac == obj_a) ; /* Ok */ /* Spurious 2.95.4 warning here */ - - if (obj_b == obj_ab) ; /* Ok */ - if (obj_ab == obj_b) ; /* Ok */ /* Spurious 2.95.4 warning here */ - - if (obj_b == obj_ac) ; /* { dg-warning "lacks a cast" } */ - if (obj_ac == obj_b) ; /* { dg-warning "lacks a cast" } */ - - if (obj_ab == obj_ac) ; /* { dg-warning "lacks a cast" } */ - if (obj_ac == obj_ab) ; /* { dg-warning "lacks a cast" } */ - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-5.mm deleted file mode 100644 index 99f6772bd..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-5.mm +++ /dev/null @@ -1,74 +0,0 @@ -/* Test errors for assignments and comparisons between ObjC and C++ types. */ -/* Author: Nicola Pero <nicola@brainstorm.co.uk>. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -/* The NeXT runtime headers do not define NULL. */ -#ifndef NULL -#define NULL ((void *)0) -#endif - -@protocol MyProtocol -- (void) method; -@end - -@interface MyClass -@end - -int main() -{ - id obj = nil; - id <MyProtocol> obj_p = nil; - MyClass *obj_c = nil; - Class obj_C = Nil; - - int i = 0; - int *j = (int *)NULL; - - /* These should all generate warnings. */ - - obj = i; /* { dg-error "invalid conversion" } */ - obj = j; /* { dg-error "cannot convert" } */ - - obj_p = i; /* { dg-error "invalid conversion" } */ - obj_p = j; /* { dg-error "cannot convert" } */ - - obj_c = i; /* { dg-error "invalid conversion" } */ - obj_c = j; /* { dg-error "cannot convert" } */ - - obj_C = i; /* { dg-error "invalid conversion" } */ - obj_C = j; /* { dg-error "cannot convert" } */ - - i = obj; /* { dg-error "invalid conversion" } */ - i = obj_p; /* { dg-error "invalid conversion" } */ - i = obj_c; /* { dg-error "invalid conversion" } */ - i = obj_C; /* { dg-error "invalid conversion" } */ - - j = obj; /* { dg-error "cannot convert" } */ - j = obj_p; /* { dg-error "cannot convert" } */ - j = obj_c; /* { dg-error "cannot convert" } */ - j = obj_C; /* { dg-error "cannot convert" } */ - - if (obj == i) ; /* { dg-error "comparison between pointer and integer" } */ - if (i == obj) ; /* { dg-error "comparison between pointer and integer" } */ - if (obj == j) ; /* { dg-error "lacks a cast" } */ - if (j == obj) ; /* { dg-error "lacks a cast" } */ - - if (obj_c == i) ; /*{ dg-error "comparison between pointer and integer" }*/ - if (i == obj_c) ; /*{ dg-error "comparison between pointer and integer" }*/ - if (obj_c == j) ; /* { dg-error "lacks a cast" } */ - if (j == obj_c) ; /* { dg-error "lacks a cast" } */ - - if (obj_p == i) ; /*{ dg-error "comparison between pointer and integer" }*/ - if (i == obj_p) ; /*{ dg-error "comparison between pointer and integer" }*/ - if (obj_p == j) ; /* { dg-error "lacks a cast" } */ - if (j == obj_p) ; /* { dg-error "lacks a cast" } */ - - if (obj_C == i) ; /*{ dg-error "comparison between pointer and integer" }*/ - if (i == obj_C) ; /*{ dg-error "comparison between pointer and integer" }*/ - if (obj_C == j) ; /* { dg-error "lacks a cast" } */ - if (j == obj_C) ; /* { dg-error "lacks a cast" } */ - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-6.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-6.mm deleted file mode 100644 index 23b84edd3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-6.mm +++ /dev/null @@ -1,33 +0,0 @@ -/* Test assignments and comparisons involving `one-off' protocols. */ -/* Author: Nicola Pero <nicola@brainstorm.co.uk>. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@protocol MyProtocol -- (void) method; -@end - -@interface MyClass -@end - -int main() -{ - id obj = nil; - id <MyProtocol> obj_p = nil; - MyClass<MyProtocol> *obj_cp = nil; - - obj_cp = obj; /* Ok */ - obj = obj_cp; /* Ok */ - - obj_cp = obj_p; /* Ok */ - obj_p = obj_cp; /* Ok */ - - if (obj_cp == obj) ; /* Ok */ - if (obj == obj_cp) ; /* Ok */ - - if (obj_cp == obj_p) ; /* Ok */ - if (obj_p == obj_cp) ; /* Ok */ - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-7.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-7.mm deleted file mode 100644 index e23558114..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-7.mm +++ /dev/null @@ -1,38 +0,0 @@ -/* Test assignments and comparisons involving category protocols. */ -/* Author: Nicola Pero <nicola@brainstorm.co.uk>. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@protocol MyProtocol -- (void) method; -@end - -@interface MyClass -@end - -@interface MyClass (Addition) <MyProtocol> -- (void) method; -@end - -@interface MyOtherClass : MyClass -@end - -int main() -{ - id <MyProtocol> obj_p = nil; - MyClass *obj_cp = nil; - MyOtherClass *obj_cp2 = nil; - - obj_cp = obj_p; /* { dg-warning "distinct Objective\\-C type" } */ - obj_cp2 = obj_p; /* { dg-warning "distinct Objective\\-C type" } */ - obj_p = obj_cp; /* Ok */ - obj_p = obj_cp2; /* Ok */ - - if (obj_cp == obj_p) ; /* Ok */ - if (obj_cp2 == obj_p) ; /* Ok */ - if (obj_p == obj_cp) ; /* Ok */ - if (obj_p == obj_cp2) ; /* Ok */ - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-8.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-8.mm deleted file mode 100644 index 490f4ff19..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-8.mm +++ /dev/null @@ -1,33 +0,0 @@ -/* { dg-do compile } */ - -/* We used to ICE because we removed the cast to List_linked* - in -[ListIndex_linked next]. */ - -@interface List -{ -@public - int firstLink; -} -@end - -@interface ListIndex_linked -{ -@public - List *collection; - int link; -} -@end - -@interface List_linked: List -@end - -@implementation List -@end - -@implementation ListIndex_linked -- next -{ - link = ((List_linked*)collection)->firstLink; -} -@end - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-9.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-9.mm deleted file mode 100644 index 6c571325a..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/comp-types-9.mm +++ /dev/null @@ -1,25 +0,0 @@ -/* { dg-do compile } */ - -/* Another gimplifier ICE... */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -@interface MyView: TestsuiteObject { - int _frame; -} -- (void)_finalize; -@end - -@interface MyViewTemplate: MyView { - void *_className; -} -- (id)createRealObject; -@end - -@implementation MyViewTemplate -- (id)createRealObject { - id realObj; - *(MyView *)realObj = *(MyView *)self; - return realObj; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-class-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-class-1.mm deleted file mode 100644 index 6cde9beb5..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-class-1.mm +++ /dev/null @@ -1,18 +0,0 @@ -/* Test that Objective-C++ is able to chew through a simple C++ class hierarchy. - This was broken in earlier ObjC++ incarnations. */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -struct foo -{ - foo(void *a) {}; -}; - -struct bar : foo -{ - bar() : foo((char*)0) {}; -}; - -class apple : foo -{ -public: - apple() : foo(0) { }; -}; diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm deleted file mode 100644 index 129215087..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm +++ /dev/null @@ -1,43 +0,0 @@ -// Check if ivars may be accessed via the C++ dot notation. -// { dg-do run } -// { dg-options "-fno-objc-call-cxx-cdtors" } -// { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } - -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdlib.h> -#define CHECK_IF(expr) if(!(expr)) abort() - -struct cxx_struct { - int a, b; - void set_values (int _a, int _b = 3) { - a = _a; b = _b; - } - ~cxx_struct (void) { - a = b = 99; - } -}; - -@interface Manip : TestsuiteObject { - int c; - cxx_struct s; // { dg-warning "user-defined destructor" } - // { dg-warning "constructors and destructors will not be invoked" "" { target *-*-* } 22 } -} -- (void) manipulate_ivars; -@end - -@implementation Manip -- (void) manipulate_ivars { - s.set_values (7); - CHECK_IF (s.a == 7 && s.b == 3); - s.~cxx_struct(); - CHECK_IF (s.a == 99 && s.b == 99); -} -@end - -int main (void) -{ - Manip *obj = [Manip new]; - [obj manipulate_ivars]; - [obj free]; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-ivars-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-ivars-2.mm deleted file mode 100644 index 22ab118df..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-ivars-2.mm +++ /dev/null @@ -1,79 +0,0 @@ -// Check if the '- .cxx_construct' and '-.cxx_destruct' methods get called -// and if they perform their desired function. - -// { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } -// { dg-do run { target *-*-darwin* } } -// { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } -// { dg-options "-fobjc-call-cxx-cdtors" } - -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdlib.h> -#define CHECK_IF(expr) if(!(expr)) abort() - -static int ctor1_called, ctor2_called, dtor1_called; - -struct bar { - int a, b; - bar(void) { - a = 5; b = 6; - ctor1_called++; - } - ~bar(void) { - a = b = 99; - dtor1_called++; - } -}; - -struct boo: bar { - int c; - boo(int _c = 9): c(_c) { - ctor2_called++; - } -}; - -@interface Baz: TestsuiteObject { -@public - bar aa; -} -@end - -@implementation Baz -@end - -@interface Foo: Baz { -@public - int a; - boo bb; - bar b; - float c; - bar d; -} -@end - -@implementation Foo -@end - -int main (void) -{ - CHECK_IF(!ctor1_called && !ctor2_called && !dtor1_called); /* are we sane? */ - - Baz *baz = [Baz new]; - CHECK_IF(ctor1_called && !ctor2_called && !dtor1_called); - CHECK_IF(baz->aa.a == 5 && baz->aa.b == 6); - ctor1_called = 0; /* reset */ - - [baz free]; - CHECK_IF(!ctor1_called && !ctor2_called && dtor1_called); - dtor1_called = 0; /* reset */ - - Foo *foo = [Foo new]; - CHECK_IF(ctor1_called && ctor2_called && !dtor1_called); - CHECK_IF(foo->bb.a == 5 && foo->bb.b == 6 && foo->bb.c == 9); - CHECK_IF(foo->b.a == 5 && foo->b.b == 6); - CHECK_IF(foo->d.a == 5 && foo->d.b == 6); - ctor1_called = ctor2_called = 0; /* reset */ - - [foo free]; - CHECK_IF(!ctor1_called && !ctor2_called && dtor1_called); -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm deleted file mode 100644 index e94e6ec57..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm +++ /dev/null @@ -1,54 +0,0 @@ -// Check if ObjC classes with non-POD C++ ivars are specially marked in the metadata. - -// { dg-do run { target *-*-darwin* } } -// { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } -// { dg-options "-fobjc-call-cxx-cdtors -mmacosx-version-min=10.4" } -// This test has no equivalent or meaning for m64/ABI V2 -// { dg-xfail-run-if "No Test Avail" { *-*-darwin* && lp64 } { "-fnext-runtime" } { "" } } - -#include <objc/objc-runtime.h> -#include <stdlib.h> -#define CHECK_IF(expr) if(!(expr)) abort() - -#ifndef CLS_HAS_CXX_STRUCTORS -#define CLS_HAS_CXX_STRUCTORS 0x2000L -#endif - -struct cxx_struct { - int a, b; - cxx_struct (void) { a = b = 55; } -}; - -@interface Foo { - int c; - cxx_struct s; -} -@end - -@interface Bar: Foo { - float f; -} -@end - -@implementation Foo -@end - -@implementation Bar -@end - -int main (void) -{ -#ifndef __LP64__ - Class cls; - - cls = objc_getClass("Foo"); - CHECK_IF(cls->info & CLS_HAS_CXX_STRUCTORS); - cls = objc_getClass("Bar"); - CHECK_IF(!(cls->info & CLS_HAS_CXX_STRUCTORS)); - -#else - /* No test needed or available. */ - abort (); -#endif - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-scope-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-scope-1.mm deleted file mode 100644 index eb0c377da..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-scope-1.mm +++ /dev/null @@ -1,54 +0,0 @@ -/* Handle C++ scoping ('::') operators in ObjC message receivers gracefully. */ -/* Author: Ziemowit Laski <zlaski@apple.com> */ - -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdlib.h> - -@class Derived; - -Derived *inst[3]; - -struct CxxClass { - static Derived *get_instance(int); -}; - -Derived *CxxClass::get_instance(int offs) { - return inst[offs]; -} - -@interface Derived: TestsuiteObject { - int value; -} --(id)initWithValue:(int)val; --(int)derived_meth; -@end - -@implementation Derived --(id)initWithValue:(int)val { - [super init]; - value = val; - return self; -} -- (int)derived_meth { - return value; -} -@end - -int main(void) { - int r; - inst[1] = [[::Derived alloc] initWithValue:7]; - inst[2] = [[Derived alloc] initWithValue:77]; - - r = [CxxClass::get_instance(2) derived_meth]; - if (r != 77) - abort(); - - r = [CxxClass::get_instance(1) derived_meth]; - if (r != 7) - abort(); - - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-scope-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-scope-2.mm deleted file mode 100644 index 6444ebc3a..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-scope-2.mm +++ /dev/null @@ -1,19 +0,0 @@ -/* Make sure Objective-C++ can distinguish ObjC classes from C++ classes. */ -/* Author: Ziemowit Laski <zlaski@apple.com> */ - -/* { dg-do compile } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" -#include <iostream> -#include <string> - -@interface iostream: TestsuiteObject -@end - -int main(void) { - id i = [std::iostream new]; /* { dg-error "not an Objective\\-C class name or alias" } */ - i = [iostream new]; - i = [std::basic_string<char> new]; /* { dg-error "not an Objective\\-C class name or alias" } */ - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/defs.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/defs.mm deleted file mode 100644 index 23ba8f91e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/defs.mm +++ /dev/null @@ -1,43 +0,0 @@ -/* Check @defs() in Objective-C++ */ -/* Contributed by Devang Patel <dpatel@apple.com> */ -/* { dg-options "" } */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdlib.h> -#include <objc/objc.h> - -extern "C" void abort(void); - -@interface A : TestsuiteObject -{ - @public - int a; -} -@end - -struct A_defs -{ - @defs(A); -}; - -@implementation A -- init -{ - a = 42; - return self; -} -@end - - -int main() -{ - A *a = [A init]; - struct A_defs *a_defs = (struct A_defs *)a; - - if (a->a != a_defs->a) - abort (); - - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/demangle-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/demangle-1.mm deleted file mode 100644 index 015a3aff8..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/demangle-1.mm +++ /dev/null @@ -1,35 +0,0 @@ -/* Test demangling a C++ function. */ -/* { dg-do run } */ - -#include <cstring> -#include <cstdlib> -#include <iostream> - -class demangle_test -{ -public: - /* Return 0 if the demangling test succeeds. */ - static int test_function1 () - { - std::cout << __PRETTY_FUNCTION__ << "\n"; - return std::strcmp (__PRETTY_FUNCTION__, "static int demangle_test::test_function1()"); - } - - /* Return 0 if the demangling test succeeds. */ - static int test_function2 (int ignored) - { - std::cout << __PRETTY_FUNCTION__ << "\n"; - return std::strcmp (__PRETTY_FUNCTION__, "static int demangle_test::test_function2(int)"); - } -}; - -int main () -{ - if (demangle_test::test_function1 () != 0) - abort (); - - if (demangle_test::test_function2 (0) != 0) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/demangle-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/demangle-2.mm deleted file mode 100644 index f28208591..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/demangle-2.mm +++ /dev/null @@ -1,53 +0,0 @@ -/* Test demangling an Objective-C method. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -#include <cstring> -#include <cstdlib> -#include <iostream> -#include <objc/objc.h> - -@interface DemangleTest -{ - Class isa; -} -+ (int) testFunction1; -+ (int) test_function2; -+ (int) __testFunction3: (int)unused andArgument: (char)unused2; -+ (id) initialize; -@end - -@implementation DemangleTest -+ (int) testFunction1 -{ - std::cout << __PRETTY_FUNCTION__ << "\n"; - return std::strcmp (__PRETTY_FUNCTION__, "+[DemangleTest testFunction1]"); -} -+ (int) test_function2 -{ - std::cout << __PRETTY_FUNCTION__ << "\n"; - return std::strcmp (__PRETTY_FUNCTION__, "+[DemangleTest test_function2]"); -} -+ (int) __testFunction3: (int)unused andArgument: (char)unused2 -{ - std::cout << __PRETTY_FUNCTION__ << "\n"; - return std::strcmp (__PRETTY_FUNCTION__, "+[DemangleTest __testFunction3:andArgument:]"); -} -+ (id) initialize { return self; } -@end - -int main () -{ - if ([DemangleTest testFunction1] != 0) - abort (); - - if ([DemangleTest test_function2] != 0) - abort (); - - if ([DemangleTest __testFunction3:0 andArgument: 'c'] != 0) - abort (); - - return 0; -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/demangle-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/demangle-3.mm deleted file mode 100644 index 01e6c618e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/demangle-3.mm +++ /dev/null @@ -1,21 +0,0 @@ -/* Test demangling an Objective-C method in error messages. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface DemangleTest -{ - Class isa; -} -+ (int) testFunction1; -@end - -@implementation DemangleTest -+ (int) testFunction1 -{ - /* TODO: Hack the testsuite so we can test that we get - dg-error "In function .+[DemangleTest testFunction1]." - At the moment, the message is filtered out. */ - z; /* { dg-error "was not declared" } */ -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/dg.exp b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/dg.exp deleted file mode 100644 index 71ca14294..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/dg.exp +++ /dev/null @@ -1,42 +0,0 @@ -# GCC Objective-C++ testsuite that uses the `dg.exp' driver. -# Copyright (C) 2004-2013 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GCC; see the file COPYING3. If not see -# <http://www.gnu.org/licenses/>. - -# Load support procs. -load_lib obj-c++-dg.exp - -# If a testcase doesn't have special options, use these. -global DEFAULT_OBJCXXFLAGS -if ![info exists DEFAULT_OBJCXXFLAGS] then { - set DEFAULT_OBJCXXFLAGS " -ansi -pedantic-errors -Wno-long-long" -} - -# Initialize `dg'. -dg-init - -# Gather a list of all tests. -set tests [lsort [glob -nocomplain $srcdir/$subdir/*.mm]] - -# Main loop. -dg-runtest $tests "-fgnu-runtime" $DEFAULT_OBJCXXFLAGS - -# darwin targets can also run code with the NeXT runtime. -if [istarget "*-*-darwin*" ] { -dg-runtest $tests "-fnext-runtime" $DEFAULT_OBJCXXFLAGS -} - -# All done. -dg-finish diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/duplicate-class-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/duplicate-class-1.mm deleted file mode 100644 index 9476533d1..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/duplicate-class-1.mm +++ /dev/null @@ -1,31 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* Test that a duplicated @implementation for the same class does not - crash the compiler. */ - -@interface Test -{ - Class isa; -} -- (int) test; -@end - -@implementation Test -- (int) test -{ - return 4; -} -@end - -/* The most likely cause is that the programmer meant this to be a - category, so check what happens if we have some different methods - in there. */ -@implementation Test /* { dg-error "reimplementation of class .Test." } */ -- (int) test2 -{ - return [self test]; -} -@end -/* { dg-warning "incomplete implementation" "" { target *-*-* } 29 } */ -/* { dg-warning "not found" "" { target *-*-* } 29 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/dwarf-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/dwarf-2.mm deleted file mode 100644 index 3720a8871..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/dwarf-2.mm +++ /dev/null @@ -1,4 +0,0 @@ -/* { dg-options "-gdwarf-2 -dA" } */ -/* { dg-skip-if "No Dwarf" { { hppa*-*-hpux* } && { ! hppa*64*-*-* } } { "*" } { "" } } */ -/* { dg-final { scan-assembler "0x11\[^0-9a-f\].*DW_AT_language" } } */ -int x; diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/empty-private-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/empty-private-1.mm deleted file mode 100644 index b8b90b07e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/empty-private-1.mm +++ /dev/null @@ -1,9 +0,0 @@ -/* Test for no entry after @private token. */ - -/* { do-do compile } */ - -@interface foo -{ -@private -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-1-next.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-1-next.mm deleted file mode 100644 index 47673f20c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-1-next.mm +++ /dev/null @@ -1,26 +0,0 @@ -/* This file tests that things are encoded using the gcc-3.3 ABI which is only - used by the NeXT runtime. */ -/* Test for graceful encoding of const-qualified fields and parameters. */ -/* Author: Ziemowit Laski <zlaski@apple.com> */ - -/* { dg-do compile } */ -/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ - -struct Cxx { - const struct Cxx *next; -}; - -@interface ObjC { - const struct Cxx *obj; -} -- (ObjC *)initWithCxx: (struct Cxx *const)c and: (const struct Cxx *)d; -@end - -@implementation ObjC -- (ObjC *)initWithCxx: (struct Cxx *const)c and: (const struct Cxx *)d { - obj = d; - return self; -} -@end - -/* { dg-final { scan-assembler "@\[0-9\]+@0:\[0-9\]+\\^{Cxx=\\^{Cxx}}\[0-9\]+r\\^{Cxx=\\^{Cxx}}" } } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-1.mm deleted file mode 100644 index 5f5ba2013..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-1.mm +++ /dev/null @@ -1,24 +0,0 @@ -/* Test for graceful encoding of const-qualified fields and parameters. */ -/* Author: Ziemowit Laski <zlaski@apple.com> */ - -/* { dg-do compile } */ -/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */ - -struct Cxx { - const struct Cxx *next; -}; - -@interface ObjC { - const struct Cxx *obj; -} -- (ObjC *)initWithCxx: (struct Cxx *const)c and: (const struct Cxx *)d; -@end - -@implementation ObjC -- (ObjC *)initWithCxx: (struct Cxx *const)c and: (const struct Cxx *)d { - obj = d; - return self; -} -@end - -/* { dg-final { scan-assembler "@\[0-9\]+@0:\[0-9\]+r\\^{Cxx=\\^r{Cxx}}\[0-9\]+\\^r{Cxx}" } } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-10.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-10.mm deleted file mode 100644 index 2b3af88dc..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-10.mm +++ /dev/null @@ -1,46 +0,0 @@ -/* Test for @encode in templates. */ -/* { dg-options "-lobjc" } */ -/* { dg-do run } */ -#include <string.h> -#include <stdlib.h> - -template<typename T> -const char *my_encode(int variant) -{ - const char *result; - - switch (variant) - { - case 0: - result = @encode(T); - break; - case 1: - result = @encode(T*); - break; - case 2: - result = @encode(const T*); - break; - default: - result = @encode(int); - break; - } - - return result; -} - -int main() -{ - if (strcmp (@encode(char), my_encode<char>(0))) - abort (); - - if (strcmp (@encode(char *), my_encode<char>(1))) - abort (); - - if (strcmp (@encode(const char *), my_encode<char>(2))) - abort (); - - if (strcmp (@encode(int), my_encode<char>(3))) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-2.mm deleted file mode 100644 index 157bb5267..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-2.mm +++ /dev/null @@ -1,28 +0,0 @@ -/* { dg-do assemble } */ -/* { dg-options "-save-temps" } */ - -template <class T> -struct Vec { - T x, y; - int z; -}; - -typedef struct { - Vec<double> dvec; - Vec<float> fvec; - float fscalar; - double dscalar; - Vec<signed char> chVec; - int iscalar; -} anonymous; - -Vec<double> dd; - -const char *enc = @encode(Vec<float>); -const char *enc2 = @encode(Vec<double>); -const char *enc3 = @encode(anonymous); - -/* { dg-final { scan-assembler "{Vec<float>=ffi}" } } */ -/* { dg-final { scan-assembler "{Vec<double>=ddi}" } } */ -/* { dg-final { scan-file "encode-2.o" "{?={Vec<double>=ddi}{Vec<float>=ffi}fd{Vec<signed char>=cci}i}" } } -/* { dg-final cleanup-saved-temps } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-3.mm deleted file mode 100644 index 1486a652a..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-3.mm +++ /dev/null @@ -1,60 +0,0 @@ -/* { dg-do run } */ - -extern "C" { -extern void abort (void); -extern int strcmp (const char *, const char *); -} - -template <class T> -struct Vec { - T x, y; - long z; - long long zz; -}; - -typedef struct { - float fscalar; - double dv[10]; - int iscalar; - long z; - long long zz; - Vec<const signed char> cv; -} anonymous; - -//Vec<double> dd; -const char *enc = @encode(Vec<float>); -const char *enc2 = @encode(Vec<double>); -const char *enc3 = @encode(anonymous); - -#ifdef __LP64__ -#define L "q" -#else -#define L "l" -#endif - -/* Darwin (at least, as of XCode 3.2.3/Darwin10) does not encode the read-only - attribute on the type. Arguably, this is a bug, but we are compatible - with this when -fnext-runtime is selected. */ -#ifdef __NEXT_RUNTIME__ -#define E3 "{?=f[10d]i" L "q{Vec<const signed char>=cc" L "q}}" -#else -#define E3 "{?=f[10d]i" L "q{Vec<const signed char>=rcrc" L "q}}" -#endif - -int main(void) { - const char *encode = @encode(long); - - if (strcmp (encode, L)) - abort (); - - if (strcmp (enc, (const char *)"{Vec<float>=ff" L "q}")) - abort (); - - if (strcmp (enc2, (const char *)"{Vec<double>=dd" L "q}")) - abort (); - - if (strcmp (enc3, (const char *) E3)) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-4.mm deleted file mode 100644 index 4f3464448..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-4.mm +++ /dev/null @@ -1,93 +0,0 @@ -/* Test Objective-C method encodings. */ - -/* The _encoded_ parameter offsets for Objective-C methods are - computed inductively as follows: - - The first paramter (self) has offset 0; - - The k-th parameter (k > 1) has offset equal to the - sum of: - - the offset of the k-1-st paramter - - the (void *)-promoted size of the k-1-st parameter. - - Note that the encoded offsets need not correspond - to the actual placement of parameters (relative to 'self') - on the stack! Your target's ABI may have very different - opinions on the matter. */ - -/* Contributed by Ziemowit Laski <zlaski@apple.com>. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include "../objc-obj-c++-shared/runtime.h" - -#include <stdio.h> -#include <stdlib.h> - -#define CHECK_IF(expr) if(!(expr)) abort() - -@interface Foo: TestsuiteObject -typedef struct { float x, y; } XXPoint; -typedef struct { float width, height; } XXSize; -typedef struct _XXRect { XXPoint origin; XXSize size; } XXRect; --(id)setRect:(XXRect)r withInt:(int)i; --(void) char:(signed char)c float:(float)f double:(double)d long:(long)l; -@end - -XXRect my_rect; -unsigned offs1, offs2, offs3, offs4, offs5, offs6, offs7; - -@implementation Foo --(id)setRect:(XXRect)r withInt:(int)i { - unsigned offs = sizeof(self); - CHECK_IF(offs == offs3); - offs += sizeof(_cmd); - CHECK_IF(offs == offs4); - offs += sizeof(r); - CHECK_IF(offs == offs5); - offs += sizeof(i); - CHECK_IF(offs == offs1); - return nil; -} --(void) char:(signed char)c float:(float)f double:(double)d long:(long)l { - unsigned offs = sizeof(self); - CHECK_IF(offs == offs3); - offs += sizeof(_cmd); - CHECK_IF(offs == offs4); - offs += sizeof((int)c); - CHECK_IF(offs == offs5); - offs += sizeof(f); - CHECK_IF(offs == offs6); - offs += sizeof(d); - CHECK_IF(offs == offs7); - offs += sizeof(l); - CHECK_IF(offs == offs1); -} -@end - - -int main(void) { - Foo *foo = [[Foo alloc] init]; - Class fooClass = objc_getClass("Foo"); - Method meth; - const char *string; - - meth = class_getInstanceMethod(fooClass, @selector(setRect:withInt:)); - offs2 = 9999; - sscanf(method_getTypeEncoding(meth), "@%u@%u:%u{_XXRect={?=ff}{?=ff}}%ui%u", &offs1, &offs2, &offs3, - &offs4, &offs5); - CHECK_IF(!offs2); - [foo setRect:my_rect withInt:123]; - - meth = class_getInstanceMethod(fooClass, @selector(char:float:double:long:)); - offs2 = 9999; - if (sizeof (long) == 8) - string = "v%u@%u:%uc%uf%ud%uq%u"; - else - string = "v%u@%u:%uc%uf%ud%ul%u"; - sscanf(method_getTypeEncoding(meth), string, &offs1, &offs2, &offs3, - &offs4, &offs5, &offs6, &offs7); - CHECK_IF(!offs2); - [foo char:'c' float:2.3 double:3.5 long:2345L]; - - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-5.mm deleted file mode 100644 index 2924e5026..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-5.mm +++ /dev/null @@ -1,96 +0,0 @@ -/* Method encoding tests for stand-alone @protocol declarations. */ -/* Contributed by Ziemowit Laski <zlaski@apple.com>. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -#include <stdio.h> -#include <stdlib.h> - -#include "../objc-obj-c++-shared/runtime.h" -#include <objc/Protocol.h> - -#ifdef __cplusplus -#define ProtoBool bool -#else -#define ProtoBool _Bool -#endif - -#define CHECK_IF(expr) if(!(expr)) abort() - -enum Enum { - zero, one, two, three -}; -typedef enum Enum Enum; -typedef signed char ObjCBool; /* as used by the NeXT runtime */ - -@protocol Proto -union __XXAngle { unsigned int alpha, beta; }; -typedef struct { float x, y; union __XXAngle a; } XXPoint; -typedef struct { double width, height; } XXSize; -typedef struct _XXRect { XXPoint origin; XXSize size; struct _XXRect *next; } XXRect; -- (void) char:(signed char)c float:(float)f double:(double)d unsigned:(unsigned)u short:(short)s long:(long)l; -- (void *)setRect:(XXRect)r withBool:(ProtoBool)b withInt:(int)i; -+ (Enum *)getEnum:(XXPoint *)pt enum:(enum Enum)e bool:(ObjCBool)b; -+ (ProtoBool **)getBool:(ObjCBool **)b; -@end - -Protocol *proto = @protocol(Proto); -struct objc_method_description *meth; -struct objc_method_description meth_object; -unsigned totsize, offs0, offs1, offs2, offs3, offs4, offs5, offs6, offs7; - -static void scan_initial(const char *pattern) { - totsize = offs0 = offs1 = offs2 = offs3 = offs4 = offs5 = offs6 = offs7 = (unsigned)-1; - sscanf(meth->types, pattern, &totsize, &offs0, &offs1, &offs2, &offs3, - &offs4, &offs5, &offs6, &offs7); - CHECK_IF(!offs0 && offs1 == sizeof(id) && offs2 == offs1 + sizeof(SEL) && totsize >= offs2); -} - -int main(void) { - const char *string; - - meth_object = protocol_getMethodDescription (proto, - @selector(char:float:double:unsigned:short:long:), YES, YES); - meth = &meth_object; - if (sizeof (long) == 8) - string = "v%u@%u:%uc%uf%ud%uI%us%uq%u"; - else - string = "v%u@%u:%uc%uf%ud%uI%us%ul%u"; - scan_initial(string); - CHECK_IF(offs3 == offs2 + sizeof(int) && offs4 == offs3 + sizeof(float)); - CHECK_IF(offs5 == offs4 + sizeof(double) && offs6 == offs5 + sizeof(unsigned)); - CHECK_IF(offs7 == offs6 + sizeof(int) && totsize == offs7 + sizeof(long)); - meth_object = protocol_getMethodDescription (proto, - @selector(setRect:withBool:withInt:), YES, YES); - meth = &meth_object; - scan_initial("^v%u@%u:%u{_XXRect={?=ff(__XXAngle=II)}{?=dd}^{_XXRect}}%uB%ui%u"); - CHECK_IF(offs3 == offs2 + sizeof(XXRect) && offs4 == offs3 + sizeof(int)); - CHECK_IF(totsize == offs4 + sizeof(int)); - meth_object = protocol_getMethodDescription (proto, - @selector(getEnum:enum:bool:), YES, NO); - meth = &meth_object; - - /* Here we have the complication that 'enum Enum' could be encoded - as 'i' on __NEXT_RUNTIME_, and (most likely) as 'I' on the GNU - runtime. So we get the @encode(enum Enum), then put it into the - string in place of the traditional 'i'. - */ - /* scan_initial("^i%u@%u:%u^{?=ff(__XXAngle=II)}%ui%uc%u"); */ - { - char pattern[1024]; - - sprintf (pattern, "^%s%%u@%%u:%%u^{?=ff(__XXAngle=II)}%%u%s%%uc%%u", - @encode(enum Enum), @encode(enum Enum)); - scan_initial(pattern); - } - - CHECK_IF(offs3 == offs2 + sizeof(XXPoint *) && offs4 == offs3 + sizeof(enum Enum)); - CHECK_IF(totsize == offs4 + sizeof(int)); /* 'ObjCBool' is really 'char' */ - meth_object = protocol_getMethodDescription (proto, - @selector(getBool:), YES, NO); - meth = &meth_object; - scan_initial("^^B%u@%u:%u^*%u"); - CHECK_IF(totsize == offs2 + sizeof(ObjCBool **)); - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-6.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-6.mm deleted file mode 100644 index 9a1e65f92..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-6.mm +++ /dev/null @@ -1,86 +0,0 @@ -/* Encoding tests for ObjC class layouts. */ -/* Contributed by Ziemowit Laski <zlaski@apple.com>. */ -/* { dg-options "" } */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include "../objc-obj-c++-shared/runtime.h" - -#include <stdlib.h> -#include <string.h> - -#define CHECK_IF(expr) if(!(expr)) abort() - -@class Int1, Int2; -struct Nested; - -struct Innermost { - unsigned char a, b; - struct Nested *encl; -}; - -struct Nested { - float a, b; - Int1 *next; - struct Innermost innermost; -}; - -@interface Int1: TestsuiteObject { - signed char a, b; - Int2 *int2; - struct Nested nested; -} -@end - -@interface Int2: Int1 { - struct Innermost *innermost; - Int1 *base; -} -@end - -@implementation Int1 -@end - -@implementation Int2 -@end - -#if defined(__NEXT_RUNTIME__) && !defined(NEXT_OBJC_USE_NEW_INTERFACE) -struct objc_ivar *ivar; -#else -Ivar *ivar; -#endif - -static void check_ivar(const char *name, const char *type) { -#if defined(__NEXT_RUNTIME__) && !defined(NEXT_OBJC_USE_NEW_INTERFACE) - CHECK_IF(!strcmp(ivar->ivar_name, name)); - CHECK_IF(!strcmp(ivar->ivar_type, type)); -#else - CHECK_IF(!strcmp(ivar_getName(*ivar), name)); - CHECK_IF(!strcmp(ivar_getTypeEncoding(*ivar), type)); -#endif - ivar++; -} - -int main(void) { -#if defined(__NEXT_RUNTIME__) && !defined(NEXT_OBJC_USE_NEW_INTERFACE) - ivar = ((Class)objc_getClass("Int1"))->ivars->ivar_list; -#else - ivar = class_copyIvarList ((Class)objc_getClass("Int1"), NULL); -#endif - check_ivar("a", "c"); - check_ivar("b", "c"); - check_ivar("int2", "@\"Int2\""); - check_ivar("nested", - "{Nested=\"a\"f\"b\"f\"next\"@\"Int1\"\"innermost\"{Innermost=\"a\"C\"b\"C\"encl\"^{Nested}}}"); - -#if defined(__NEXT_RUNTIME__) && !defined(NEXT_OBJC_USE_NEW_INTERFACE) - ivar = ((Class)objc_getClass("Int2"))->ivars->ivar_list; -#else - ivar = class_copyIvarList ((Class)objc_getClass("Int2"), NULL); -#endif - check_ivar("innermost", "^{Innermost=CC^{Nested}}"); - check_ivar("base", "@\"Int1\""); - - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-7.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-7.mm deleted file mode 100644 index 74c58ab95..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-7.mm +++ /dev/null @@ -1,68 +0,0 @@ -/* Check if array arguments of ObjC methods are decayed to pointer types - in a proper fashion: - (1) The _encodings_ for the array arguments should remain to be '[4i]' and - such, since this has been the case since at least gcc 3.3. - (2) However, when building the static C functions out of ObjC method signatures, - we need to decay the arrays into pointers (as C does). - (3) If array size is not known (e.g., 'int a[]'), then the type shall be - encoded as a pointer. */ - -/* Contributed by Alexander Malmberg <alexander@malmberg.org> */ - -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include "../objc-obj-c++-shared/runtime.h" -#include <stdlib.h> -#include <stdio.h> -#define CHECK_IF(expr) if(!(expr)) abort() - -@interface Test : TestsuiteObject -{ float j; } --(void) test2: (int [5])a with: (int [])b; --(id) test3: (Test **)b; /* { dg-message "previous declaration of .\\-\\(id\\)test3:\\(Test \\*\\*\\)b." } */ -@end - -@implementation Test --(void) test2: (int [5])a with: (int [])b -{ - a[3] = *b; -} --(void) test3: (Test [3][4])b { /* { dg-warning "conflicting types for .\\-\\(void\\)test3:\\(Test \\\[3\\\]\\\[4\\\]\\)b." } */ -} -@end - -int bb[6] = { 0, 1, 2, 3, 4, 5 }; -int *b = bb; -Test *cc[4]; -Test **c = cc; - -int offs1, offs2, offs3, offs4, offs5, offs6; - -int main(int argc, char **argv) -{ - Class testClass = objc_getClass("Test"); - Method meth; - - cc[0] = [Test new]; - CHECK_IF (bb[3] == 3); - [*c test2: b with: bb + 4]; - CHECK_IF (bb[3] == 4); - bb[3] = 0; - [*c test2: bb with: bb + 5]; - CHECK_IF (bb[3] == 5); - - meth = class_getInstanceMethod(testClass, @selector(test2:with:)); - offs1 = offs2 = offs3 = offs4 = offs5 = offs6 = -1; - sscanf(method_getTypeEncoding(meth), "v%d@%d:%d[%di]%d^i%d", &offs1, &offs2, &offs3, - &offs4, &offs5, &offs6); - CHECK_IF (!offs2 && offs4 == 5 && offs3 > 0); - CHECK_IF (offs5 == 2 * offs3 && offs6 == 3 * offs3 && offs1 == 4 * offs3); - - meth = class_getInstanceMethod(testClass, @selector(test3:)); - offs1 = offs2 = offs3 = offs4 = offs5 = offs6 = -1; - sscanf(method_getTypeEncoding(meth), "v%d@%d:%d[%d[%d{Test=#f}]]%d", &offs1, &offs2, &offs3, - &offs4, &offs5, &offs6); - CHECK_IF (!offs2 && offs4 == 3 && offs5 == 4 && offs3 > 0); - CHECK_IF (offs6 == 2 * offs3 && offs1 == 3 * offs3); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-8.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-8.mm deleted file mode 100644 index 9321ceaa3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-8.mm +++ /dev/null @@ -1,23 +0,0 @@ -/* Test if the Objective-C @encode machinery distinguishes between - 'BOOL *' (which should be encoded as '^c') and 'char *' (which - should be encoded as '*'). */ -/* Contributed by Ziemowit Laski <zlaski@apple.com>. */ -/* { dg-do run { target *-*-darwin* } } */ -/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ - -#include <string.h> -#include <stdlib.h> -#include <objc/objc.h> - -int main(void) { - const char *BOOL_ptr = @encode(BOOL *); - const char *char_ptr = @encode(char *); - - if(strcmp(BOOL_ptr, "^c")) - abort(); - - if(strcmp(char_ptr, "*")) - abort(); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-9.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-9.mm deleted file mode 100644 index 6b064dfdc..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/encode-9.mm +++ /dev/null @@ -1,26 +0,0 @@ -/* Test than @encode is properly instantiated. */ -/* { dg-options "-lobjc" } */ -/* { dg-do run } */ - -#include <string.h> -#include <stdlib.h> -#include <objc/objc.h> - -template<typename T> -class typeOf { -public: - operator const char*() { return @encode(T); } -}; - -int main() { - typeOf<int> t; - if (strcmp ((const char *)t, @encode(int))) - abort(); - - typeOf<const char*> c; - if (strcmp ((const char *)c, @encode(const char*))) - abort(); - - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/enhanced-proto-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/enhanced-proto-1.mm deleted file mode 100644 index 97e14206b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/enhanced-proto-1.mm +++ /dev/null @@ -1,18 +0,0 @@ -/* Test use of @optional/@required keywords in @protocol class. */ -/* { dg-do compile } */ - -@protocol MyProto1 -@optional -- (void) FOO; -@optional -- (void) FOO; -@required -- (void) REQ; -@optional -@end - -@protocol MyProto2 <MyProto1> -- (void) FOO2; -@optional -- (void) FOO3; -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/enhanced-proto-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/enhanced-proto-2.mm deleted file mode 100644 index 31c2e509b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/enhanced-proto-2.mm +++ /dev/null @@ -1,23 +0,0 @@ -/* { dg-do compile } */ - -@protocol MyProto1 -@optional -- (void) FOO; -@optional -- (void) FOO; -@optional -- (void) REQ; -@optional -@end - -@interface MyProto2 <MyProto1> -@required /* { dg-error ".@required. is allowed in @protocol context only" } */ -- (void) FOO2; -@optional /* { dg-error ".@optional. is allowed in @protocol context only" } */ -- (void) FOO3; -@end - -@implementation MyProto2 -- (void) FOO2{} -- (void) FOO3{} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/except-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/except-1.mm deleted file mode 100644 index fbce2f272..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/except-1.mm +++ /dev/null @@ -1,66 +0,0 @@ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* This tests that exceptions work. It used to fail because - objc_msgSend was marked with DECL_NOTHROW. - If you include objc/Object.h, the problem goes away, because - that file includes objc/objc-runtime.h which explicitly prototypes - objc_msgSend without 'nothrow'. */ - -#include <stdio.h> -#include <stdlib.h> -#include "../objc-obj-c++-shared/TestsuiteObject.m" - -// ObjectiveC class header -@interface ObjCclass : TestsuiteObject { -} --(void)method1; --(void)method2; -@end - -// C++ class header -class CPPclass { -public: - void function1(); -}; - - -// Main -int main(int argc, char *argv[]) -{ - ObjCclass * foo = [[ObjCclass alloc] init]; - [foo method1]; - exit (0); -} - - -// ObjectiveC implementation -@implementation ObjCclass - --(void) method1 -{ - try { - [self method2]; - } - catch(...) { - return; - } -} - --(void) method2 -{ - CPPclass foo; - foo.function1(); -} - -@end - - -// C++ implementation -void CPPclass::function1() -{ - throw (1); - /* Shouldn't be here because we threw. */ - abort (); -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-1.mm deleted file mode 100644 index 0f3b7e8ae..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-1.mm +++ /dev/null @@ -1,42 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-options "-fobjc-exceptions" } */ -/* { dg-do compile } */ - -/* This test checks the syntax @catch (...) which catches any - exceptions. At the moment, @catch (...) is identical to @catch (id - exception). */ - -#include <objc/objc.h> - -@interface MyObject -{ - Class isa; -} -@end - -@implementation MyObject -@end - -int test (id object) -{ - int i = 0; - - @try - { - @throw object; - } - @catch (MyObject *o) - { - i += 1; - } - @catch (...) - { - i += 2; - } - @finally - { - i += 4; - } - - return i; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-2.mm deleted file mode 100644 index c66d39ebc..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-2.mm +++ /dev/null @@ -1,54 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ - -/* FIXME: This does not test running the code, because Objective-C exceptions at the moment - do not execute correctly in Objective-C++. See PR objc++/23616. Once that is fixed, - this test should be changed to use 'dg-do run' instead of just 'dg-do compile'. */ -/* { dg-do compile } */ -/* { dg-options "-fobjc-exceptions" } */ - -/* This test checks the syntax @catch (...) which catches any - exceptions. Check that code using it runs correctly. */ - -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdlib.h> - -@interface MyObject : TestsuiteObject -@end - -@implementation MyObject -@end - -int test (id object) -{ - int i = 0; - - @try - { - @throw object; - } - @catch (MyObject *o) - { - i += 1; - } - @catch (...) - { - i += 2; - } - @finally - { - i += 4; - } - - return i; -} - -int main (void) -{ - if (test ([MyObject new]) != 5) - abort (); - - if (test ([TestsuiteObject new]) != 6) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-3.mm deleted file mode 100644 index bf0be018e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-3.mm +++ /dev/null @@ -1,114 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-options "-fobjc-exceptions" } */ -/* { dg-do compile } */ - -/* Test that the compiler is checking the argument of @catch(), and - produce errors when invalid types are used. */ - -#include <objc/objc.h> - -@interface MyObject -{ - Class isa; -} -@end - -@implementation MyObject -@end - -@protocol MyProtocol; - -typedef MyObject MyObjectTypedef; -typedef MyObject *MyObjectPtrTypedef; -typedef int intTypedef; - -int test (id object) -{ - int dummy = 0; - - @try { @throw object; } - @catch (int x) /* { dg-error "@catch parameter is not a known Objective-C class type" } */ - { - dummy++; - } - - @try { @throw object; } - @catch (intTypedef x) /* { dg-error "@catch parameter is not a known Objective-C class type" } */ - { - dummy++; - } - - @try { @throw object; } - @catch (int *x) /* { dg-error "@catch parameter is not a known Objective-C class type" } */ - { - dummy++; - } - - @try { @throw object; } - @catch (id x) /* Ok */ - { - dummy++; - } - - @try { @throw object; } - @catch (id <MyProtocol> x) /* { dg-error "@catch parameter can not be protocol-qualified" } */ - { - dummy++; - } - - @try { @throw object; } - @catch (MyObject *x) /* Ok */ - { - dummy++; - } - - @try { @throw object; } - @catch (MyObject <MyProtocol> *x) /* { dg-error "@catch parameter can not be protocol-qualified" } */ - { - dummy++; - } - - @try { @throw object; } - @catch (MyObject x) /* { dg-error "@catch parameter is not a known Objective-C class type" } */ - { /* { dg-error "no matching function" "" { target *-*-* } 72 } */ - dummy++; /* { dg-message "MyObject" "" { target *-*-* } 13 } */ - } /* { dg-message "candidate" "" { target *-*-* } 13 } */ - /* { dg-message "candidates" "" { target *-*-* } 72 } */ - @try { @throw object; } - @catch (static MyObject *x) /* { dg-error "storage class" } */ - { - dummy++; - } - - @try { @throw object; } - @catch (MyObjectTypedef *x) /* Ok */ - { - dummy++; - } - - @try { @throw object; } - @catch (MyObjectTypedef <MyProtocol> *x) /* { dg-error "@catch parameter can not be protocol-qualified" } */ - { - dummy++; - } - - @try { @throw object; } - @catch (MyObjectPtrTypedef x) /* Ok */ - { - dummy++; - } - - @try { @throw object; } - @catch (Class x) /* { dg-error "@catch parameter is not a known Objective-C class type" } */ - { - dummy++; - } - - @try { @throw object; } - @catch (...) /* Ok */ - { - dummy++; - } - - return dummy; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-4.mm deleted file mode 100644 index 85debe444..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-4.mm +++ /dev/null @@ -1,64 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-options "-fobjc-exceptions" } */ -/* { dg-do compile } */ - -/* Test warnings when parsing syntax errors in @catch(). */ - -#include <objc/objc.h> - -@interface MyObject -{ - Class isa; -} -@end - -@implementation MyObject -@end - -@interface MyObject2 -{ - Class isa; -} -@end - -@implementation MyObject2 -@end - -@protocol MyProtocol; - -int test (id object) -{ - int dummy = 0; - - @try { @throw object; } - @catch - { /* { dg-error "expected" } */ - dummy++; /* { dg-error "@catch parameter is not a known Objective-C class type" "" { target *-*-* } 35 } */ - } - @catch () /* { dg-error "expected identifier before" } */ - { /* { dg-error "@catch parameter is not a known Objective-C class type" "" { target *-*-* } 38 } */ - dummy++; - } - @catch (i) /* { dg-error ".i. has not been declared" } */ - { /* { dg-error "@catch parameter is not a known Objective-C class type" "" { target *-*-* } 42 } */ - dummy++; - } - @catch (id <MyProtocol x) /* { dg-error "expected ... before .x." } */ - { /* { dg-error "@catch parameter can not be protocol-qualified" "" { target *-*-* } 46 } */ - dummy++; - } - @catch MyObject *x /* { dg-error "expected ... before .MyObject." } */ - { - dummy++; - } - @catch MyObject2 *x) /* { dg-error "expected ... before .MyObject2." } */ - { - dummy++; - } - - @try { @throw object; } - @catch (MyObject *x) - @catch (MyObject2 *y) /* { dg-error "expected ... before .catch." } */ - - return dummy; /* { dg-error "expected ... before .return." } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-5.mm deleted file mode 100644 index 1ea9a6f46..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-5.mm +++ /dev/null @@ -1,115 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-options "-fobjc-exceptions" } */ -/* { dg-do compile } */ - -/* Test that you can use an unnamed argument with @catch. This test is the same - as exceptions-3.mm, but with no name for @catch arguments. */ - -#include <objc/objc.h> - -@interface MyObject -{ - Class isa; -} -@end - -@implementation MyObject -@end - -@protocol MyProtocol; - -typedef MyObject MyObjectTypedef; -typedef MyObject *MyObjectPtrTypedef; -typedef int intTypedef; - -int test (id object) -{ - int dummy = 0; - - @try { @throw object; } - @catch (int) /* { dg-error "@catch parameter is not a known Objective-C class type" } */ - { - dummy++; - } - - @try { @throw object; } - @catch (intTypedef) /* { dg-error "@catch parameter is not a known Objective-C class type" } */ - { - dummy++; - } - - @try { @throw object; } - @catch (int *) /* { dg-error "@catch parameter is not a known Objective-C class type" } */ - { - dummy++; - } - - @try { @throw object; } - @catch (id) /* Ok */ - { - dummy++; - } - - @try { @throw object; } - @catch (id <MyProtocol>) /* { dg-error "@catch parameter can not be protocol-qualified" } */ - { - dummy++; - } - - @try { @throw object; } - @catch (MyObject *) /* Ok */ - { - dummy++; - } - - @try { @throw object; } - @catch (MyObject <MyProtocol> *) /* { dg-error "@catch parameter can not be protocol-qualified" } */ - { - dummy++; - } - - @try { @throw object; } - @catch (MyObject) /* { dg-error "@catch parameter is not a known Objective-C class type" } */ - { /* { dg-error "no matching function" "" { target *-*-* } 72 } */ - dummy++; /* { dg-message "MyObject" "" { target *-*-* } 13 } */ - } /* { dg-message "candidate" "" { target *-*-* } 13 } */ - /* { dg-message "candidate" "" { target *-*-* } 72 } */ - - @try { @throw object; } - @catch (static MyObject *) /* { dg-error "storage class" } */ - { - dummy++; - } - - @try { @throw object; } - @catch (MyObjectTypedef *) /* Ok */ - { - dummy++; - } - - @try { @throw object; } - @catch (MyObjectTypedef <MyProtocol> *) /* { dg-error "@catch parameter can not be protocol-qualified" } */ - { - dummy++; - } - - @try { @throw object; } - @catch (MyObjectPtrTypedef) /* Ok */ - { - dummy++; - } - - @try { @throw object; } - @catch (Class) /* { dg-error "@catch parameter is not a known Objective-C class type" } */ - { - dummy++; - } - - @try { @throw object; } - @catch (...) /* Ok */ - { - dummy++; - } - - return dummy; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-6.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-6.mm deleted file mode 100644 index 58882fed8..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-6.mm +++ /dev/null @@ -1,29 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-options "-fobjc-exceptions" } */ -/* { dg-do compile } */ - -/* Test warnings when parsing syntax errors in @throw. */ - -#include <objc/objc.h> - -void test (id object) -{ - @throw object; /* Ok */ - @throw; /* { dg-error ".@throw. .rethrow. used outside of a @catch block" } */ - @throw (object); /* Ok. */ - @throw (id)0 -} /* { dg-error "expected" } */ - -void test2 (id object) -{ - @throw object); /* { dg-error "expected" } */ - @throw (...); /* { dg-error "expected" } */ - @throw (); /* { dg-error "expected" } */ - @throw -} /* { dg-error "expected" } */ - -void test3 (id object1, id object2) -{ - /* This is apparently valid. */ - @throw object1, object2; /* Ok. */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-7.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-7.mm deleted file mode 100644 index 1f5adfc89..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/exceptions-7.mm +++ /dev/null @@ -1,18 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-options "-fobjc-exceptions" } */ -/* { dg-do compile } */ - -/* Test warnings when the argument of @throw is invalid. */ - -#include <objc/objc.h> - -void test (id object) -{ - struct x { int i; } invalid_1, *invalid_2; - - @throw object; /* Ok */ - @throw 1; /* { dg-error ".@throw. argument is not an object" } */ - @throw "string"; /* { dg-error ".@throw. argument is not an object" } */ - @throw invalid_1; /* { dg-error ".@throw. argument is not an object" } */ - @throw invalid_2; /* { dg-error ".@throw. argument is not an object" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/extern-c-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/extern-c-1.mm deleted file mode 100644 index c5fec6fbe..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/extern-c-1.mm +++ /dev/null @@ -1,18 +0,0 @@ -/* Test extern c support inside @implementation */ -/* Devang Patel <dpatel@apple.com>. */ - -#include <objc/objc.h> - -@interface Extern -@end - -@implementation Extern - -extern "C" void NSRegisterElement(id element); - -- init { - NSRegisterElement(self); - return self; -} - -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/extra-semi.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/extra-semi.mm deleted file mode 100644 index ad555962d..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/extra-semi.mm +++ /dev/null @@ -1,10 +0,0 @@ -/* Allow extra semicolons in between method declarations, - for old times' sake. */ - -/* { dg-do compile } */ - -@interface Foo - -(Foo *) expiration; - -(void) setExpiration:(Foo *) date;; - -(int) getVersion; -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fix-and-continue-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fix-and-continue-2.mm deleted file mode 100644 index 03ae9ebd9..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fix-and-continue-2.mm +++ /dev/null @@ -1,24 +0,0 @@ -/* Static variables, even if local, require indirect access through a stub - if -mfix-and-continue is enabled. */ - -/* Author: Ziemowit Laski <zlaski@apple.com> */ - -/* { dg-do assemble { target *-*-darwin* } } */ -/* { dg-options "-mfix-and-continue" } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -@interface Foo: TestsuiteObject -+ (TestsuiteObject *)indexableFileTypes; -@end - -@implementation Foo -+ (TestsuiteObject *)indexableFileTypes -{ - static TestsuiteObject *fileTypes = 0; - if(!fileTypes) { - fileTypes = [TestsuiteObject new]; - } - return fileTypes; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fobjc-exceptions-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fobjc-exceptions-1.mm deleted file mode 100644 index 8cee4d849..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fobjc-exceptions-1.mm +++ /dev/null @@ -1,28 +0,0 @@ -/* Test that Objective-C exceptions cause an error with -fobjc-exceptions. */ -/* { dg-do compile } */ - -@class Object; - -int dummy (int number, Object *o) -{ - @try { /* { dg-error ".-fobjc-exceptions. is required to enable Objective-C exception syntax" } */ - number++; - @throw o; /* Nothing, error has already been produced. */ - } - @catch (id object) - { - number++; - @throw; /* Nothing, error has already been produced. */ - } - @finally - { - number++; - } - - @synchronized (o) /* Nothing, error has already been produced. */ - { - number++; - } - - return number; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fobjc-exceptions-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fobjc-exceptions-2.mm deleted file mode 100644 index 32b3506ec..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fobjc-exceptions-2.mm +++ /dev/null @@ -1,29 +0,0 @@ -/* Test that Objective-C exceptions cause an error with -fobjc-exceptions. */ -/* { dg-do compile } */ - -@class Object; - -int dummy (int number, Object *o) -{ - @synchronized (o) /* { dg-error ".-fobjc-exceptions. is required to enable Objective-C exception syntax" } */ - { - number++; - } - - @try { /* Nothing, error has already been produced. */ - number++; - @throw o; /* Nothing, error has already been produced. */ - } - @catch (id object) - { - number++; - @throw; /* Nothing, error has already been produced. */ - } - @finally - { - number++; - } - - - return number; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fobjc-exceptions-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fobjc-exceptions-3.mm deleted file mode 100644 index d3d6453df..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fobjc-exceptions-3.mm +++ /dev/null @@ -1,30 +0,0 @@ -/* Test that Objective-C exceptions cause an error with -fobjc-exceptions. */ -/* { dg-do compile } */ - -@class Object; - -int dummy (int number, Object *o) -{ - @throw o; /* { dg-error ".-fobjc-exceptions. is required to enable Objective-C exception syntax" } */ - - @try { /* Nothing, error has already been produced. */ - number++; - @throw o; /* Nothing, error has already been produced. */ - } - @catch (id object) - { - number++; - @throw; /* Nothing, error has already been produced. */ - } - @finally - { - number++; - } - - @synchronized (o) /* Nothing, error has already been produced. */ - { - number++; - } - - return number; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fobjc-std-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fobjc-std-1.mm deleted file mode 100644 index 59db95091..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fobjc-std-1.mm +++ /dev/null @@ -1,82 +0,0 @@ -/* Test warnings when using -fobjc-std=objc1. */ -/* { dg-do compile } */ -/* { dg-options "-fobjc-std=objc1" } */ - -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; /* { dg-error ".@package. is not available in Objective.C 1.0" } */ -@package - int a; - int b; -} -+ (id) alloc __attribute__ ((deprecated)); /* { dg-error "not available in Objective.C 1.0" } */ -+ (id) name; -- (id) init; -- (id) testMe: (id) __attribute__((unused)) argument; /* { dg-error "not available in Objective.C 1.0" } */ -@property (nonatomic) int a; /* { dg-error "not available in Objective.C 1.0" } */ -@property (nonatomic) int b; /* { dg-error "not available in Objective.C 1.0" } */ -@end - -@implementation MyRootClass -+ (id) alloc { return self; } -+ (id) name { return self; } -- (id) init { return self; } -- (id) testMe: (id) __attribute__((unused)) argument { return self; } /* { dg-error "not available in Objective.C 1.0" } */ -/* There is a problem with the testsuite on the following line; the compiler seems Ok, but the testsuite still barfs. */ -/*@synthesize a;*/ /* dg-error "not available in Objective.C 1.0" */ -/* The following lines replace the synthesize to prevent warnings. */ -- (int) a { return a; } -- (void) setA: (int)value { a = value; } -@dynamic b; /* { dg-error "not available in Objective.C 1.0" } */ -@end - -__attribute__ ((deprecated)) -@interface MyRootClass2 /* { dg-error "class attributes are not available in Objective.C 1.0" } */ -{ - Class isa; -} -@end - -__attribute__ ((deprecated)) -@protocol MyProtocol /* { dg-error "protocol attributes are not available in Objective.C 1.0" } */ -- (id) test; -@required /* { dg-error "not available in Objective.C 1.0" } */ -- (id) variable __attribute__ ((deprecated)); /* { dg-error "not available in Objective.C 1.0" } */ -@optional /* { dg-error "not available in Objective.C 1.0" } */ -@end -#if 0 /* fast enumeration is not implemented even in Objective-C 2.0 */ -@interface MyRootClass (NSFastEnumeration) -- (unsigned long)countByEnumeratingWithState: (struct __objcFastEnumerationState *)state - objects:(id *)stackbuf - count:(unsigned int)len; -@end - -@class NSArray; - -int array_length (NSArray *array) -{ - int i = 0; - - for (id object in array) /* dg-error "not available in Objective.C 1.0" */ - i++; - - return i; -} -#endif - -id test (void) -{ - return MyRootClass.name; /* { dg-error "not available in Objective.C 1.0" } */ -} - -@interface MyRootClass3 -{ - Class isa; -} -@end - -/* There is a problem with the testsuite on the following line; the compiler seems Ok, but the testsuite still barfs. */ -/* @interface MyRootClass3 () */ /* dg-error "not available in Objective.C 1.0" */ -/* @end */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fsf-nsstring-format-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fsf-nsstring-format-1.mm deleted file mode 100644 index caeaa0300..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fsf-nsstring-format-1.mm +++ /dev/null @@ -1,51 +0,0 @@ -/* Check NSString format extensions. */ -/* { dg-do compile { target *-*-darwin* } } */ -/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ -/* { dg-options "-Wall" } */ - -#ifndef __CONSTANT_CFSTRINGS__ -#error requires CFString -#endif - -#ifdef __cplusplus -extern "C" { -#endif -extern int printf (const char *fmt, ...); -typedef const struct __CFString * CFStringRef; - -#ifdef __cplusplus -} -#endif - -@class NSString; - -int s1 (NSString *fmt, ...) __attribute__((format(NSString, 1, 2))) ; /* OK */ -/* A CFString can represent an NSString. */ -int s1a (CFStringRef fmt, ...) __attribute__((format(NSString, 1, 2))) ; /* OK */ -/* But... it is possible that a CFString format might imply functionality that - is not present in objective-c. */ -int s1b (NSString *fmt, ...) __attribute__((format(CFString, 1, 2))) ; /* { dg-error "format argument should be a .CFString. reference" } */ - -int s2 (int a, NSString *fmt, ... ) __attribute__((format(__NSString__, 2, 3))) ; /* OK */ - -int s2a (int a, NSString *fmt, ... ) __attribute__((format(NSString, 2, 2))) ; /* { dg-error "format string argument follows the args to be formatted" } */ - -int s3 (const char *fmt, ... ) __attribute__((format(__NSString__, 1, 2))) ; /* { dg-error "format argument should be a .NSString. reference but a string was found" } */ -int s4 (NSString *fmt, ... ) __attribute__((format(printf, 1, 2))) ; /* { dg-error "found a .NSString. reference but the format argument should be a string" } */ - -char *s5 (char dum, char *fmt1, ... ) __attribute__((format_arg(2))) ; /* OK */ -NSString *s6 (NSString *dum, NSString *fmt1, ... ) __attribute__((format_arg(2))) ; /* OK */ - -char *s7 (int dum, void *fmt1, ... ) __attribute__((format_arg(2))) ; /* { dg-error "format string argument is not a string type" } */ -int s8 (NSString *dum, NSString *fmt1, ... ) __attribute__((format_arg(2))) ; /* { dg-error "function does not return string type" } */ - -char *s9 (int dum, char *fmt1, ... ) __attribute__((format_arg(2))) ; /* OK */ -NSString *s10 (int dum, NSString *fmt1, ... ) __attribute__((format_arg(2))) ; /* OK */ - -void foo (void) -{ - s1 (@"this format not checked %d %s", 3, 4); - printf("this one is checked %d %s", 3, 4, 5); /* { dg-warning "format '%s' expects argument of type 'char.', but argument 3 has type 'int'" } */ - /* { dg-warning "too many arguments for format" "" { target *-*-* } 48 } */ - printf(s9 (1, (char *)"and so is this %d %d %s" , 3, 4, "hm"), 5, 6, 12); /* { dg-warning "format '%s' expects argument of type 'char.', but argument 4 has type 'int'" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fsf-package-0.m b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fsf-package-0.m deleted file mode 100644 index 812989a42..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/fsf-package-0.m +++ /dev/null @@ -1,36 +0,0 @@ -/* { dg-do compile } */ - -#import "../objc-obj-c++-shared/TestsuiteObject.h" - -@interface obj : TestsuiteObject -{ -@public - int v1; -@package /* { dg-warning ".@package. presently has the same effect as .@public." } */ - int v2; -@protected - int v3; -@private - int v4; -} -- (int) value; -- (void) setValue: (int)number; -@end - -@implementation obj : Object - -- (int) value { return v1; } -- (void) setValue: (int)number { v1 = number; } - -@end - -void foo (void) -{ - obj *a; - - [a setValue:2]; - a->v2 = 1; - a->v3 = [a value] - a->v2; /* { dg-warning ".v3. is @protected" } */ - a->v4 = a->v3 - 1; /* { dg-warning ".v4. is @private" } */ - /* { dg-warning ".v3. is @protected" "" { target *-*-* } 35 } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-class-meta.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-class-meta.mm deleted file mode 100644 index e7c5fc20e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-class-meta.mm +++ /dev/null @@ -1,327 +0,0 @@ -/* Test the Modern GNU Objective-C Runtime API. - - This is test 'class-meta', covering calling functions starting with - 'class' but using a meta class as argument. - - Functions that manipulate methods (adding, replacing methods) - usually take a meta class argument to manipulate the class methods - instead of the instance ones. This is an important part of the API - that needs testing. - - Functions that manipulate instances, instance variables, properties - and protocols at the moment must take a normal class as argument; - calling them with a meta class as argument is of no particular use - and generally produces a behaviour that is undocumented and/or - undefined (and this is true with all runtimes). As in the future - this behaviour may be defined or documented (for example, if class - variables are implemented as instance variables of meta classes) we - avoid testing it for compatibility with future runtimes. */ - -/* { dg-do run } */ -/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* To get the modern GNU Objective-C Runtime API, you include - objc/runtime.h. */ -#include <objc/runtime.h> -#include <stdlib.h> -#include <iostream> -#include <cstring> - -@interface MyRootClass -{ Class isa; } -+ alloc; -- init; -+ initialize; -@end - -@implementation MyRootClass -+ alloc { return class_createInstance (self, 0); } -- init { return self; } -+ initialize { return self; } -@end - -static id static_variable = nil; - -@interface MySubClass : MyRootClass -+ (void) setVariable: (id)value; -+ (id) variable; -@end - -@implementation MySubClass -+ (void) setVariable: (id)value { static_variable = value; } -+ (id) variable { return static_variable; } -@end - -@interface DifferentClass : MyRootClass -+ (id) myClass; -@end - -@implementation DifferentClass -+ (id) myClass { return self; } -@end - -@interface MySubClass (MySelf) -+ (id) mySelf; -@end - -int main () -{ - /* Functions are tested in alphabetical order. */ - - /* Calling class_addIvar() with a meta class is not documented and - (currently) of no use. */ - /* std::cout << "Testing class_addIvar ()...\n"; */ - - std::cout << "Testing class_addMethod () on a meta class...\n"; - { - /* Here we test adding methods to meta classes, ie, adding class methods. */ - Class new_class = objc_allocateClassPair (objc_getClass ("MyRootClass"), "MySubClass2", 0); - Method method1 = class_getInstanceMethod (objc_getMetaClass ("MySubClass"), @selector (setVariable:)); - Method method2 = class_getInstanceMethod (objc_getMetaClass ("MySubClass"), @selector (variable)); - - if (new_class == Nil) - abort (); - - if (! class_addMethod (object_getClass (new_class), @selector (setVariable:), method_getImplementation (method1), - method_getTypeEncoding (method1))) - abort (); - - if (! class_addMethod (object_getClass (new_class), @selector (variable), method_getImplementation (method2), - method_getTypeEncoding (method2))) - abort (); - - /* Test that if the method already exists in the class, - class_addMethod() returns NO. */ - if (class_addMethod (object_getClass (new_class), @selector (variable), method_getImplementation (method2), - method_getTypeEncoding (method2))) - abort (); - - objc_registerClassPair (new_class); - - /* Now, MySubClass2 is basically the same as MySubClass! We'll - use the +variable and +setVariable: methods on it. */ - { - Class c = objc_getClass ("MySubClass2"); - id o = [[MyRootClass alloc] init]; - - [c setVariable: o]; - - if ([c variable] != o) - abort (); - } - - /* Now, try that if you take an existing class and try to add an - already existing method, class_addMethod returns NO. This is - subtly different from before, when 'new_class' was still in - construction. Now it's a real class and the libobjc internals - differ between the two cases. */ - if (class_addMethod (object_getClass (new_class), @selector (variable), method_getImplementation (method2), - method_getTypeEncoding (method2))) - abort (); - } - - /* Calling class_addProtocol() on a meta class is not documented and - (currently) of no use. */ - /* std::cout << "Testing class_addProtocol () on a meta class...\n"; */ - - /* Calling class_conformsToProtocol() on a meta class is not - documented and (currently) of no use. */ - /* std::cout << "Testing class_conformsToProtocol () on a meta class...\n"; */ - - /* Calling class_copyIvarList() on a meta class is not documented - and (currently) of no use. */ - /* std::cout << "Testing class_copyIvarList () on a meta class...\n"; */ - - std::cout << "Testing class_copyMethodList () on a meta class...\n"; - { - /* Test that you can copy the method list of a meta class. They - are the class methods of the class. */ - unsigned int count; - Method * list = class_copyMethodList (objc_getMetaClass ("MySubClass"), &count); - - if (count != 2) - abort (); - - if (! ((std::strcmp (sel_getName (method_getName (list[0])), "variable") == 0 - && std::strcmp (sel_getName (method_getName (list[1])), "setVariable:") == 0) - || (std::strcmp (sel_getName (method_getName (list[0])), "setVariable:") == 0 - && std::strcmp (sel_getName (method_getName (list[1])), "variable") == 0))) - abort (); - - if (list[2] != NULL) - abort (); - } - - /* Calling class_copyPropertyList() on a meta class is not - documented and (currently) of no use. */ - /* std::cout << "Testing class_copyPropertyList () on a meta class...\n"; */ - - /* Calling class_copyProtocolList() on a meta class is not - documented and (currently) of no use. */ - /* std::cout << "Testing class_copyProtocolList () on a meta class...\n"; */ - - /* Calling class_createInstance() on a meta class is not documented - and (currently) of no use. */ - /* std::cout << "Testing class_createInstance () on a meta class...\n"; */ - - /* Calling class_getClassMethod () on a meta class is not documented - and (currently) of no use. */ - /* std::cout << "Testing class_getClassMethod () on a meta class...\n"; */ - - /* Calling class_getClassVariable () on a meta class is not - documented and (currently) of no use. */ - /* std::cout << "Testing class_getClassVariable () on a meta class ...\n"; */ - - std::cout << "Testing class_getInstanceMethod () on a meta class...\n"; - { - /* The instance method of a meta class is the class method with - the same name of the class. */ - Method method_1 = class_getInstanceMethod (objc_getMetaClass ("MySubClass"), - @selector(variable)); - Method method_2 = class_getClassMethod (objc_getClass ("MySubClass"), - @selector(variable)); - - if (method_1 == NULL || method_2 == NULL) - abort (); - - if (method_1 != method_2) - abort (); - - if (std::strcmp (sel_getName (method_getName (method_1)), "variable") != 0) - abort (); - } - - /* Calling class_getInstanceSize() with a meta class is not - documented and (currently) of no use. */ - /* std::cout << "Testing class_getInstanceSize () on a meta class...\n"; */ - - /* Calling class_getInstanceVariable() with a meta class is not - documented and (currently) of no use. */ - /* std::cout << "Testing class_getInstanceVariable () on a meta class...\n"; */ - - /* Calling class_getIvarLayout() with a meta class is not documented - and (currently) of no use. */ - /* std::cout << "Testing class_getIvarLayout () on a meta class...\n"; */ - - std::cout << "Testing class_getMethodImplementation () on a meta class...\n"; - { - /* Getting the method implementation with a meta class returns a - class method. */ - MySubClass *object = [[MySubClass alloc] init]; - IMP imp = class_getMethodImplementation (objc_getMetaClass ("MySubClass"), - @selector(variable)); - - if (imp == NULL) - abort (); - - [MySubClass setVariable: object]; - - if ((*imp)(objc_getClass ("MySubClass"), @selector(variable)) != object) - abort (); - } - - /* This function does not exist with the GNU runtime. */ - /* std::cout << "Testing class_getMethodImplementation_stret () on a meta class...\n"; */ - - std::cout << "Testing class_getName () on a meta class...\n"; - { - /* Traditionally, a meta class has the same name as the class. */ - if (std::strcmp (class_getName (objc_getMetaClass ("MyRootClass")), - "MyRootClass") != 0) - abort (); - } - - /* Calling class_getProperty() with a meta class is not documented - and (currently) of no use. */ - /* std::cout << "Testing class_getProperty ()...\n"; */ - - std::cout << "Testing class_getSuperclass () on a meta class...\n"; - { - /* The superclass of a meta class is the meta class of the superclass. */ - if (class_getSuperclass (objc_getMetaClass ("MySubClass")) != objc_getMetaClass ("MyRootClass")) - abort (); - - /* Test that it works on a newly created, but not registered, class. */ - { - Class new_class = objc_allocateClassPair (objc_getClass ("MyRootClass"), "MySubClass3", 0); - - if (class_getSuperclass (object_getClass (new_class)) != object_getClass (objc_getClass ("MyRootClass"))) - abort (); - } - } - - /* Calling class_getVersion() with a meta class is not documented - and (currently) of no use. */ - /* std::cout << "Testing class_getVersion ()...\n"; */ - - /* Calling class_getWeakIvarLayout() with a meta class is not - documented and (currently) of no use. */ - /* std::cout << "Testing class_getWeakIvarLayout () on a meta class...\n"; */ - - /* class_isMetaClass() is already tested in gnu-api-2-class.m */ - /* std::cout << "Testing class_isMetaClass ()...\n"; */ - - std::cout << "Testing class_replaceMethod () on a meta class...\n"; - { - /* We are going to replace the [MySubclass +variable] method with - the [DifferentClass +myClass] one. */ - Method new_method = class_getClassMethod (objc_getClass ("DifferentClass"), - @selector (myClass)); - Method old_method = class_getClassMethod (objc_getClass ("MySubClass"), - @selector (variable)); - const char *new_types = method_getTypeEncoding (new_method); - IMP new_imp = method_getImplementation (new_method); - const char *old_types = method_getTypeEncoding (old_method); - IMP old_imp = class_replaceMethod (objc_getMetaClass ("MySubClass"), @selector (variable), - method_getImplementation (new_method), - method_getTypeEncoding (new_method)); - id o = [[MyRootClass alloc] init]; - - [MySubClass setVariable: o]; - - /* Try the new method implementation. */ - if ([MySubClass variable] != objc_getClass ("MySubClass")) - abort (); - - /* Put the original method back. */ - class_replaceMethod (objc_getMetaClass ("MySubClass"), @selector (variable), - old_imp, old_types); - - /* Test it's back to what it was. */ - if ([MySubClass variable] != o) - abort (); - - { - /* Finally, try adding a new method. */ - class_replaceMethod (objc_getMetaClass ("DifferentClass"), @selector (mySelf), - new_imp, new_types); - - if ([(Class)objc_getClass ("DifferentClass") mySelf] != objc_getClass ("DifferentClass")) - abort (); - } - } - - std::cout << "Testing class_respondsToSelector () on a meta class...\n"; - { - /* A meta class responds to a selector if and only if the class - responds to the corresponding class method. */ - if (! class_respondsToSelector (objc_getMetaClass ("MySubClass"), @selector(setVariable:))) - abort (); - - if (class_respondsToSelector (objc_getMetaClass ("MyRootClass"), @selector(setVariable:))) - abort (); - } - - /* This is not really implemented with the GNU runtime. */ - /* std::cout << "Testing class_setIvarLayout () on a meta class...\n"; */ - - /* Calling class_setVersion() with a meta class is not documented - and (currently) of no use. */ - /* std::cout << "Testing class_setVersion () on a meta class...\n"; */ - - /* This is not really implemented with the GNU runtime. */ - /* std::cout << "Testing class_setWeakIvarLayout () on a meta class...\n"; */ - -return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-class.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-class.mm deleted file mode 100644 index 9a7c092f3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-class.mm +++ /dev/null @@ -1,498 +0,0 @@ -/* Test the Modern GNU Objective-C Runtime API. - - This is test 'class', covering all functions starting with 'class'. - Tests calling the functions with a meta class as argument are covered - in the separate file, gnu-api-2-class-meta.mm. */ - -/* { dg-do run } */ -/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* To get the modern GNU Objective-C Runtime API, you include - objc/runtime.h. */ -#include <objc/runtime.h> -#include <stdlib.h> -#include <iostream> -#include <cstring> - -@interface MyRootClass -{ Class isa; } -+ alloc; -- init; -+ initialize; -@end - -@implementation MyRootClass -+ alloc { return class_createInstance (self, 0); } -- init { return self; } -+ initialize { return self; } -@end - -@protocol MyProtocol -- (id) variable; -@end - -@protocol MySecondProtocol -- (id) setVariable: (id)value; -@end - -@interface MySubClass : MyRootClass <MyProtocol> -{ id variable_ivar; } -- (void) setVariable: (id)value; -- (id) variable; -@end - -@implementation MySubClass -- (void) setVariable: (id)value { variable_ivar = value; } -- (id) variable { return variable_ivar; } -@end - -@interface MyOtherSubClass : MySubClass -@end - -@implementation MyOtherSubClass -@end - -@interface DifferentClass : MyRootClass -- (id) myClass; -- (id) self; -@end - -@implementation DifferentClass -- (id) myClass { return object_getClass (self); } -- (id) self { return self; } -@end - -@interface MySubClass (MySelf) -- (id) mySelf; -@end - -/* Hack to calculate the log2 of a byte alignment. */ -unsigned char -log_2_of (unsigned int x) -{ - unsigned char result = 0; - - /* We count how many times we need to divide by 2 before we reach 1. - This algorithm is good enough for the small numbers (such as 8, - 16 or 64) that we have to deal with. */ - while (x > 1) - { - x = x / 2; - result++; - } - - return result; -} - -int main () -{ - /* Functions are tested in alphabetical order. */ - - std::cout << "Testing class_addIvar ()...\n"; - { - Class new_class = objc_allocateClassPair (objc_getClass ("MySubClass"), "MySubSubClass", 0); - - if (new_class == Nil) - abort (); - - if (! class_addIvar (new_class, "variable2_ivar", sizeof (id), - log_2_of (__alignof__ (id)), @encode (id))) - abort (); - - if (! class_addIvar (new_class, "variable3_ivar", sizeof (unsigned char), - log_2_of (__alignof__ (unsigned char)), @encode (unsigned char))) - abort (); - - if (! class_addIvar (new_class, "variable4_ivar", sizeof (unsigned long), - log_2_of (__alignof__ (unsigned long)), @encode (unsigned long))) - abort (); - - objc_registerClassPair (new_class); - - { - MySubClass *o = [[(Class)objc_getClass ("MySubSubClass") alloc] init]; - Ivar variable2 = class_getInstanceVariable (objc_getClass ("MySubSubClass"), "variable2_ivar"); - Ivar variable3 = class_getInstanceVariable (objc_getClass ("MySubSubClass"), "variable3_ivar"); - Ivar variable4 = class_getInstanceVariable (objc_getClass ("MySubSubClass"), "variable4_ivar"); - - if (variable2 == NULL || variable3 == NULL || variable4 == NULL) - abort (); - - if (std::strcmp (ivar_getName (variable2), "variable2_ivar") != 0) - abort (); - - if (std::strcmp (ivar_getName (variable3), "variable3_ivar") != 0) - abort (); - - if (std::strcmp (ivar_getName (variable4), "variable4_ivar") != 0) - abort (); - - { - unsigned char *var3 = (unsigned char *)((char *)o + ivar_getOffset (variable3)); - unsigned long *var4 = (unsigned long *)((char *)o + ivar_getOffset (variable4)); - - object_setIvar (o, variable2, new_class); - *var3 = 230; - *var4 = 89000L; - - if (object_getIvar (o, variable2) != new_class) - abort (); - - if (*var3 != 230) - abort (); - - if (*var4 != 89000L) - abort (); - } - } - } - - std::cout << "Testing class_addMethod ()...\n"; - { - Class new_class = objc_allocateClassPair (objc_getClass ("MyRootClass"), "MySubClass2", 0); - Method method1 = class_getInstanceMethod (objc_getClass ("MySubClass"), @selector (setVariable:)); - Method method2 = class_getInstanceMethod (objc_getClass ("MySubClass"), @selector (variable)); - - if (new_class == Nil) - abort (); - - if (! class_addIvar (new_class, "variable_ivar", sizeof (id), - log_2_of (__alignof__ (id)), @encode (id))) - abort (); - - if (! class_addMethod (new_class, @selector (setVariable:), method_getImplementation (method1), - method_getTypeEncoding (method1))) - abort (); - - if (! class_addMethod (new_class, @selector (variable), method_getImplementation (method2), - method_getTypeEncoding (method2))) - abort (); - - /* Test that if the method already exists in the class, - class_addMethod() returns NO. */ - if (class_addMethod (new_class, @selector (variable), method_getImplementation (method2), - method_getTypeEncoding (method2))) - abort (); - - objc_registerClassPair (new_class); - - /* Now, MySubClass2 is basically the same as MySubClass! We'll - use the variable and setVariable: methods on it. */ - { - MySubClass *o = (MySubClass *)[[(Class)objc_getClass ("MySubClass2") alloc] init]; - - [o setVariable: o]; - - if ([o variable] != o) - abort (); - } - - /* Now, try that if you take an existing class and try to add an - already existing method, class_addMethod returns NO. This is - subtly different from before, when 'new_class' was still in - construction. Now it's a real class and the libobjc internals - differ between the two cases. */ - if (class_addMethod (new_class, @selector (variable), method_getImplementation (method2), - method_getTypeEncoding (method2))) - abort (); - } - - std::cout << "Testing class_addProtocol ()...\n"; - { - if (!class_addProtocol (objc_getClass ("MySubClass"), @protocol (MySecondProtocol))) - abort (); - - if (!class_conformsToProtocol (objc_getClass ("MySubClass"), @protocol (MyProtocol))) - abort (); - - if (!class_conformsToProtocol (objc_getClass ("MySubClass"), @protocol (MySecondProtocol))) - abort (); - } - - std::cout << "Testing class_conformsToProtocol ()...\n"; - { - if (class_conformsToProtocol (objc_getClass ("MyRootClass"), @protocol (MyProtocol))) - abort (); - - if (!class_conformsToProtocol (objc_getClass ("MySubClass"), @protocol (MyProtocol))) - abort (); - - /* Test that class_conformsToProtocol checks the class, but not - superclasses. */ - if (class_conformsToProtocol (objc_getClass ("MyOtherSubClass"), @protocol (MyProtocol))) - abort (); - } - - std::cout << "Testing class_copyIvarList ()...\n"; - { - unsigned int count; - Ivar * list = class_copyIvarList (objc_getClass ("MySubClass"), &count); - - if (count != 1) - abort (); - - if (std::strcmp (ivar_getName (list[0]), "variable_ivar") != 0) - abort (); - - if (list[1] != NULL) - abort (); - } - - std::cout << "Testing class_copyMethodList ()...\n"; - { - unsigned int count; - Method * list = class_copyMethodList (objc_getClass ("MySubClass"), &count); - - if (count != 2) - abort (); - - if (! ((std::strcmp (sel_getName (method_getName (list[0])), "variable") == 0 - && std::strcmp (sel_getName (method_getName (list[1])), "setVariable:") == 0) - || (std::strcmp (sel_getName (method_getName (list[0])), "setVariable:") == 0 - && std::strcmp (sel_getName (method_getName (list[1])), "variable") == 0))) - abort (); - - if (list[2] != NULL) - abort (); - } - - /* TODO: Test new ABI (when available). */ - std::cout << "Testing class_copyPropertyList ()...\n"; - { - unsigned int count; - objc_property_t * list = class_copyPropertyList (objc_getClass ("MySubClass"), &count); - - if (count != 0 || list != NULL) - abort (); - } - - std::cout << "Testing class_copyProtocolList ()...\n"; - { - unsigned int count; - Protocol ** list = class_copyProtocolList (objc_getClass ("MySubClass"), &count); - - /* Remember that we added MySecondProtocol in the test above. */ - if (count != 2) - abort (); - - if (! ((std::strcmp (protocol_getName (list[0]), "MyProtocol") == 0 - && std::strcmp (protocol_getName (list[1]), "MySecondProtocol") == 0) - || (std::strcmp (protocol_getName (list[0]), "MySecondProtocol") == 0 - && std::strcmp (protocol_getName (list[1]), "MyProtocol") == 0))) - abort (); - - if (list[2] != NULL) - abort (); - } - - std::cout << "Testing class_createInstance ()...\n"; - { - MySubClass *object = [[MySubClass alloc] init]; - - [object setVariable: object]; - if ([object variable] != object) - abort (); - } - - std::cout << "Testing class_getClassMethod ()...\n"; - { - Method method = class_getClassMethod (objc_getClass ("MySubClass"), - @selector(alloc)); - - if (method == NULL) - abort (); - - if (std::strcmp (sel_getName (method_getName (method)), "alloc") != 0) - abort (); - - if (class_getClassMethod (objc_getClass ("MySubClass"), - @selector(variable))) - abort (); - } - - std::cout << "Testing class_getClassVariable ()...\n"; - { - if (class_getClassVariable (objc_getClass ("MySubClass"), "variable_ivar")) - abort (); - } - - std::cout << "Testing class_getInstanceMethod ()...\n"; - { - Method method = class_getInstanceMethod (objc_getClass ("MySubClass"), - @selector(variable)); - - if (method == NULL) - abort (); - - if (std::strcmp (sel_getName (method_getName (method)), "variable") != 0) - abort (); - - if (class_getInstanceMethod (objc_getClass ("MySubClass"), - @selector(alloc))) - abort (); - } - - std::cout << "Testing class_getInstanceSize ()...\n"; - { - if (class_getInstanceSize (objc_getClass ("MyRootClass")) != sizeof (struct objc_object)) - abort (); - } - - std::cout << "Testing class_getInstanceVariable ()...\n"; - { - Ivar variable = class_getInstanceVariable (objc_getClass ("MySubClass"), "variable_ivar"); - - if (variable == NULL) - abort (); - - if (std::strcmp (ivar_getName (variable), "variable_ivar") != 0) - abort (); - - if (class_getInstanceVariable (objc_getClass ("MySubClass"), "variable_ivar_no")) - abort (); - } - - std::cout << "Testing class_getIvarLayout ()...\n"; - { - if (class_getIvarLayout (objc_getClass ("MyRootClass")) != NULL) - abort (); - } - - std::cout << "Testing class_getMethodImplementation ()...\n"; - { - MySubClass *object = [[MySubClass alloc] init]; - IMP imp = class_getMethodImplementation (objc_getClass ("MySubClass"), - @selector(variable)); - - if (imp == NULL) - abort (); - - [object setVariable: object]; - - if ((*imp)(object, @selector(variable)) != object) - abort (); - } - - /* This function does not exist with the GNU runtime. */ - /* std::cout << "Testing class_getMethodImplementation_stret ()...\n"; */ - - std::cout << "Testing class_getName ()...\n"; - { - if (std::strcmp (class_getName (objc_getClass ("MyRootClass")), - "MyRootClass") != 0) - abort (); - } - - /* TODO: Test new ABI (when available). */ - std::cout << "Testing class_getProperty ()...\n"; - { - if (class_getProperty (objc_getClass ("MyRootClass"), "property") != NULL) - abort (); - } - - std::cout << "Testing class_getSuperclass ()...\n"; - { - MySubClass *object = [[MySubClass alloc] init]; - if (class_getSuperclass (object_getClass (object)) != objc_getClass ("MyRootClass")) - abort (); - - /* Test that it works on a newly created, but not registered, class. */ - { - Class new_class = objc_allocateClassPair (objc_getClass ("MyRootClass"), "MySubClass3", 0); - - if (class_getSuperclass (new_class) != objc_getClass ("MyRootClass")) - abort (); - } - } - - std::cout << "Testing class_getVersion ()...\n"; - { - if (class_getVersion (objc_getClass ("MySubClass")) != 0) - abort (); - } - - std::cout << "Testing class_getWeakIvarLayout ()...\n"; - { - if (class_getWeakIvarLayout (objc_getClass ("MyRootClass")) != NULL) - abort (); - } - - std::cout << "Testing class_isMetaClass ()...\n"; - { - MySubClass *object = [[MySubClass alloc] init]; - if (class_isMetaClass (object_getClass (object)) - || ! class_isMetaClass (object_getClass (object_getClass (object)))) - abort (); - } - - std::cout << "Testing class_replaceMethod ()...\n"; - { - Method new_method = class_getInstanceMethod (objc_getClass ("DifferentClass"), - @selector (myClass)); - Method old_method = class_getInstanceMethod (objc_getClass ("MySubClass"), - @selector (variable)); - const char *new_types = method_getTypeEncoding (new_method); - IMP new_imp = method_getImplementation (new_method); - const char *old_types = method_getTypeEncoding (old_method); - IMP old_imp = class_replaceMethod (objc_getClass ("MySubClass"), @selector (variable), - method_getImplementation (new_method), - method_getTypeEncoding (new_method)); - MySubClass *o = [[MySubClass alloc] init]; - - [o setVariable: o]; - - /* Try the new method implementation. */ - if ([o variable] != objc_getClass ("MySubClass")) - abort (); - - /* Put the original method back. */ - class_replaceMethod (objc_getClass ("MySubClass"), @selector (variable), - old_imp, old_types); - - /* Test it's back to what it was. */ - if ([o variable] != o) - abort (); - - { - DifferentClass *o = [[DifferentClass alloc] init]; - - /* Finally, try adding a new method. */ - class_replaceMethod (objc_getClass ("DifferentClass"), @selector (mySelf), - new_imp, new_types); - - if ([(MySubClass*)o mySelf] != objc_getClass ("DifferentClass")) - abort (); - } - } - - std::cout << "Testing class_respondsToSelector ()...\n"; - { - if (! class_respondsToSelector (objc_getClass ("MySubClass"), @selector(setVariable:))) - abort (); - - if (class_respondsToSelector (objc_getClass ("MyRootClass"), @selector(setVariable:))) - abort (); - } - - /* This is not really implemented with the GNU runtime. */ - /* std::cout << "Testing class_setIvarLayout ()...\n"; */ - - std::cout << "Testing class_setVersion ()...\n"; - { - class_setVersion (objc_getClass ("MySubClass"), 45); - - if (class_getVersion (objc_getClass ("MySubClass")) != 45) - abort (); - - class_setVersion (objc_getClass ("MySubClass"), 46); - - if (class_getVersion (objc_getClass ("MySubClass")) != 46) - abort (); - } - - /* This is not really implemented with the GNU runtime. */ - /* std::cout << "Testing class_setWeakIvarLayout ()...\n"; */ - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-ivar.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-ivar.mm deleted file mode 100644 index 1c85d238d..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-ivar.mm +++ /dev/null @@ -1,83 +0,0 @@ -/* Test the Modern GNU Objective-C Runtime API. - - This is test 'ivar', covering all functions starting with 'ivar'. */ - -/* { dg-do run } */ -/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* To get the modern GNU Objective-C Runtime API, you include - objc/runtime.h. */ -#include <objc/runtime.h> -#include <stdlib.h> -#include <iostream> -#include <cstring> - -@interface MyRootClass -{ Class isa; } -+ alloc; -- init; -+ initialize; -@end - -@implementation MyRootClass -+ alloc { return class_createInstance (self, 0); } -- init { return self; } -+ initialize { return self; } -@end - -@protocol MyProtocol -- (id) variable; -@end - -@protocol MySecondProtocol -- (id) setVariable: (id)value; -@end - -@interface MySubClass : MyRootClass <MyProtocol> -{ id variable_ivar; } -- (void) setVariable: (id)value; -- (id) variable; -@end - -@implementation MySubClass -- (void) setVariable: (id)value { variable_ivar = value; } -- (id) variable { return variable_ivar; } -@end - - -int main () -{ - /* Functions are tested in alphabetical order. */ - - std::cout << "Testing ivar_getName () ...\n"; - { - Ivar ivar = class_getInstanceVariable (objc_getClass ("MySubClass"), - "variable_ivar"); - if (strcmp (ivar_getName (ivar), "variable_ivar") != 0) - abort (); - - ivar = class_getInstanceVariable (objc_getClass ("MySubClass"), - "variable"); - if (ivar != 0) - abort (); - } - - std::cout << "Testing ivar_getOffset () ...\n"; - { - Ivar ivar = class_getInstanceVariable (objc_getClass ("MyRootClass"), - "isa"); - if (ivar_getOffset (ivar) != 0) - abort (); - } - - std::cout << "Testing ivar_getTypeEncoding () ...\n"; - { - Ivar ivar = class_getInstanceVariable (objc_getClass ("MySubClass"), - "variable_ivar"); - if (strcmp (ivar_getTypeEncoding (ivar), "@") != 0) - abort (); - } - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-method.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-method.mm deleted file mode 100644 index 4029ce73c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-method.mm +++ /dev/null @@ -1,230 +0,0 @@ -/* Test the Modern GNU Objective-C Runtime API. - - This is test 'method', covering all functions starting with 'method'. */ - -/* { dg-do run } */ -/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* To get the modern GNU Objective-C Runtime API, you include - objc/runtime.h. */ -#include <objc/runtime.h> -#include <stdlib.h> -#include <iostream> -#include <cstring> - -@interface MyRootClass -{ Class isa; } -+ alloc; -- init; -+ initialize; -@end - -@implementation MyRootClass -+ alloc { return class_createInstance (self, 0); } -- init { return self; } -+ initialize { return self; } -@end - -@protocol MyProtocol -- (id) variable; -@end - -@protocol MySecondProtocol -- (id) setVariable: (id)value; -@end - -@interface MySubClass : MyRootClass <MyProtocol> -{ id variable_ivar; } -- (void) setVariable: (id)value; -- (id) variable; -- (id) constant; -@end - -@implementation MySubClass -- (void) setVariable: (id)value { variable_ivar = value; } -- (id) variable { return variable_ivar; } -- (id) constant { return nil; } -@end - - -int main () -{ - /* Functions are tested in alphabetical order. */ - - std::cout <<"Testing method_copyArgumentType () ...\n"; - { - Method method = class_getInstanceMethod (objc_getClass ("MySubClass"), - @selector (setVariable:)); - char *type = method_copyArgumentType (method, 2); - - if (type == NULL || type[0] != '@') - abort (); - } - - std::cout << "Testing method_copyReturnType () ...\n"; - { - Method method = class_getClassMethod (objc_getClass ("MyRootClass"), - @selector (alloc)); - char *type = method_copyReturnType (method); - - /* Check that it returns an object. */ - if (type == NULL || type[0] != '@') - abort (); - } - - std::cout << "Testing method_exchangeImplementations () ...\n"; - { - Method method_a = class_getInstanceMethod (objc_getClass ("MySubClass"), - @selector (variable)); - Method method_b = class_getInstanceMethod (objc_getClass ("MySubClass"), - @selector (constant)); - MySubClass *object = [[MySubClass alloc] init]; - - /* Check that things work as expected before the swap. */ - [object setVariable: object]; - - if ([object variable] != object || [object constant] != nil) - abort (); - - /* Swap the methods. */ - method_exchangeImplementations (method_a, method_b); - - /* Check that behaviour has changed. */ - if ([object variable] != nil || [object constant] != object) - abort (); - - /* Swap the methods again. */ - method_exchangeImplementations (method_a, method_b); - - /* Check that behaviour is back to normal. */ - if ([object variable] != object || [object constant] != nil) - abort (); - } - - std::cout << "Testing method_getArgumentType () ...\n"; - { - Method method = class_getInstanceMethod (objc_getClass ("MyRootClass"), - @selector (init)); - char type[16]; - - method_getArgumentType (method, 1, type, 16); - - /* Check the second argument (_cmd), which should be a SEL. */ - if (type[0] != ':') - abort (); - } - - std::cout << "Testing method_getDescription () ...\n"; - { - Method method = class_getInstanceMethod (objc_getClass ("MySubClass"), - @selector (variable)); - struct objc_method_description *description = method_getDescription (method); - - if (std::strcmp (sel_getName (description->name), "variable") != 0) - abort (); - - if (method_getDescription (NULL) != NULL) - abort (); - } - - std::cout << "Testing method_getImplementation () ...\n"; - { - typedef void (*set_variable_function) (id receiver, SEL _cmd, id variable); - Method method = class_getInstanceMethod (objc_getClass ("MySubClass"), - @selector (setVariable:)); - set_variable_function imp; - MySubClass *object = [[MySubClass alloc] init]; - - imp = (set_variable_function)(method_getImplementation (method)); - - (*imp)(object, @selector (setVariable:), object); - - if ([object variable] != object) - abort (); - } - - std::cout << "Testing method_getName () ...\n"; - { - Method method = class_getInstanceMethod (objc_getClass ("MySubClass"), - @selector (setVariable:)); - if (std::strcmp (sel_getName (method_getName (method)), "setVariable:") != 0) - abort (); - } - - std::cout << "Testing method_getNumberOfArguments () ...\n"; - { - Method method = class_getInstanceMethod (objc_getClass ("MySubClass"), - @selector (setVariable:)); - if (method_getNumberOfArguments (method) != 3) - abort (); - - method = class_getInstanceMethod (objc_getClass ("MySubClass"), - @selector (variable)); - if (method_getNumberOfArguments (method) != 2) - abort (); - } - - std::cout << "Testing method_getTypeEncoding () ...\n"; - { - Method method = class_getInstanceMethod (objc_getClass ("MySubClass"), - @selector (setVariable:)); - const char *types = method_getTypeEncoding (method); - - /* Check that method type string starts with 'v' (void) */ - if (types == NULL || types[0] != 'v') - abort (); - } - - std::cout << "Testing method_getReturnType () ...\n"; - { - Method method = class_getInstanceMethod (objc_getClass ("MySubClass"), - @selector (setVariable:)); - char type[16]; - - method_getReturnType (method, type, 16); - - if (type[0] != 'v') - abort (); - - method_getReturnType (NULL, type, 16); - - if (type[0] != 0) - abort (); - } - - std::cout << "Testing method_setImplementation () ...\n"; - { - Method method_a = class_getInstanceMethod (objc_getClass ("MySubClass"), - @selector (variable)); - Method method_b = class_getInstanceMethod (objc_getClass ("MySubClass"), - @selector (constant)); - IMP original_imp_a = method_getImplementation (method_a); - IMP original_imp_b = method_getImplementation (method_b); - MySubClass *object = [[MySubClass alloc] init]; - - /* Check that things work as expected before the swap. */ - [object setVariable: object]; - - if ([object variable] != object || [object constant] != nil) - abort (); - - /* Have 'variable' use the same implementation as 'constant'. */ - if (method_setImplementation (method_a, original_imp_b) != original_imp_a) - abort (); - - /* Check that behaviour has changed. */ - if ([object variable] != nil || [object constant] != nil) - abort (); - - /* Put the original method back. */ - if (method_setImplementation (method_a, original_imp_a) != original_imp_b) - abort (); - - /* Check that behaviour is back to normal. */ - if ([object variable] != object || [object constant] != nil) - abort (); - } - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-objc.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-objc.mm deleted file mode 100644 index e5b1a69ed..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-objc.mm +++ /dev/null @@ -1,266 +0,0 @@ -/* Test the Modern GNU Objective-C Runtime API. - - This is test 'objc', covering all functions starting with 'objc'. */ - -/* { dg-do run } */ -/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* To get the modern GNU Objective-C Runtime API, you include - objc/runtime.h. */ -#include <objc/runtime.h> -#include <stdlib.h> -#include <iostream> -#include <cstring> - -@interface MyRootClass -{ Class isa; } -+ alloc; -- init; -+ initialize; -@end - -@implementation MyRootClass -+ alloc { return class_createInstance (self, 0); } -- init { return self; } -+ initialize { return self; } -@end - -@protocol MyProtocol -- (id) variable; -@end - -@protocol MySecondProtocol -- (id) setVariable: (id)value; -@end - -@interface MySubClass : MyRootClass <MyProtocol> -{ id variable_ivar; } -- (void) setVariable: (id)value; -- (id) variable; -@end - -@implementation MySubClass -- (void) setVariable: (id)value { variable_ivar = value; } -- (id) variable { return variable_ivar; } -@end - -/* Hack to calculate the log2 of a byte alignment. */ -unsigned char -log_2_of (unsigned int x) -{ - unsigned char result = 0; - - /* We count how many times we need to divide by 2 before we reach 1. - This algorithm is good enough for the small numbers (such as 8, - 16 or 64) that we have to deal with. */ - while (x > 1) - { - x = x / 2; - result++; - } - - return result; -} - -int main () -{ - /* Functions are tested in alphabetical order. */ - - std::cout << "Testing objc_allocateClassPair ()...\n"; - { - Class new_root_class = objc_allocateClassPair (Nil, "MyNewRootClass", 0); - Class new_class = objc_allocateClassPair (objc_getClass ("MyRootClass"), "MyNewSubClass", 0); - - /* A new root class would obviously need at least an 'isa' - instance variable. */ - class_addIvar (new_root_class, "isa", sizeof (Class), log_2_of (__alignof__ (Class)), - @encode (Class)); - - objc_registerClassPair (new_root_class); - objc_registerClassPair (new_class); - - if (std::strcmp (class_getName (new_class), "MyNewSubClass") != 0) - abort (); - - if (class_getSuperclass (new_class) != objc_getClass ("MyRootClass")) - abort (); - - if (std::strcmp (class_getName (new_root_class), "MyNewRootClass") != 0) - abort (); - - if (class_getSuperclass (new_root_class) != Nil) - abort (); - - { - MySubClass *o = [[(Class)objc_getClass ("MyNewSubClass") alloc] init]; - - if (object_getClass (o) != objc_getClass ("MyNewSubClass")) - abort (); - } - } - - std::cout << "Testing objc_copyProtocolList ()...\n"; - { - /* Make sure both our two protocols are known to the runtime. */ - id my_protocol = @protocol (MyProtocol); - id my_second_protocol = @protocol (MySecondProtocol); - unsigned int count; - Protocol ** list = objc_copyProtocolList (&count); - - if (count != 2) - abort (); - - if (! ((std::strcmp (protocol_getName (list[0]), "MyProtocol") == 0 - && std::strcmp (protocol_getName (list[1]), "MySecondProtocol") == 0) - || (std::strcmp (protocol_getName (list[0]), "MySecondProtocol") == 0 - && std::strcmp (protocol_getName (list[1]), "MyProtocol") == 0))) - abort (); - - if (list[2] != NULL) - abort (); - } - - std::cout << "Testing objc_disposeClassPair ()...\n"; - { - Method method = class_getInstanceMethod (objc_getClass ("MySubClass"), @selector (setVariable:)); - Class new_class = objc_allocateClassPair (objc_getClass ("MyRootClass"), "MyNewSubClass2", 0); - - if (new_class == Nil) - abort (); - - /* Add a bit of everything to the class to exercise undoing all these changes. */ - - /* Instance variable. */ - class_addIvar (new_class, "my_variable", sizeof (float), log_2_of (__alignof__ (float)), @encode (float)); - - /* Instance method. */ - class_addMethod (new_class, @selector (setVariable:), method_getImplementation (method), - method_getTypeEncoding (method)); - - /* Class method. */ - class_addMethod (object_getClass (new_class), @selector (setVariable:), method_getImplementation (method), - method_getTypeEncoding (method)); - - /* Protocol. */ - class_addProtocol (new_class, @protocol (MyProtocol)); - - objc_disposeClassPair (new_class); - } - - /* This function currently does not exist with the GNU runtime. */ - /* std::cout << "Testing objc_duplicateClass ()...\n"; */ - - /* TODO - Test it when implemented in the GNU Runtime */ - /* std::cout << "Testing objc_getAssociatedObject ()...\n"; */ - - std::cout << "Testing objc_getClass ()...\n"; - { - if (std::strcmp (class_getName (objc_getClass ("MySubClass")), - "MySubClass") != 0) - abort (); - } - - std::cout << "Testing objc_getClassList ()...\n"; - { - Class *list; - int i, count, other_count; - count = objc_getClassList (NULL, 0); - - /* count most likely will be 5, (MyRootClass, MySubClass, - Protocol, Object, NXConstantString). */ - if (count < 3) - abort (); - - list = (Class *)(malloc (sizeof (Class) * count)); - other_count = objc_getClassList (list, count); - - if (other_count != count) - abort (); - - /* Spot-check: search for class 'MyRootClass' in the list. */ - for (i = 0; i < count; i++) - { - if (std::strcmp (class_getName (list[i]), "MyRootClass") == 0) - break; - } - if (i == count) - abort (); - - /* Spot-check: search for class 'MySubClass' in the list. */ - for (i = 0; i < count; i++) - { - if (std::strcmp (class_getName (list[i]), "MySubClass") == 0) - break; - } - if (i == count) - abort (); - - /* Spot-check: search for class 'Protocol' in the list. */ - for (i = 0; i < count; i++) - { - if (std::strcmp (class_getName (list[i]), "Protocol") == 0) - break; - } - if (i == count) - abort (); - } - - /* This function does not exist with the GNU runtime. */ - /* std::cout << "Testing objc_getFutureClass ()...\n"; */ - - std::cout << "Testing objc_getMetaClass ()...\n"; - { - if (! class_isMetaClass (objc_getMetaClass ("MyRootClass"))) - abort (); - } - - std::cout << "Testing objc_getProtocol ()...\n"; - { - if (! protocol_isEqual (objc_getProtocol ("MyProtocol"), @protocol (MyProtocol))) - abort (); - } - - std::cout << "Testing objc_getRequiredClass ()...\n"; - { - if (std::strcmp (class_getName (objc_getRequiredClass ("MyRootClass")), - "MyRootClass") != 0) - abort (); - } - - std::cout << "Testing objc_lookUpClass ()...\n"; - { - if (std::strcmp (class_getName (objc_lookUpClass ("MyRootClass")), - "MyRootClass") != 0) - abort (); - } - - /* This function does not exist with the GNU runtime. */ - /* std::cout << "Testing objc_setFutureClass ()...\n"; */ - - std::cout << "Testing objc_registerClassPair ()...\n"; - { - Class new_class = objc_allocateClassPair (objc_getClass ("MySubClass"), "MySubSubClass", 0); - - class_addProtocol (new_class, @protocol (MySecondProtocol)); - - objc_registerClassPair (new_class); - - if (std::strcmp (class_getName (new_class), "MySubSubClass") != 0) - abort (); - - if (class_getSuperclass (new_class) != objc_getClass ("MySubClass")) - abort (); - - if (! class_conformsToProtocol (new_class, @protocol (MySecondProtocol))) - abort (); - } - - /* TODO - Test it when implemented in the GNU Runtime */ - /* std::cout << "Testing objc_removeAssociatedObjects ()...\n"; */ - - /* TODO - Test it when implemented in the GNU Runtime */ - /* std::cout << "Testing objc_setAssociatedObject ()...\n"; */ - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-objc_msg_lookup.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-objc_msg_lookup.mm deleted file mode 100644 index dcbf6d21f..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-objc_msg_lookup.mm +++ /dev/null @@ -1,77 +0,0 @@ -/* Test the Modern GNU Objective-C Runtime API. - - This is test 'objc_msg_lookup', covering objc_msg_lookup(), - objc_msg_lookup_super() and struct objc_super. */ - -/* { dg-do run } */ -/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */ - -/* To get the modern GNU Objective-C Runtime API, you include - objc/runtime.h. */ -#include <objc/runtime.h> - -/* For objc_msg_lookup(), objc_msg_lookup_super() and struct - objc_super. */ -#include <objc/message.h> - -#include <stdlib.h> -#include <iostream> -#include <cstring> - -@interface MyRootClass -{ Class isa; } -+ alloc; -- init; -- (int) test; -@end - -@implementation MyRootClass -+ alloc { return class_createInstance (self, 0); } -- init { return self; } -- (int) test { return 20; } -@end - -@interface MySubClass : MyRootClass -- (int) test; -@end - -@implementation MySubClass -- (int) test { return 11; } -@end - -int main () -{ - /* Functions are tested in alphabetical order. */ - - std::cout << "Testing objc_msg_lookup () ...\n"; - { - MySubClass *object = [[MySubClass alloc] init]; - int (* test_IMP) (id receiver, SEL selector); - - test_IMP = (int (*)(id, SEL))objc_msg_lookup (object, @selector (test)); - - if (test_IMP (object, @selector (test)) != 11) - abort (); - } - - std::cout << "Testing objc_msg_lookup_super () ...\n"; - { - MySubClass *object = [[MySubClass alloc] init]; - struct objc_super super = { 0, 0 }; - int (* test_IMP) (id receiver, SEL selector); - - /* Get the implementation of -test for the superclass of object - - as if we were calling [super test] inside a method - implementation of object. */ - super.self = object; - super.super_class = class_getSuperclass (object_getClass (object)); - test_IMP = (int (*)(id, SEL))objc_msg_lookup_super (&super, @selector (test)); - - /* Invoke it. The method in MyRootClass, not the one in - MySubClass, should be invoked. */ - if (test_IMP (object, @selector (test)) != 20) - abort (); - } - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-object.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-object.mm deleted file mode 100644 index a2702d647..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-object.mm +++ /dev/null @@ -1,164 +0,0 @@ -/* Test the Modern GNU Objective-C Runtime API. - - This is test 'object', covering all functions starting with 'object'. */ - -/* { dg-do run } */ -/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* To get the modern GNU Objective-C Runtime API, you include - objc/runtime.h. */ -#include <objc/runtime.h> -#include <stdlib.h> -#include <iostream> -#include <cstring> - -@interface MyRootClass -{ Class isa; } -+ alloc; -- init; -+ initialize; -@end - -@implementation MyRootClass -+ alloc { return class_createInstance (self, 0); } -- init { return self; } -+ initialize { return self; } -@end - -@protocol MyProtocol -- (id) variable; -@end - -@protocol MySecondProtocol -- (id) setVariable: (id)value; -@end - -@interface MySubClass : MyRootClass <MyProtocol> -{ id variable_ivar; } -- (void) setVariable: (id)value; -- (id) variable; -@end - -@implementation MySubClass -- (void) setVariable: (id)value { variable_ivar = value; } -- (id) variable { return variable_ivar; } -@end - -@interface MySubSubClass : MySubClass -- (id) test; -@end - -@implementation MySubSubClass -- (id) test { return self; } -@end - - - -int main () -{ - /* Functions are tested in alphabetical order. */ - - std::cout << "Testing object_copy () ...\n"; - { - MySubClass *object_a = [[MySubClass alloc] init]; - MySubClass *object_b = object_copy (object_a, 0); - - [object_b setVariable: object_a]; - if ([object_b variable] != object_a) - abort (); - } - - std::cout << "Testing object_dispose () ...\n"; - { - MySubClass *object = [[MySubClass alloc] init]; - - object_dispose (object); - } - - std::cout << "Testing object_getClass () ...\n"; - { - MyRootClass *o = [[MySubClass alloc] init]; - - if (object_getClass (o) != objc_getClass ("MySubClass")) - abort (); - } - - std::cout << "Testing object_getClassName () ...\n"; - { - MyRootClass *o = [[MyRootClass alloc] init]; - - if (std::strcmp (object_getClassName (o), "MyRootClass") != 0) - abort (); - } - - std::cout << "Testing object_getIndexedIvars () ...\n"; - { - if (object_getIndexedIvars ([[MyRootClass alloc] init]) == NULL) - abort (); - } - - std::cout << "Testing object_getInstanceVariable () ...\n"; - { - MySubClass *o = [[MySubClass alloc] init]; - id value; - - [o setVariable: o]; - - if (object_getInstanceVariable (o, "variable_ivar", (void **)&value) == NULL) - abort (); - - if (value != o) - abort (); - } - - std::cout << "Testing object_getIvar () ...\n"; - { - MySubClass *o = [[MySubClass alloc] init]; - Ivar ivar = class_getInstanceVariable (objc_getClass ("MySubClass"), "variable_ivar"); - - [o setVariable: o]; - - if (object_getIvar (o, ivar) != o) - abort (); - } - - std::cout << "Testing object_setClass () ...\n"; - { - MySubClass *o = [[MySubClass alloc] init]; - - object_setClass (o, objc_getClass ("MySubSubClass")); - - if ([(MySubSubClass *)o test] != o) - abort (); - } - - std::cout << "Testing object_setInstanceVariable () ...\n"; - { - MySubClass *o = [[MySubClass alloc] init]; - - [o setVariable: nil]; - - if (object_setInstanceVariable (o, "variable_ivar", (void *)o) == NULL) - abort (); - - if ([o variable] != o) - abort (); - } - - std::cout << "Testing object_setIvar () ...\n"; - { - MySubClass *o = [[MySubClass alloc] init]; - MySubClass *value = [[MySubClass alloc] init]; - Ivar ivar = class_getInstanceVariable (objc_getClass ("MySubClass"), "variable_ivar"); - - [o setVariable: o]; - - object_setIvar (o, ivar, value); - - if ([o variable] != value) - abort (); - } - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-property.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-property.mm deleted file mode 100644 index 953e9bb15..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-property.mm +++ /dev/null @@ -1,101 +0,0 @@ -/* Test the Modern GNU Objective-C Runtime API. - - This is test 'property', covering all functions starting with 'property'. */ - -/* { dg-do run } */ -/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ - -/* To get the modern GNU Objective-C Runtime API, you include - objc/runtime.h. */ -#include <objc/runtime.h> -#include <stdlib.h> -#include <iostream> -#include <cstring> - -@interface MyRootClass -{ Class isa; } -+ alloc; -- init; -+ initialize; -@end - -@implementation MyRootClass -+ alloc { return class_createInstance (self, 0); } -- init { return self; } -+ initialize { return self; } -@end - -@interface MySubClass : MyRootClass -{ - id propertyA; - id propertyB; -} -@property (assign, getter=getP, setter=setP:) id propertyA; -@property (assign, nonatomic) id propertyB; -@end - -@implementation MySubClass -@synthesize propertyA; -@synthesize propertyB; -@end - - -int main () -{ - /* Functions are tested in alphabetical order. */ - - std::cout << "Testing property_getAttributes () ...\n"; - { - /* The Apple/NeXT runtime seems to crash on the following. */ -#ifdef __GNU_LIBOBJC__ - if (property_getAttributes (NULL) != NULL) - abort (); -#endif - - /* The GNU runtime doesn't support looking up properties at - runtime yet. */ -#ifdef __OBJC2__ - { - objc_property_t property; - - property = class_getProperty (objc_getClass ("MySubClass"), "propertyA"); - if (std::strcmp (property_getAttributes (property), - "T@,GgetP,SsetP:,VpropertyA") != 0) - abort (); - - property = class_getProperty (objc_getClass ("MySubClass"), "propertyB"); - if (std::strcmp (property_getAttributes (property), - "T@,N,VpropertyB") != 0) - abort (); - } -#endif - } - - std::cout << "Testing property_getName () ...\n"; - { - /* The Apple/NeXT runtime seems to crash on the following. */ -#ifdef __GNU_LIBOBJC__ - - if (property_getName (NULL) != NULL) - abort (); -#endif - - /* The GNU runtime doesn't support looking up properties at - runtime yet. */ -#ifdef __OBJC2__ - { - objc_property_t property; - - property = class_getProperty (objc_getClass ("MySubClass"), "propertyA"); - if (std::strcmp (property_getName (property), "propertyA") != 0) - abort (); - - property = class_getProperty (objc_getClass ("MySubClass"), "propertyB"); - if (std::strcmp (property_getName (property), "propertyB") != 0) - abort (); - } -#endif - } - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-protocol.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-protocol.mm deleted file mode 100644 index 9a2ceca13..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-protocol.mm +++ /dev/null @@ -1,163 +0,0 @@ -/* Test the Modern GNU Objective-C Runtime API. - - This is test 'protocol', covering all functions starting with 'protocol'. */ - -/* { dg-do run } */ -/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* To get the modern GNU Objective-C Runtime API, you include - objc/runtime.h. */ -#include <objc/runtime.h> -#include <stdlib.h> -#include <iostream> -#include <cstring> - -@interface MyRootClass -{ Class isa; } -+ alloc; -- init; -+ initialize; -@end - -@implementation MyRootClass -+ alloc { return class_createInstance (self, 0); } -- init { return self; } -+ initialize { return self; } -@end - -@protocol MyProtocol -- (id) variable; -@end - -@protocol MySecondProtocol -- (id) setVariable: (id)value; -@end - -@protocol MyThirdProtocol <MySecondProtocol> -- (id) setAnotherVariable: (id)value; -@end - -@interface MySubClass : MyRootClass <MyProtocol> -{ id variable_ivar; } -- (void) setVariable: (id)value; -- (id) variable; -@end - -@implementation MySubClass -- (void) setVariable: (id)value { variable_ivar = value; } -- (id) variable { return variable_ivar; } -@end - - -int main () -{ - /* Functions are tested in alphabetical order. */ - - std::cout << "Testing protocol_conformsToProtocol ()...\n"; - { - if (!protocol_conformsToProtocol (@protocol (MyProtocol), - @protocol (MyProtocol))) - abort (); - - if (!protocol_conformsToProtocol (@protocol (MyThirdProtocol), - @protocol (MySecondProtocol))) - abort (); - - if (protocol_conformsToProtocol (@protocol (MyProtocol), - @protocol (MySecondProtocol))) - abort (); - } - - std::cout << "Testing protocol_copyMethodDescriptionList ()...\n"; - { - unsigned int count; - struct objc_method_description *list; - - list = protocol_copyMethodDescriptionList (@protocol (MyThirdProtocol), - YES, YES, &count); - - if (count != 1) - abort (); - - if (std::strcmp (sel_getName (list[0].name), "setAnotherVariable:") != 0) - abort (); - - if (list[1].name != NULL && list[1].types != NULL) - abort (); - } - - /* TODO: Test new ABI (when available). */ - std::cout << "Testing protocol_copyPropertyList ()...\n"; - { - unsigned int count; - objc_property_t *list; - - list = protocol_copyPropertyList (@protocol (MyProtocol), &count); - - if (count != 0 || list != NULL) - abort (); - } - - std::cout << "Testing protocol_copyProtocolList ()...\n"; - { - unsigned int count; - Protocol **list; - - list = protocol_copyProtocolList (@protocol (MyThirdProtocol), &count); - - if (count != 1) - abort (); - - if (std::strcmp (protocol_getName (list[0]), "MySecondProtocol") != 0) - abort (); - - if (list[1] != NULL) - abort (); - } - - std::cout << "Testing protocol_getMethodDescription ()...\n"; - { - struct objc_method_description description; - - description = protocol_getMethodDescription (@protocol (MySecondProtocol), - @selector (setVariable:), - YES, YES); - if (description.name == NULL && description.types == NULL) - abort (); - - if (std::strcmp (sel_getName (description.name), "setVariable:") != 0) - abort (); - } - - std::cout << "Testing protocol_getName ()...\n"; - { - if (std::strcmp (protocol_getName (@protocol (MyProtocol)), "MyProtocol") != 0) - abort (); - } - - /* TODO: Test new ABI (when available). */ - std::cout << "Testing protocol_getProperty ()...\n"; - { - objc_property_t property; - - property = protocol_getProperty (objc_getProtocol ("MyProtocol"), "someProperty", - YES, YES); - - if (property != NULL) - abort (); - } - - std::cout << "Testing protocol_isEqual ()...\n"; - { - if (!protocol_isEqual (@protocol (MyProtocol), - @protocol (MyProtocol))) - abort (); - - if (!protocol_isEqual (@protocol (MyProtocol), - objc_getProtocol ("MyProtocol"))) - abort (); - } - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-resolve-method.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-resolve-method.mm deleted file mode 100644 index f8a54d392..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-resolve-method.mm +++ /dev/null @@ -1,567 +0,0 @@ -/* Test the Modern GNU Objective-C Runtime API. - - This is test 'resolve-method', covering +resolveClassMethod: and - +resolveInstanceMethod:. */ - -/* { dg-do run } */ -/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */ - -/* To get the modern GNU Objective-C Runtime API, you include - objc/runtime.h. */ -#include <objc/runtime.h> - -/* For __objc_msg_forward2. */ -#include <objc/message.h> - -#include <stdlib.h> -#include <iostream> -#include <cstring> - -@interface MyRootClass -{ Class isa; } -+ alloc; -- init; -@end - -@implementation MyRootClass -+ alloc { return class_createInstance (self, 0); } -- init { return self; } -@end - - -/* A number of tests will try invoking methods that don't exist. We - want to record the fact, but not abort the program, so we supply - our own fowarding implementation which will invoke the following - function for any method that is not found. */ - -/* Keep track of how many times a non-existing method was executed. */ -static int nonExistingMethodCount = 0; - -/* Inspired by nil_method in libobjc. */ -id nonExisting_method (id receiver __attribute__ ((__unused__)), - SEL sel __attribute__ ((__unused__))) -{ - nonExistingMethodCount++; - return nil; -} - -/* Keep track of how many times the forwarding lookup was invoked. */ -static int forwardingCount = 0; - -/* We install this forwarding hook to cause all failed method lookups - to call our 'nonExisting_method' function. */ -IMP forward_everything_to_non_existing_method (id receiver __attribute__ ((__unused__)), - SEL sel __attribute__ ((__unused__))) -{ - forwardingCount++; - return (IMP)nonExisting_method; -} - - -/* 'CountClass' is used to test that +resolveClassMethod: and - +resolveInstanceMethod: are called when expected. They do nothing - other than recording that they are called. */ -@interface CountClass : MyRootClass -+ (BOOL) resolveClassMethod: (SEL)selector; -+ (BOOL) resolveInstanceMethod: (SEL)selector; -+ (void) existingClassMethod; -- (void) existingInstanceMethod; -@end - -/* Count how many times the methods are called for class - 'CountClass'. */ -static int resolveClassMethodCount = 0; -static int resolveInstanceMethodCount = 0; - -@implementation CountClass : MyRootClass -+ (BOOL) resolveClassMethod: (SEL)selector -{ - resolveClassMethodCount++; - return NO; -} -+ (BOOL) resolveInstanceMethod: (SEL)selector -{ - resolveInstanceMethodCount++; - return NO; -} -+ (void) existingClassMethod -{ - return; -} -- (void) existingInstanceMethod -{ - return; -} -@end - -@protocol NonExistingStuff -+ (void) nonExistingClassMethod; -- (void) nonExistingInstanceMethod; -@end - -/* Declare a category with some non existing methods, but don't - actually implement them. */ -@interface CountClass (NonExistingStuff) <NonExistingStuff> -@end - - -/* 'SelfExtendingClass' is used to test that +resolveClassMethod: and - +resolveInstanceMethod: can extend the class. Any time they are - called, they install the requested method, mapping it to the same - implementation as 'countHits'. */ -@interface SelfExtendingClass : MyRootClass -+ (int) countHits; -+ (BOOL) resolveClassMethod: (SEL)selector; -+ (BOOL) resolveInstanceMethod: (SEL)selector; -@end - -/* How many times the countHits method (or a clone) was called. */ -static int hitCount = 0; - -@implementation SelfExtendingClass : MyRootClass -+ (int) countHits -{ - hitCount++; - return hitCount; -} -+ (BOOL) resolveClassMethod: (SEL)selector -{ - /* Duplicate the 'countHits' method into the new method. */ - Method method = class_getClassMethod (self, @selector (countHits)); - class_addMethod (object_getClass (self), selector, - method_getImplementation (method), - method_getTypeEncoding (method)); - resolveClassMethodCount++; - return YES; -} -+ (BOOL) resolveInstanceMethod: (SEL)selector -{ - /* Duplicate the 'countHits' method into the new method. */ - Method method = class_getClassMethod (self, @selector (countHits)); - class_addMethod (self, selector, - method_getImplementation (method), - method_getTypeEncoding (method)); - resolveInstanceMethodCount++; - return YES; - -} -@end - -@protocol NonExistingStuff2 -+ (int) nonExistingCountHitsMethod; -- (int) nonExistingCountHitsMethod; - -+ (int) nonExistingCountHitsMethod2; -- (int) nonExistingCountHitsMethod2; - -+ (int) nonExistingCountHitsMethod3; -- (int) nonExistingCountHitsMethod3; -@end - -/* Declare a category with some non existing methods, but don't - actually implement them. */ -@interface SelfExtendingClass (NonExistingStuff) <NonExistingStuff2> -@end - - -int main () -{ - /* Functions are tested in alphabetical order. */ - - /* Install our test forwarding hook. */ - __objc_msg_forward2 = forward_everything_to_non_existing_method; - - std::cout << "Testing [+resolveClassMethod:] ...\n"; - { - Method m; - IMP i; - - /** CountClass tests. **/ - - /* Call an existing method. No +resolveClassMethod and no - forwarding should be triggered. */ - [CountClass existingClassMethod]; - - if (resolveClassMethodCount != 0) - abort (); - - if (forwardingCount != 0) - abort (); - - if (nonExistingMethodCount != 0) - abort (); - - /* Call a non-existing method. Both +resolveClassMethod and the - forwarding should be triggered. */ - [CountClass nonExistingClassMethod]; - - if (resolveClassMethodCount != 1) - abort (); - - if (forwardingCount != 1) - abort (); - - if (nonExistingMethodCount != 1) - abort (); - - /* Now try the same tests with class_getClassMethod(), which - should trigger the resolve methods too, but not the - forwarding. */ - m = class_getClassMethod (objc_getClass ("CountClass"), - @selector (existingClassMethod)); - if (resolveClassMethodCount != 1) - abort (); - - if (forwardingCount != 1) - abort (); - - if (nonExistingMethodCount != 1) - abort (); - - m = class_getClassMethod (objc_getClass ("CountClass"), - @selector (nonExistingClassMethod)); - if (resolveClassMethodCount != 2) - abort (); - - if (forwardingCount != 1) - abort (); - - if (nonExistingMethodCount != 1) - abort (); - - /* Now try the same tests with class_getMethodImplementation(), - which should trigger the resolve methods and the forwarding - (but not execute the forwarding, obviously). */ - i = class_getMethodImplementation (object_getClass (objc_getClass ("CountClass")), - @selector (existingClassMethod)); - if (resolveClassMethodCount != 2) - abort (); - - if (forwardingCount != 1) - abort (); - - if (nonExistingMethodCount != 1) - abort (); - - i = class_getMethodImplementation (object_getClass (objc_getClass ("CountClass")), - @selector (nonExistingClassMethod)); - if (resolveClassMethodCount != 3) - abort (); - - if (forwardingCount != 2) - abort (); - - if (nonExistingMethodCount != 1) - abort (); - - - /* Reset the counters for the next test. */ - resolveClassMethodCount = 0; - forwardingCount = 0; - nonExistingMethodCount = 0; - - - /** SelfExtendingClass tests. **/ - - /* Try the direct countHits method first. No resolving or - forwarding should be triggered. */ - if ([SelfExtendingClass countHits] != 1) - abort (); - - if (resolveClassMethodCount != 0) - abort (); - - if (forwardingCount != 0) - abort (); - - if (nonExistingMethodCount != 0) - abort (); - - /* Now, try calling a non-existing count method; it should be - installed and invoked. */ - if ([SelfExtendingClass nonExistingCountHitsMethod] != 2) - abort (); - - if (resolveClassMethodCount != 1) - abort (); - - if (forwardingCount != 0) - abort (); - - if (nonExistingMethodCount != 0) - abort (); - - /* Try it again. The method has now been installed, so it should - be used and work, but with no additional resolving - involved. */ - if ([SelfExtendingClass nonExistingCountHitsMethod] != 3) - abort (); - - if (resolveClassMethodCount != 1) - abort (); - - if (forwardingCount != 0) - abort (); - - if (nonExistingMethodCount != 0) - abort (); - - - /* Now try the same tests with class_getClassMethod(). */ - m = class_getClassMethod (objc_getClass ("SelfExtendingClass"), - @selector (nonExistingCountHitsMethod2)); - if (resolveClassMethodCount != 2) - abort (); - - if (forwardingCount != 0) - abort (); - - if (nonExistingMethodCount != 0) - abort (); - - /* Try it again. The method has now been installed, so it should - be used and work, but with no additional resolving - involved. */ - if ([SelfExtendingClass nonExistingCountHitsMethod2] != 4) - abort (); - - if (resolveClassMethodCount != 2) - abort (); - - if (forwardingCount != 0) - abort (); - - if (nonExistingMethodCount != 0) - abort (); - - - /* Now try the same tests with class_getMethodImplementation(). */ - i = class_getMethodImplementation (object_getClass (objc_getClass ("SelfExtendingClass")), - @selector (nonExistingCountHitsMethod3)); - if (resolveClassMethodCount != 3) - abort (); - - if (forwardingCount != 0) - abort (); - - if (nonExistingMethodCount != 0) - abort (); - - /* Try it again. The method has now been installed, so it should - be used and work, but with no additional resolving - involved. */ - if ([SelfExtendingClass nonExistingCountHitsMethod3] != 5) - abort (); - - if (resolveClassMethodCount != 3) - abort (); - - if (forwardingCount != 0) - abort (); - - if (nonExistingMethodCount != 0) - abort (); - } - - /* Reset the counters for the next test. */ - nonExistingMethodCount = 0; - forwardingCount = 0; - hitCount = 0; - - std::cout << "Testing [+resolveInstanceMethod:] ...\n"; - { - Method m; - IMP i; - CountClass *object = [[CountClass alloc] init]; - SelfExtendingClass *object2 = [[SelfExtendingClass alloc] init]; - - /** CountClass tests. **/ - - /* Call an existing method. No +resolveInstanceMethod and no - forwarding should be triggered. */ - [object existingInstanceMethod]; - - if (resolveInstanceMethodCount != 0) - abort (); - - if (forwardingCount != 0) - abort (); - - if (nonExistingMethodCount != 0) - abort (); - - /* Call a non-existing method. Both +resolveInstanceMethod and the - forwarding should be triggered. */ - [object nonExistingInstanceMethod]; - - if (resolveInstanceMethodCount != 1) - abort (); - - if (forwardingCount != 1) - abort (); - - if (nonExistingMethodCount != 1) - abort (); - - /* Now try the same tests with class_getInstanceMethod(), which - should trigger the resolve methods too, but not the - forwarding. */ - m = class_getInstanceMethod (objc_getClass ("CountClass"), - @selector (existingInstanceMethod)); - - if (resolveInstanceMethodCount != 1) - abort (); - - if (forwardingCount != 1) - abort (); - - if (nonExistingMethodCount != 1) - abort (); - - m = class_getInstanceMethod (objc_getClass ("CountClass"), - @selector (nonExistingInstanceMethod)); - - if (resolveInstanceMethodCount != 2) - abort (); - - if (forwardingCount != 1) - abort (); - - if (nonExistingMethodCount != 1) - abort (); - - /* Now try the same tests with class_getMethodImplementation(), - which should trigger the resolve methods and the - forwarding. */ - i = class_getMethodImplementation (objc_getClass ("CountClass"), - @selector (existingInstanceMethod)); - if (resolveInstanceMethodCount != 2) - abort (); - - if (forwardingCount != 1) - abort (); - - if (nonExistingMethodCount != 1) - abort (); - - i = class_getMethodImplementation (objc_getClass ("CountClass"), - @selector (nonExistingInstanceMethod)); - if (resolveInstanceMethodCount != 3) - abort (); - - if (forwardingCount != 2) - abort (); - - if (nonExistingMethodCount != 1) - abort (); - - /* Reset the counters for the next test. */ - resolveInstanceMethodCount = 0; - forwardingCount = 0; - nonExistingMethodCount = 0; - - - /** SelfExtendingClass tests. **/ - - /* Try the direct countHits method first. No resolving or - forwarding should be triggered. */ - if ([SelfExtendingClass countHits] != 1) - abort (); - - if (resolveInstanceMethodCount != 0) - abort (); - - if (forwardingCount != 0) - abort (); - - if (nonExistingMethodCount != 0) - abort (); - - /* Now, try calling a non-existing count method; it should be - installed and invoked. */ - if ([object2 nonExistingCountHitsMethod] != 2) - abort (); - - if (resolveInstanceMethodCount != 1) - abort (); - - if (forwardingCount != 0) - abort (); - - if (nonExistingMethodCount != 0) - abort (); - - /* Try it again. The method has now been installed, so it should - be used and work, but with no additional resolving - involved. */ - if ([object2 nonExistingCountHitsMethod] != 3) - abort (); - - if (resolveInstanceMethodCount != 1) - abort (); - - if (forwardingCount != 0) - abort (); - - if (nonExistingMethodCount != 0) - abort (); - - /* Now try the same tests with class_getInstanceMethod(). */ - m = class_getInstanceMethod (objc_getClass ("SelfExtendingClass"), - @selector (nonExistingCountHitsMethod2)); - if (resolveInstanceMethodCount != 2) - abort (); - - if (forwardingCount != 0) - abort (); - - if (nonExistingMethodCount != 0) - abort (); - - /* Try it again. The method has now been installed, so it should - be used and work, but with no additional resolving - involved. */ - if ([object2 nonExistingCountHitsMethod2] != 4) - abort (); - - if (resolveInstanceMethodCount != 2) - abort (); - - if (forwardingCount != 0) - abort (); - - if (nonExistingMethodCount != 0) - abort (); - - - /* Now try the same tests with class_getMethodImplementation(). */ - i = class_getMethodImplementation (objc_getClass ("SelfExtendingClass"), - @selector (nonExistingCountHitsMethod3)); - if (resolveInstanceMethodCount != 3) - abort (); - - if (forwardingCount != 0) - abort (); - - if (nonExistingMethodCount != 0) - abort (); - - /* Try it again. The method has now been installed, so it should - be used and work, but with no additional resolving - involved. */ - if ([object2 nonExistingCountHitsMethod3] != 5) - abort (); - - if (resolveInstanceMethodCount != 3) - abort (); - - if (forwardingCount != 0) - abort (); - - if (nonExistingMethodCount != 0) - abort (); - } - - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-sel.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-sel.mm deleted file mode 100644 index ff5005856..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-api-2-sel.mm +++ /dev/null @@ -1,209 +0,0 @@ -/* Test the Modern GNU Objective-C Runtime API. - - This is test 'sel', covering all functions starting with 'sel'. */ - -/* { dg-do run } */ -/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ - -/* To get the modern GNU Objective-C Runtime API, you include - objc/runtime.h. */ -#include <objc/runtime.h> -#include <stdlib.h> -#include <iostream> -#include <cstring> - -@interface MyRootClass -{ Class isa; } -+ alloc; -- init; -+ initialize; -@end - -@implementation MyRootClass -+ alloc { return class_createInstance (self, 0); } -- init { return self; } -+ initialize { return self; } -@end - -@protocol MyProtocol -- (id) variable; -@end - -@protocol MySecondProtocol -- (id) setVariable: (id)value; -@end - -@interface MySubClass : MyRootClass <MyProtocol> -{ id variable_ivar; } -- (void) setVariable: (id)value; -- (id) variable; -- (void) method; -@end - -@implementation MySubClass -- (void) setVariable: (id)value { variable_ivar = value; } -- (id) variable { return variable_ivar; } -- (void) method { return; } -@end - -@interface ClassA : MyRootClass -- (id) conflictingSelectorMethod; -@end - -@implementation ClassA -- (id) conflictingSelectorMethod { return nil; } -@end - -@interface ClassB : MyRootClass -- (void) conflictingSelectorMethod; -@end - -@implementation ClassB -- (void) conflictingSelectorMethod { return; } -@end - -int main () -{ - /* Functions are tested in alphabetical order. */ - -#ifdef __GNU_LIBOBJC__ - std::cout << "Testing sel_copyTypedSelectorList ()...\n"; - { - unsigned int count; - SEL * list = sel_copyTypedSelectorList ("method", &count); - - /* There should only be two, since 'method' is referenced twice, - once with types and once without (in this very test). */ - if (count != 2) - abort (); - - /* Check that both selectors are not-NULL, and have the correct - name. We use @selector() here, which wouldn't really be - needed, just to register a second, untyped selector with name - 'method'. */ - if (std::strcmp (sel_getName (list[0]), sel_getName (@selector (method))) != 0) - abort (); - - if (std::strcmp (sel_getName (list[1]), sel_getName (@selector (method))) != 0) - abort (); - - if (list[2] != NULL) - abort (); - } -#endif - - std::cout << "Testing sel_getName () ...\n"; - { - if (std::strcmp (sel_getName (@selector (variable)), "variable") != 0) - abort (); - - if (std::strcmp (sel_getName (NULL), "<null selector>") != 0) - abort (); - } - -#ifdef __GNU_LIBOBJC__ - std::cout << "Testing sel_getTypeEncoding () ...\n"; - { - /* Get a selector from a real class, so it has interesting - types. */ - Method method = class_getInstanceMethod (objc_getClass ("MySubClass"), - @selector (variable)); - - if (std::strcmp (sel_getTypeEncoding (method_getName (method)), - method_getTypeEncoding (method)) != 0) - abort (); - - if (sel_getTypeEncoding (NULL) != NULL) - abort (); - } -#endif - -#ifdef __GNU_LIBOBJC__ - std::cout << "Testing sel_getTypedSelector () ...\n"; - { - /* First try with a selector where we know that a typed one has - been registered. */ - SEL selector = sel_getTypedSelector ("variable"); - - if (selector == NULL) - abort (); - - if (sel_getTypeEncoding (selector) == NULL) - abort (); - - /* Now try a selector which was never registered. */ - selector = sel_getTypedSelector ("not_registered"); - - if (selector != NULL) - abort (); - - /* Now try registering a selector with no types. The following - line is just a way to have an unused '@selector()' expression - without the compiler complaining. */ - if (@selector (registered_with_no_types) == NULL) - abort (); - - /* Try getting it. Nothing should be returned because it is - untyped. */ - selector = sel_getTypedSelector ("registered_with_no_types"); - - if (selector != NULL) - abort (); - - /* Now try a selector with multiple, conflicting types. NULL - should be returned. */ - selector = sel_getTypedSelector ("conflictingSelectorMethod"); - - if (selector != NULL) - abort (); - } -#endif - - std::cout << "Testing sel_getUid () ...\n"; - { - if (std::strcmp (sel_getName (sel_getUid ("myMethod")), "myMethod") != 0) - abort (); - - if (sel_getUid (NULL) != NULL) - abort (); - } - - std::cout << "Testing sel_isEqual () ...\n"; - { - if (! sel_isEqual (@selector (setVariable:), @selector (setVariable:))) - abort (); - } - - std::cout << "Testing sel_registerName () ...\n"; - { - if (std::strcmp (sel_getName (sel_registerName ("myMethod")), "myMethod") != 0) - abort (); - - if (sel_registerName (NULL) != NULL) - abort (); - } - -#ifdef __GNU_LIBOBJC__ - std::cout << "Testing set_registerTypedName () ...\n"; - { - const char *types = method_getTypeEncoding (class_getInstanceMethod - (objc_getClass ("MySubClass"), - @selector (variable))); - SEL selector = sel_registerTypedName ("aMethod", types); - - if (std::strcmp (sel_getName (selector), "aMethod") != 0) - abort (); - - if (std::strcmp (sel_getTypeEncoding (selector), types) != 0) - abort (); - - if (sel_registerTypedName (NULL, NULL) != NULL) - abort (); - - if (sel_registerTypedName (NULL, types) != NULL) - abort (); - } -#endif - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-runtime-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-runtime-1.mm deleted file mode 100644 index c73cd384c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-runtime-1.mm +++ /dev/null @@ -1,19 +0,0 @@ -/* Test that compiling for the GNU runtime works (regardless of - the system runtime used). */ -/* Author: Ziemowit Laski <zlaski@apple.com> */ -/* { dg-do compile } */ -/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -@interface FooBar: TestsuiteObject -- (void)boo; -@end - -int main () -{ - id fooBarInst = [[FooBar alloc] init]; - [fooBarInst boo]; - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm deleted file mode 100644 index dd5333889..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm +++ /dev/null @@ -1,30 +0,0 @@ -/* Sanity check for GNU-runtime version of constant strings, - regardless of runtime used on target system. */ - -/* { dg-do compile } */ -/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */ - -#include <objc/Object.h> -#include <string.h> -#include <stdlib.h> - -@interface NXConstantString: Object -{ - char *c_string; - unsigned int len; -} --(const char *) cString; --(unsigned int) length; -@end - -@implementation NXConstantString --(const char *) cString { return c_string; } --(unsigned int) length { return len; } -@end - -int main(int argc, const char **args) -{ - if (strcmp ([@"this is a string" cString], "this is a string")) - abort (); - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-runtime-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-runtime-3.mm deleted file mode 100644 index 56e48d791..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/gnu-runtime-3.mm +++ /dev/null @@ -1,30 +0,0 @@ -/* Test that compiling for the GNU runtime works (regardless of - the system runtime used). */ -/* Author: Ziemowit Laski <zlaski@apple.com> */ -/* { dg-do run } */ -/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdlib.h> - -@interface FooBar: TestsuiteObject -- (void)boo; -@end - -int called = 0; - -@implementation FooBar -- (void)boo -{ - called ++; -} -@end - -int main () -{ - id fooBarInst = [[FooBar alloc] init]; - [fooBarInst boo]; - if (called != 1) - abort (); - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/invalid-method-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/invalid-method-2.mm deleted file mode 100644 index 48f03599c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/invalid-method-2.mm +++ /dev/null @@ -1,18 +0,0 @@ -/* { dg-do compile } */ - -/* Test that using an invalid type in a method declaration produces a - friendly error without a compiler crash. */ - -@interface MyClass -@end - -@implementation MyClass -- (x) method /* { dg-error "expected" } */ -{ - return 0; -} -- (id) method2: (x)argument /* { dg-error "expected" } */ -{ - return 0; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/invalid-type-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/invalid-type-1.mm deleted file mode 100644 index ace144f0b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/invalid-type-1.mm +++ /dev/null @@ -1,25 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ -#include <objc/objc.h> - -typedef int Integer; - -@class MyClass; - -typedef MyClass AClass; - -@protocol MyProtocol -- (void) method; -@end - -Class <MyProtocol> class_object; /* This is fine. */ - -id <MyProtocol> object; /* This is fine. */ - -AClass <MyProtocol> *object1; /* This is fine. */ - -Integer <MyProtocol> *object2; /* { dg-error ".Integer {aka int}. is not a template" } */ -/* { dg-error ".MyProtocol. was not declared in this scope" "" { target *-*-* } 21 } */ - -Integer <NonExistingProtocol> *object3; /* { dg-error ".Integer {aka int}. is not a template" } */ -/* { dg-error ".NonExistingProtocol. was not declared in this scope" "" { target *-*-* } 24 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/isa-field-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/isa-field-1.mm deleted file mode 100644 index 4501d01a1..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/isa-field-1.mm +++ /dev/null @@ -1,64 +0,0 @@ -/* Ensure there are no bizarre difficulties with accessing the 'isa' field of objects. */ -/* { dg-do compile } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" -#include "../objc-obj-c++-shared/runtime.h" - -@interface TestsuiteObject (Test) -- (Class) test1: (id)object; -@end - -@interface Derived: TestsuiteObject -- (Class) test2: (id)object; -@end - -@implementation TestsuiteObject (Test) - -Class test1(id object) { -#ifdef __NEXT_RUNTIME__ - Class cls = object->isa; -#else - Class cls = object->class_pointer; -#endif - return cls; -} -- (Class) test1: (id)object { -#ifdef __NEXT_RUNTIME__ - Class cls = object->isa; -#else - Class cls = object->class_pointer; -#endif - return cls; -} - -@end - -@implementation Derived - -Class test2(id object) { -#ifdef __NEXT_RUNTIME__ - Class cls = object->isa; -#else - Class cls = object->class_pointer; -#endif - return cls; -} -- (Class) test2: (id)object { -#ifdef __NEXT_RUNTIME__ - Class cls = object->isa; -#else - Class cls = object->class_pointer; -#endif - return cls; -} - -@end - -Class test3(id object) { -#ifdef __NEXT_RUNTIME__ - Class cls = object->isa; -#else - Class cls = object->class_pointer; -#endif - return cls; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/ivar-invalid-type-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/ivar-invalid-type-1.mm deleted file mode 100644 index 4c1480a6b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/ivar-invalid-type-1.mm +++ /dev/null @@ -1,19 +0,0 @@ -/* { dg-do compile } */ -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; -} -@end - -@interface MySubClass -{ - volatile int a; /* This is allowed */ - extern int b; /* { dg-error "invalid type" } */ - static int c; /* { dg-error "invalid type" } */ - inline int d; /* { dg-error "declared as an .inline." } */ - typedef int e; /* { dg-error "invalid type" } */ - __thread int f; /* { dg-error "invalid type" } */ -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/ivar-list-semi.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/ivar-list-semi.mm deleted file mode 100644 index 00b336626..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/ivar-list-semi.mm +++ /dev/null @@ -1,12 +0,0 @@ -/* Allow for an optional semicolon following the ivar block. */ -/* Contributed by: Ziemowit Laski <zlaski@apple.com>. */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -@interface Tink : TestsuiteObject { -@private - unsigned long mCode[4]; -}; -- (id)initWithProc:(void *)inProc; -- (void *)getUniqueProc; -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/ivar-problem-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/ivar-problem-1.mm deleted file mode 100644 index 4ed5afaf4..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/ivar-problem-1.mm +++ /dev/null @@ -1,66 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* This test checks what happens if there are 16 instance variables. - In that case, the class was not created correctly. In this testcase, - we have two classes, one with 15 variables and one with 16. Older - GCCs would generate a bogus warning for the second class but not - for the first one. This only happened for ObjC, but it's good to - test ObjC++ as well. */ - -#include <stdlib.h> -#include <objc/objc.h> - -@interface MyRootClass1 -{ - Class isa; - int v2; - int v3; - int v4; - int v5; - int v6; - int v7; - int v8; - int v9; - int v10; - int v11; - int v12; - int v13; - int v14; - int v15; -} -- (id) init; -@end - -@implementation MyRootClass1 -- (id) init { return self; } -@end - - -@interface MyRootClass2 -{ - Class isa; - int v2; - int v3; - int v4; - int v5; - int v6; - int v7; - int v8; - int v9; - int v10; - int v11; - int v12; - int v13; - int v14; - int v15; - /* Adding the 16th variable used to cause bogus warnings to be - generated. */ - int v16; -} -- (id) init; -@end - -@implementation MyRootClass2 -- (id) init { return self; } /* This should not generate a bogus warning. */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/keywords-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/keywords-1.mm deleted file mode 100644 index abb4537ae..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/keywords-1.mm +++ /dev/null @@ -1,27 +0,0 @@ -/* Test that 'in', 'out', 'inout', 'bycopy', 'byref', 'oneway' - are not keywords outside of a "protocol qualifier" context. -*/ -/* { dg-do compile } */ - -typedef int in; - -in out (in inout) -{ - int byref = inout * 2; - - return byref + inout; -} - -@class byref; - -@interface inout -@end - -@protocol oneway; - -int main (void) -{ - in bycopy = (in)(out (0)); - - return (in)bycopy; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/keywords-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/keywords-2.mm deleted file mode 100644 index c81cb4d0c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/keywords-2.mm +++ /dev/null @@ -1,24 +0,0 @@ -/* Test that 'encode', 'end', 'compatibility_alias', 'defs', - 'protocol', 'selector', finally', 'synchronized', 'interface', - 'implementation' are not keywords if not after a '@'. -*/ -/* { dg-do compile } */ - -int encode (int end) -{ - int compatibility_alias = end * 2; - int defs = compatibility_alias * 2; - int protocol = defs * 2; - int selector = protocol * 2; - int finally = selector * 2; - int synchronized = finally * 2; - int interface = synchronized * 2; - int implementation = interface * 2; - - return implementation; -} - -int main (void) -{ - return encode (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/layout-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/layout-1.mm deleted file mode 100644 index 33879ad17..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/layout-1.mm +++ /dev/null @@ -1,17 +0,0 @@ -/* Ensure that we do not get bizarre warnings referring to - __attribute__((packed)) or some such. */ -/* { dg-do compile } */ -/* { dg-options "-Wpadded -Wpacked -Wabi" } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -@interface Derived1: TestsuiteObject -{ } -@end - -@interface Derived2: TestsuiteObject -- (id) foo; -@end - -/* { dg-prune-output "In output included from" } Ignore this message. */ -/* { dg-bogus "padding struct to align" "PR23610" { target *-*-* } 0 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/local-decl-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/local-decl-1.mm deleted file mode 100644 index f1c39b1c3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/local-decl-1.mm +++ /dev/null @@ -1,44 +0,0 @@ -/* Test for ivar access inside of class methods. It should be allowed - (with a warning), but only if no other declarations with the same - name are seen. */ -/* Author: Ziemowit Laski <zlaski@apple.com>. */ - -/* { dg-do compile } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -@interface Sprite: TestsuiteObject { - int sprite, spree; -} -+ (void)setFoo:(int)foo; -+ (void)setSprite:(int)sprite; -- (void)setFoo:(int)foo; -- (void)setSprite:(int)sprite; -@end - -int spree = 23; - -@implementation Sprite -+ (void)setFoo:(int)foo { - sprite = foo; /* { dg-warning "instance variable .sprite. accessed in class method" } */ - spree = foo; -} -+ (void)setSprite:(int)sprite { - int spree; - sprite = 15; - spree = 17; - ((Sprite *)self)->sprite = 16; /* NB: This is how one _should_ access */ - ((Sprite *)self)->spree = 18; /* ivars from within class methods! */ -} -- (void)setFoo:(int)foo { - sprite = foo; - spree = foo; -} -- (void)setSprite:(int)sprite { - int spree; - sprite = 15; /* { dg-warning "local declaration of .sprite. hides instance variable" } */ - self->sprite = 16; - spree = 17; /* { dg-warning "local declaration of .spree. hides instance variable" } */ - self->spree = 18; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/lookup-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/lookup-1.mm deleted file mode 100644 index e149e5c61..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/lookup-1.mm +++ /dev/null @@ -1,8 +0,0 @@ -/* Simple test to check Objectivec-C++ qualified type lookup. */ -/* Devang Patel <dpatel@apple.com>. */ - -@interface A -{ - A *ap; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/lookup-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/lookup-2.mm deleted file mode 100644 index 6b969249e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/lookup-2.mm +++ /dev/null @@ -1,58 +0,0 @@ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdlib.h> - -class MyWidget { - public: - int a; - MyWidget(void) { a = 17; } -}; - -MyWidget gWidget; - -@protocol MyProto -- (MyWidget *)widget; -@end - -@interface Foo: TestsuiteObject -@end - -@interface Bar: Foo <MyProto> -@end - -@interface Container: TestsuiteObject -+ (MyWidget *)elementForView:(Foo *)view; -@end - -@implementation Foo -@end - -@implementation Bar -- (MyWidget *)widget { - return &gWidget; -} -@end - -@implementation Container -+ (MyWidget *)elementForView:(Foo *)view -{ - MyWidget *widget = 0; - if (class_conformsToProtocol (object_getClass (view), - @protocol(MyProto))) { - widget = [(Foo <MyProto> *)view widget]; - } - return widget; -} -@end - -int main(void) { - id view = [Bar new]; - MyWidget *w = [Container elementForView: view]; - - if (!w || w->a != 17) - abort (); - - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/lto/lto.exp b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/lto/lto.exp deleted file mode 100644 index df4131ad8..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/lto/lto.exp +++ /dev/null @@ -1,84 +0,0 @@ -# Copyright (C) 2010-2013 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GCC; see the file COPYING3. If not see -# <http://www.gnu.org/licenses/>. -# -# Based on gcc/testsuite/gcc.dg/lto/lto.exp. - -# Test link-time optimization across multiple files. -# -# Programs are broken into multiple files. Each one is compiled -# separately with LTO information. The final executable is generated -# by collecting all the generated object files using regular LTO or WHOPR. - -if $tracelevel then { - strace $tracelevel -} - -# Load procedures from common libraries. -load_lib standard.exp -load_lib obj-c++-dg.exp - -# Load the language-independent compabibility support procedures. -load_lib lto.exp - -# If LTO has not been enabled, bail. -if { ![check_effective_target_lto] } { - return -} - -global LTO_OPTIONS - -set LTO_OPTIONS [list \ - {-O0 -flto -fgnu-runtime} \ - {-O2 -flto -fgnu-runtime} \ - {-O0 -flto -flto-partition=none -fgnu-runtime} \ - {-O2 -flto -flto-partition=none -fgnu-runtime} \ -] - -obj-c++_init -lto_init no-mathlib - -# Define an identifier for use with this suite to avoid name conflicts -# with other lto tests running at the same time. -set sid "obj_cpp_lto" -set tests [lsort [glob -nocomplain $srcdir/$subdir/*_0.mm]] - -# Main loop. -foreach src $tests { - # If we're only testing specific files and this isn't one of them, skip it. - if ![runtest_file_p $runtests $src] then { - continue - } - lto-execute $src $sid -} - -# darwin targets can also run code with the NeXT runtime. -if [istarget "*-*-darwin*" ] { -set LTO_OPTIONS [list \ - {-O0 -flto -fnext-runtime} \ - {-O2 -flto -fnext-runtime} \ - {-O0 -flto -flto-partition=none -fnext-runtime} \ - {-O2 -flto -flto-partition=none -fnext-runtime} \ -] - foreach src $tests { - # If we're only testing specific files and this isn't one of them, skip it. - if ![runtest_file_p $runtests $src] then { - continue - } - lto-execute $src $sid - } -} - -lto_finish diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/lto/trivial-1_0.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/lto/trivial-1_0.mm deleted file mode 100644 index 45b6e7024..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/lto/trivial-1_0.mm +++ /dev/null @@ -1,43 +0,0 @@ -/* { dg-lto-do run } */ -/* { dg-skip-if "Needs OBJC2 ABI" { "*-*-darwin*" && lp64 } { "*" } { "" } } */ -extern "C" { -extern int printf (char *,...) ; -extern void abort (void) ; -} - -typedef struct objc_class *Class; - -struct objc_class { - Class isa; - /* other stuff... */ -} ; - -@interface myRootObject { -@public - Class isa; -} -+initialize; -+(Class)class; - -@end - -@implementation myRootObject -+initialize { - return self; -} - -+(Class)class { - return (Class)self; -} - -@end - -int main(void) -{ - Class cl = [myRootObject class]; - if (cl != (Class)0) { - printf((char *)"trivial OK\n"); - return 0; - } - abort () ; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-1.mm deleted file mode 100644 index fdab6b7a9..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-1.mm +++ /dev/null @@ -1,30 +0,0 @@ -/* Test whether casting 'id' to a specific class removes method lookup - ambiguity. */ -/* Author: Ziemowit Laski <zlaski@apple.com>. */ - -/* { dg-do compile } */ - -#include <objc/objc.h> - -@class Int1, Int2; - -@interface Int1 -+ (Int1 *)classMethod1; -+ (id)classMethod2; -- (Int1 *)instanceMethod:(Int2 *)arg; /* { dg-bogus "using" } */ -@end - -@interface Int2: Int1 -+ (Int1 *)classMethod1; -+ (id)classMethod2; -- (id)int2Method; -- (int)instanceMethod:(int)arg; /* { dg-bogus "also found" } */ -@end - -int main(void) { - id i = [(Int2 *)[Int1 classMethod1] int2Method]; /* { dg-bogus "may not respond to" } */ - int j = [(Int2 *)[Int2 classMethod2] instanceMethod: 45]; /* { dg-bogus "multiple methods" } */ - /* { dg-bogus "invalid conversion" "" { target *-*-* } 25 } */ - /* { dg-bogus "invalid conversion" "" { target *-*-* } 25 } */ - return j; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-10.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-10.mm deleted file mode 100644 index 0c4ce56d3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-10.mm +++ /dev/null @@ -1,46 +0,0 @@ -/* Test for sending messages to aliased classes (and instances thereof). */ -/* Author: Ziemowit Laski <zlaski@apple.com>. */ -/* { dg-options "" } */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdlib.h> - -#define CHECK_IF(expr) if(!(expr)) abort() - -@interface Int1: TestsuiteObject -+ (int) classMeth; -- (int) instanceMeth; -@end - -@interface Int2: TestsuiteObject -+ (int) classMeth; -- (int) instanceMeth; -@end - -@implementation Int1 -+ (int) classMeth { return 345; } -- (int) instanceMeth { return 697; } -@end - -@implementation Int2 -+ (int) classMeth { return 1345; } -- (int) instanceMeth { return 1697; } -@end - -typedef Int1 Int1Typedef; -@compatibility_alias Int1Alias Int1Typedef; -@compatibility_alias Int2Alias Int2; -typedef Int2Alias Int2Typedef; - -int main(void) { - Int1Alias *int1alias = [[Int1Typedef alloc] init]; - Int2Typedef *int2typedef = [[Int2Alias alloc] init]; - - CHECK_IF([Int1Typedef classMeth] == 345 && [Int2Alias classMeth] == 1345); - CHECK_IF([int1alias instanceMeth] == 697 && [int2typedef instanceMeth] == 1697); - CHECK_IF([(Int2Typedef *)int1alias instanceMeth] == 697); - CHECK_IF([(Int1Alias *)int2typedef instanceMeth] == 1697); - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-11.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-11.mm deleted file mode 100644 index 29e739a91..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-11.mm +++ /dev/null @@ -1,29 +0,0 @@ -/* Check if class references (generated for the NeXT runtime) are appropriately - folded. This test is safe to run on all targets. */ -/* Author: Ziemowit Laski <zlaski@apple.com>. */ - -/* { dg-do compile } */ -/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -typedef TestsuiteObject ObjectTypedef1; -typedef ObjectTypedef1 ObjectTypedef2; -@compatibility_alias ObjectAlias1 ObjectTypedef2; -@compatibility_alias ObjectAlias2 ObjectAlias1; -typedef ObjectAlias2 ObjectTypedef3; - -void foo(void) { - id obj = [TestsuiteObject new]; - obj = [ObjectTypedef1 new]; - obj = [ObjectTypedef2 new]; - obj = [ObjectTypedef3 new]; - obj = [ObjectAlias1 new]; - obj = [ObjectAlias2 new]; -} - -/* { dg-final { scan-assembler "_OBJC_ClassRefs_0" { target { *-*-darwin* && { ! lp64 } } } } } */ -/* { dg-final { scan-assembler "_OBJC_ClassRef_TestsuiteObject" { target { *-*-darwin* && { lp64 } } } } } */ -/* { dg-final { scan-assembler-not "_OBJC_ClassRefs_1" { target { *-*-darwin* && { ! lp64 } } } } } */ -/* { dg-final { scan-assembler-not "_OBJC_ClassRef_ObjectTypedef" { target { *-*-darwin* && { lp64 } } } } } */ -/* { dg-final { scan-assembler-not "_OBJC_ClassRef_ObjectAlias" { target { *-*-darwin* && { lp64 } } } } } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-12.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-12.mm deleted file mode 100644 index c1f2a39df..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-12.mm +++ /dev/null @@ -1,31 +0,0 @@ -/* Check that sending messages to variables of type 'Class' does not involve instance methods, unless they reside in root classes. */ -/* Author: Ziemowit Laski <zlaski@apple.com> */ -/* { dg-options "-Wstrict-selector-match" } */ -/* { dg-do compile } */ - -#include <objc/Protocol.h> - -@interface Base -- (unsigned)port; -@end - -@interface Derived: Base -- (Object *)port; -+ (Protocol *)port; -- (id)starboard; -@end - -void foo(void) { - Class receiver; - - [receiver port]; /* { dg-warning "multiple methods named .\\+port. found" } */ - /* { dg-message "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } 9 } */ - /* { dg-message "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } 14 } */ - - [receiver starboard]; /* { dg-warning "no .\\+starboard. method found" } */ - /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 25 } */ - /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 25 } */ - /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 25 } */ - - [Class port]; /* { dg-error ".Class. is not an Objective\\-C class name or alias" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-13.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-13.mm deleted file mode 100644 index ee167bde3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-13.mm +++ /dev/null @@ -1,27 +0,0 @@ -/* Check if finding multiple signatures for a method is handled gracefully. Author: Ziemowit Laski <zlaski@apple.com> */ -/* { dg-options "-Wstrict-selector-match" } */ -/* { dg-do compile } */ -#include <objc/objc.h> -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -@interface Class1 -- (void)setWindow:(TestsuiteObject *)wdw; -@end - -@interface Class2 -- (void)setWindow:(Class1 *)window; -@end - -id foo(void) { - TestsuiteObject *obj = [[TestsuiteObject alloc] init]; - id obj2 = obj; - [obj setWindow:nil]; /* { dg-warning ".TestsuiteObject. may not respond to .\\-setWindow:." } */ - /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 18 } */ - /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 18 } */ - /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 18 } */ - [obj2 setWindow:nil]; /* { dg-warning "multiple methods named .\\-setWindow:. found" } */ - /* { dg-message "using .\\-\\(void\\)setWindow:\\(TestsuiteObject \\*\\)wdw." "" { target *-*-* } 8 } */ - /* { dg-message "also found .\\-\\(void\\)setWindow:\\(Class1 \\*\\)window." "" { target *-*-* } 12 } */ - - return obj; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-14.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-14.mm deleted file mode 100644 index 4a13b7d6c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-14.mm +++ /dev/null @@ -1,14 +0,0 @@ -/* Check if casting the receiver type causes method lookup to succeed. This was broken - in Objective-C++. */ -/* Contributed by Ziemowit Laski <zlaski@apple.com> */ -/* { dg-do compile } */ - -@interface A -@end - -@interface B: A -- (void)f; -@end - -void g(A *p) { [(B *)p f]; } - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-15.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-15.mm deleted file mode 100644 index f3cef2565..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-15.mm +++ /dev/null @@ -1,43 +0,0 @@ -/* Check if finding multiple signatures for a method is handled gracefully when method lookup succeeds (see also method-7.m). */ -/* Contributed by Ziemowit Laski <zlaski@apple.com> */ -/* { dg-options "-Wstrict-selector-match" } */ -/* { dg-do compile } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -@protocol MyObject -- (id)initWithData:(TestsuiteObject *)data; -@end - -@protocol SomeOther -- (id)initWithData:(int)data; -@end - -@protocol MyCoding -- (id)initWithData:(id<MyObject, MyCoding>)data; -@end - -@interface NTGridDataObject: TestsuiteObject <MyCoding> -{ - TestsuiteObject<MyCoding> *_data; -} -+ (NTGridDataObject*)dataObject:(id<MyObject, MyCoding>)data; -@end - -@implementation NTGridDataObject -- (id)initWithData:(id<MyObject, MyCoding>)data { - return data; -} -+ (NTGridDataObject*)dataObject:(id<MyObject, MyCoding>)data -{ - NTGridDataObject *result = [[NTGridDataObject alloc] initWithData:data]; - /* { dg-warning "multiple methods named .\\-initWithData:. found" "" { target *-*-* } 33 } */ - /* { dg-message "using .\\-\\(id\\)initWithData:\\(TestsuiteObject \\*\\)data." "" { target *-*-* } 9 } */ - /* { dg-message "also found .\\-\\(id\\)initWithData:\\(id <MyObject, MyCoding>\\)data." "" { target *-*-* } 17 } */ - /* { dg-message "also found .\\-\\(id\\)initWithData:\\(int\\)data." "" { target *-*-* } 13 } */ - - /* The following warning is a consequence of picking the "wrong" method signature. */ - /* { dg-warning "passing argument 1 of .initWithData:. from distinct Objective\\-C type" "" { target *-*-* } 33 } */ - return result; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-16.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-16.mm deleted file mode 100644 index aceefcdc7..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-16.mm +++ /dev/null @@ -1,34 +0,0 @@ - -/* Ensure that we indeed cannot obtain the value of a message send - if the chosen method signature returns 'void'. There used to - exist a cheesy hack that allowed it. While at it, check that - the first lexically occurring method signature gets picked - when sending messages to 'id'. */ -/* Contributed by Ziemowit Laski <zlaski@apple.com> */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface Object1 -- (void)initWithData:(Object1 *)data; -@end - -@interface Object2 -- (id)initWithData:(Object1 *)data; -@end - -@interface Object3 -- (id)initWithData:(Object2 *)data; -@end - -void foo(void) { - id obj1, obj2 = 0; - obj2 = [obj1 initWithData: obj2]; - /* { dg-warning "multiple methods named .\\-initWithData:. found" "" { target *-*-* } 26 } */ - /* { dg-message "using .\\-\\(void\\)initWithData:\\(Object1 \\*\\)data." "" { target *-*-* } 13 } */ - /* { dg-message "also found .\\-\\(id\\)initWithData:\\(Object1 \\*\\)data." "" { target *-*-* } 17 } */ - /* { dg-message "also found .\\-\\(id\\)initWithData:\\(Object2 \\*\\)data." "" { target *-*-* } 21 } */ - - /* The following error is a consequence of picking the "wrong" method signature. */ - /* { dg-error "void value not ignored as it ought to be" "" { target *-*-* } 26 } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-17.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-17.mm deleted file mode 100644 index 3566a652b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-17.mm +++ /dev/null @@ -1,33 +0,0 @@ -/* When there is only one candidate method available, make sure the - compiler uses its argument/return types when constructing the - message sends (so that proper C/C++ argument conversions may - take place). */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdlib.h> - -#define CHECK_IF(expr) if(!(expr)) abort() - -static double d = 4.5920234e2; - -@interface Foo : TestsuiteObject --(void) brokenType: (int)x floatingPoint: (double)y; -@end - - -@implementation Foo --(void) brokenType: (int)x floatingPoint: (double)y -{ - CHECK_IF(x == 459); - CHECK_IF(y == d); -} -@end - -int main(void) -{ - Foo *foo=[Foo new]; - [foo brokenType: (int)d floatingPoint: d]; - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-18.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-18.mm deleted file mode 100644 index 411caac11..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-18.mm +++ /dev/null @@ -1,25 +0,0 @@ -/* Contributed by Igor Seleznev <selez@mail.ru>. */ -/* This used to be broken. */ - -#include <objc/objc.h> - -@interface A -+ (A *)currentContext; -@end - -@interface B -+ (B *)currentContext; -@end - -int main() -{ - [A currentContext]; /* { dg-bogus "multiple declarations" } */ - return 0; -} - -@implementation A -+ (A *)currentContext { return nil; } -@end -@implementation B -+ (B *)currentContext { return nil; } -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-19.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-19.mm deleted file mode 100644 index 225becae0..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-19.mm +++ /dev/null @@ -1,72 +0,0 @@ -/* Test if instance methods of root classes are used as class methods, if no - "real" methods are found. For receivers of type 'id' and 'Class', all - root classes must be considered. */ -/* Author: Ziemowit Laski <zlaski@apple.com>. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -#include <objc/objc.h> -#include "../objc-obj-c++-shared/runtime.h" - -#include <stdlib.h> -#include <string.h> - -#define CHECK_IF(expr) if(!(expr)) abort() - -@protocol Proto -- (const char *) method4; -@end - -@interface Root -{ Class isa; } -+ (const char *) method2; -@end - -@interface Derived: Root -- (const char *) method1; -- (const char *) method2; -- (const char *) method3; -@end - -@interface Root (Categ) -- (const char *) method3; -@end - -@implementation Root (Categ) -- (const char *) method3 { return "Root(Categ)::-method3"; } -- (const char *) method4 { return "Root(Categ)::-method4"; } -@end - -@implementation Derived -- (const char *) method1 { return "Derived::-method1"; } -- (const char *) method2 { return "Derived::-method2"; } -- (const char *) method3 { return "Derived::-method3"; } -@end - -@implementation Root -+ initialize { return self; } -- (const char *) method1 { return "Root::-method1"; } -+ (const char *) method2 { return "Root::+method2"; } -@end - -int main(void) -{ - Class obj = objc_getClass("Derived"); - - /* None of the following should elicit compiler-time warnings. */ - - CHECK_IF(!strcmp([Root method1], "Root::-method1")); - CHECK_IF(!strcmp([Root method2], "Root::+method2")); - CHECK_IF(!strcmp([Root method3], "Root(Categ)::-method3")); - CHECK_IF(!strcmp([Root method4], "Root(Categ)::-method4")); - CHECK_IF(!strcmp([Derived method1], "Root::-method1")); - CHECK_IF(!strcmp([Derived method2], "Root::+method2")); - CHECK_IF(!strcmp([Derived method3], "Root(Categ)::-method3")); - CHECK_IF(!strcmp([Derived method4], "Root(Categ)::-method4")); - CHECK_IF(!strcmp([obj method1], "Root::-method1")); - CHECK_IF(!strcmp([obj method2], "Root::+method2")); - CHECK_IF(!strcmp([obj method3], "Root(Categ)::-method3")); - CHECK_IF(!strcmp([obj method4], "Root(Categ)::-method4")); - - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-2.mm deleted file mode 100644 index e4973c34e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-2.mm +++ /dev/null @@ -1,57 +0,0 @@ -/* Test if prior method lookup at method @implementation time is not - overly aggressive, leading to methods being found in other classes. */ -/* Author: Ziemowit Laski <zlaski@apple.com>. */ - -/* { dg-do compile } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" -#include "../objc-obj-c++-shared/runtime.h" - -@class NSString; - -@protocol NSMenuItem -+ (void)setUsesUserKeyEquivalents:(BOOL)flag; -+ (BOOL)usesUserKeyEquivalents; -@end - -@interface NSMenuItem : TestsuiteObject <NSMenuItem> { - @private - id _menu; -} -@end - -@interface NSResponder : TestsuiteObject <NSMenuItem> -{ - id _nextResponder; -} -@end - -@interface TestsuiteObject(NSMenuValidation) -- (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem; -@end - -@interface NSResponder (NSStandardKeyBindingMethods) -- (void)insertText:(id)insertString; -- (void)doCommandBySelector:(SEL)aSelector; -@end - -@interface NSView : NSResponder -{ - id _superview; - id _subviews; -} -@end - -@interface SKTGraphicView : NSView { - @private - float _gridSpacing; -} -@end - -@implementation SKTGraphicView -- (BOOL)validateMenuItem:(NSMenuItem *)item { - return (BOOL)1; -} -- (void)insertText:(NSString *)str { -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-20.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-20.mm deleted file mode 100644 index 96982254a..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-20.mm +++ /dev/null @@ -1,17 +0,0 @@ -/* Test if context-sensitive "in", "out", "byref", etc., qualifiers can be - used as method selectors. */ -/* Author: Ziemowit Laski <zlaski@apple.com>. */ -/* { dg-do compile } */ - -@interface Foo -- (void)insertNewButtonImage:(Foo *)newButtonImage in:(Foo *)buttonCell; -+ (oneway void)oneway:(int)i2 byref:(int)i3 out:(float)f4 bycopy:(float)f5; -@end - -@implementation Foo -- (void)insertNewButtonImage:(Foo *)newButtonImage in:(Foo *)buttonCell { } -+ (oneway void)oneway:(int)i2 byref:(int)i3 out:(float)f4 bycopy:(float)f5 { } -@end - -/* { dg-final { scan-assembler "insertNewButtonImage:in:" } } */ -/* { dg-final { scan-assembler "oneway:byref:out:bycopy:" } } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-21.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-21.mm deleted file mode 100644 index d9332beb0..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-21.mm +++ /dev/null @@ -1,25 +0,0 @@ -/* Test for spurious "may or may not return a value" warnings. */ -/* { dg-do compile } */ -/* { dg-options "-Wreturn-type -Wextra" } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -@interface Foo: TestsuiteObject -- (id) meth1; -- (void) meth2; -@end - -extern int bar; - -@implementation Foo -- (id) meth1 { - if (bar) - return [TestsuiteObject new]; - return; /* { dg-error "return.statement with no value" } */ -} -- (void) meth2 { - if (!bar) - return; - bar = 0; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-22.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-22.mm deleted file mode 100644 index 587f3bbb9..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-22.mm +++ /dev/null @@ -1,43 +0,0 @@ -/* Ensure that overload resolution does not produce warnings as - side-effects. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdlib.h> - -#define CHECK_IF(E) if(!(E)) abort () - -@interface MyCursor: TestsuiteObject -+ (MyCursor *)crosshairCursor; -@end - -@class MyImage; - -class A { -public: - A(); - - int foo(MyImage *); - int foo(MyCursor *); -}; - -A::A() {} -int A::foo(MyCursor * c) { return 17; } -int A::foo(MyImage * i) { return 29; } - -@implementation MyCursor -+ (MyCursor *)crosshairCursor { - return self; -} -@end - -int main(void) { - A a; - - int r = a.foo([MyCursor crosshairCursor]); - - CHECK_IF (r == 17); - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-23.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-23.mm deleted file mode 100644 index de8de844c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-23.mm +++ /dev/null @@ -1,44 +0,0 @@ -/* Check if array and function parameters get decayed to pointers as - they should. */ -/* { dg-do run } */ -/* { dg-options "-O2" } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <string.h> -#include <stdlib.h> - -static char global_buf[20]; - -char *strcpy_like_callee(const char *s) { - strcpy(global_buf, s); - return global_buf; -} - -typedef char io_string_t[512]; -typedef char *(func_type)(const char *); - -@interface DeviceObject: TestsuiteObject -- (void) func:(func_type)func stucPathInIORegistry:(io_string_t)ioRegPath; -@end -@implementation DeviceObject -- (void) func:(func_type)func stucPathInIORegistry:(io_string_t)ioRegPath -{ - func(ioRegPath); -} -@end - -int main (void) { - io_string_t my_string; - DeviceObject *obj = [DeviceObject new]; - - strcpy (my_string, "Hello!"); - strcpy (global_buf, "Good-bye!"); - - [obj func:strcpy_like_callee stucPathInIORegistry:my_string]; - - if (strcmp (global_buf, "Hello!")) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-3.mm deleted file mode 100644 index 9dab8c5b3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-3.mm +++ /dev/null @@ -1,24 +0,0 @@ -/* Do not warn about "slightly" mismatched method signatures if - -Wstrict-selector-match is off. */ - -/* { dg-do compile } */ -/* { dg-options "-Wno-strict-selector-match" } */ - -#include <objc/objc.h> - -@interface Base -- (id) meth1: (Base *)arg1; -- (id) window; -@end - -@interface Derived: Base -- (id) meth1: (Derived *)arg1; -- (Base *) window; -@end - -void foo(void) { - id r; - - [r meth1:r]; - [r window]; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-4.mm deleted file mode 100644 index e94f8f1b7..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-4.mm +++ /dev/null @@ -1,24 +0,0 @@ -/* Warn about "slightly" mismatched method signatures if - -Wstrict-selector-match is on. */ - -/* { dg-do compile } */ -/* { dg-options "-Wstrict-selector-match" } */ - -#include <objc/objc.h> - -@interface Base -- (id) meth1: (Base *)arg1; /* { dg-message "using .\\-\\(id\\)meth1:\\(Base \\*\\)arg1." } */ -- (id) window; /* { dg-message "using .\\-\\(id\\)window" } */ -@end - -@interface Derived: Base -- (id) meth1: (Derived *)arg1; /* { dg-message "also found .\\-\\(id\\)meth1:\\(Derived \\*\\)arg1." } */ -- (Base *) window; /* { dg-message "also found .\\-\\(Base \\*\\)window." } */ -@end - -void foo(void) { - id r; - - [r meth1:r]; /* { dg-warning "multiple methods named .\\-meth1:. found" } */ - [r window]; /* { dg-warning "multiple methods named .\\-window. found" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-5.mm deleted file mode 100644 index 17c841a46..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-5.mm +++ /dev/null @@ -1,30 +0,0 @@ -/* Do not warn about "slightly" mismatched method signatures if - -Wstrict-selector-match is off. */ - -/* { dg-do compile } */ -/* { dg-options "-Wno-strict-selector-match" } */ - -#include <objc/objc.h> - -typedef enum { en1_1, en1_2 } En1; -typedef enum { en2_1, en2_2 } En2; -typedef struct { int a, b; } St1; -typedef struct { unsigned a, b; } St2; - -@interface Base -- (id) meth1: (En1)arg1; -- (St1) window; -@end - -@interface Derived: Base -- (id) meth1: (En2)arg1; -- (St2)window; -@end - -void foo(void) { - id r; - En1 en; - - [r meth1:en]; - [r window]; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-6.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-6.mm deleted file mode 100644 index 9cc99995b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-6.mm +++ /dev/null @@ -1,18 +0,0 @@ -/* The following should NOT generate "may not respond to" warnings, since a forward-declared - @class (instance) should be treated like a 'Class') ('id'). */ - -/* { dg-do compile } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -@class NotKnown; - -void foo(NotKnown *n) { - [NotKnown new]; /* { dg-warning ".interface of class .NotKnown. not found" } */ - [n nonexistent_method]; /* { dg-warning ".interface of class .NotKnown. not found" } */ - /* { dg-warning "no .\\-nonexistent_method. method found" "" { target *-*-* } 12 } */ -} - -/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */ -/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */ -/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-7.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-7.mm deleted file mode 100644 index 85abf7d31..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-7.mm +++ /dev/null @@ -1,22 +0,0 @@ -/* Check if sending messages to "underspecified" objects is handled gracefully. */ -/* Author: Ziemowit Laski <zlaski@apple.com>. */ -/* { dg-do compile } */ - -@class UnderSpecified; -typedef struct NotAClass { - int a, b; -} NotAClass; - -void foo(UnderSpecified *u, NotAClass *n) { - [n nonexistent_method]; /* { dg-warning "invalid receiver type" } */ - /* { dg-warning "no .\\-nonexistent_method. method found" "" { target *-*-* } 11 } */ - [NotAClass nonexistent_method]; /* { dg-error ".NotAClass. is not an Objective\\-C class name or alias" } */ - [u nonexistent_method]; /* { dg-warning ".interface of class .UnderSpecified. not found" } */ - /* { dg-warning "no .\\-nonexistent_method. method found" "" { target *-*-* } 14 } */ - [UnderSpecified nonexistent_method]; /* { dg-warning ".interface of class .UnderSpecified. not found" } */ - /* { dg-warning "no .\\+nonexistent_method. method found" "" { target *-*-* } 16 } */ -} - -/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */ -/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */ -/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-8.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-8.mm deleted file mode 100644 index 9857c63ff..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-8.mm +++ /dev/null @@ -1,30 +0,0 @@ -/* Tests of duplication. */ -/* { dg-do compile } */ - -@interface class1 -- (int) meth1; /* { dg-message "previous declaration" } */ -- (void) meth1; /* { dg-error "duplicate declaration of method .\\-meth1." } */ -@end - -@interface class2 -+ (void) meth1; /* { dg-message "previous declaration" } */ -+ (int) meth1; /* { dg-error "duplicate declaration of method .\\+meth1." } */ -@end - -@interface class3 -- (int) meth1; -@end - -@implementation class3 -- (int) meth1 { return 0; } /* { dg-error "previously defined here" } */ -- (int) meth1 { return 0; } /* { dg-error "redefinition of" } */ -@end - -@interface class4 -+ (void) meth1; -@end - -@implementation class4 -+ (void) meth1 {} /* { dg-error "previously defined here" } */ -+ (void) meth1 {} /* { dg-error "redefinition of" } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-9.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-9.mm deleted file mode 100644 index 4509c4aa4..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-9.mm +++ /dev/null @@ -1,33 +0,0 @@ -/* Test for lookup of class (factory) methods. */ -/* Author: Ziemowit Laski <zlaski@apple.com>. */ -/* { dg-do compile } */ - -@interface MyBase -- (void) rootInstanceMethod; -@end - -@interface MyIntermediate: MyBase -@end - -@interface MyDerived: MyIntermediate -- (void) instanceMethod; -+ (void) classMethod; -@end - -@implementation MyDerived -- (void) instanceMethod { -} - -+ (void) classMethod { /* If a class method is not found, the root */ - [self rootInstanceMethod]; /* class is searched for an instance method */ - [MyIntermediate rootInstanceMethod]; /* with the same name. */ - - [self instanceMethod]; /* { dg-warning ".MyDerived. may not respond to .\\+instanceMethod." } */ - [MyDerived instanceMethod]; /* { dg-warning ".MyDerived. may not respond to .\\+instanceMethod." } */ -} -@end - -/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */ -/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */ -/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */ - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-conflict-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-conflict-1.mm deleted file mode 100644 index 2cc96e4fd..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-conflict-1.mm +++ /dev/null @@ -1,26 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -/* Test that you can not declare two methods, in the same protocol, - with the same name but conflicting method signatures. */ - -@protocol MyProtocol -+ (int) method1: (int)x; /* { dg-message "previous declaration" } */ -+ (float) method1: (int)x; /* { dg-error "duplicate declaration of method .\\+method1." } */ - -- (int) method2: (int)x; /* { dg-message "previous declaration" } */ -- (int) method2: (float)x; /* { dg-error "duplicate declaration of method .\\-method2." } */ - -@optional -+ (int *) method3: (int)x; /* { dg-message "previous declaration" } */ -+ (int *) method3: (int **)x; /* { dg-error "duplicate declaration of method .\\+method3." } */ - -- (id) method4: (id)x; /* { dg-message "previous declaration" } */ -- (void) method4: (id)x; /* { dg-error "duplicate declaration of method .\\-method4." } */ -@end - -/* We don't test conflicting types between @required and @optional - methods, as that is tested in method-conflict-2. */ - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-conflict-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-conflict-2.mm deleted file mode 100644 index 0b0612d77..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-conflict-2.mm +++ /dev/null @@ -1,34 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -/* Test that you can not declare two methods, in the same protocol, - with the same name and method signature, but one as @required and - once as @optional. */ - -/* First, @required conflicting with @optional. */ -@protocol MyProtocol - -@optional -+ (void) method1: (id)x; /* { dg-message "previous declaration" } */ -- (id) method2: (long)x; /* { dg-message "previous declaration" } */ - -@required -+ (void) method1: (id)x; /* { dg-error "declared .@optional. and .@required. at the same time" } */ -- (id) method2: (long)x; /* { dg-error "declared .@optional. and .@required. at the same time" } */ - -@end - -/* Second, @optional conflicting with @required. */ -@protocol MyProtocol2 - -@required -+ (void) method3: (Class)x; /* { dg-message "previous declaration" } */ -- (id *) method4: (long)x; /* { dg-message "previous declaration" } */ - -@optional -+ (void) method3: (Class)x; /* { dg-error "declared .@optional. and .@required. at the same time" } */ -- (id *) method4: (long)x; /* { dg-error "declared .@optional. and .@required. at the same time" } */ - -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-conflict-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-conflict-3.mm deleted file mode 100644 index 73e80c948..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-conflict-3.mm +++ /dev/null @@ -1,63 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -/* Test that the compiler can correctly compare protocols in types of - method signatures. */ - -@protocol A, B, C; - -@interface MyClass -- (void) method1: (id)x; -- (void) method1: (id)x; /* Ok */ - -- (void) method2: (id <A>)x; -- (void) method2: (id <A>)x; /* Ok */ - -- (void) method3: (id <A, B>)x; -- (void) method3: (id <A, B>)x; /* Ok */ - -- (void) method4: (id <A, B>)x; -- (void) method4: (id <A, B, B>)x; /* Ok */ - -- (void) method5: (id <A, A, B>)x; -- (void) method5: (id <A, B, B>)x; /* Ok */ - -- (void) method6: (id <A, A, B, B, C, C>)x; -- (void) method6: (id <C, A, B>)x; /* Ok */ - -- (void) method7: (id)x; /* { dg-message "previous declaration" } */ -- (void) method7: (id <A>)x; /* { dg-error "duplicate declaration" } */ - -- (void) method8: (id <A>)x; /* { dg-message "previous declaration" } */ -- (void) method8: (id)x; /* { dg-error "duplicate declaration" } */ - -- (void) method9: (id <A>)x; /* { dg-message "previous declaration" } */ -- (void) method9: (id <B>)x; /* { dg-error "duplicate declaration" } */ - -- (void) methodA: (id <A>)x; /* { dg-message "previous declaration" } */ -- (void) methodA: (id <A, B>)x; /* { dg-error "duplicate declaration" } */ - -- (void) methodB: (id <A, B>)x; /* { dg-message "previous declaration" } */ -- (void) methodB: (id <A>)x; /* { dg-error "duplicate declaration" } */ - -- (void) methodC: (id <A, B, C>)x; /* { dg-message "previous declaration" } */ -- (void) methodC: (id <A, B>)x; /* { dg-error "duplicate declaration" } */ - -- (void) methodD: (id <A, B, C>)x; /* { dg-message "previous declaration" } */ -- (void) methodD: (id <A, B, A>)x; /* { dg-error "duplicate declaration" } */ - -- (void) methodE: (MyClass <A, B, C> *)x; /* { dg-message "previous declaration" } */ -- (void) methodE: (MyClass <A, B, A> *)x; /* { dg-error "duplicate declaration" } */ - -- (void) methodF: (MyClass <A, B, A> *)x; -- (void) methodF: (MyClass <A, B, A> *)x; /* Ok */ - -- (void) methodG: (MyClass *)x; /* { dg-message "previous declaration" } */ -- (void) methodG: (MyClass <A, B, C> *)x; /* { dg-error "duplicate declaration" } */ - -- (void) methodH: (MyClass <A, C>*)x; /* { dg-message "previous declaration" } */ -- (void) methodH: (MyClass *)x; /* { dg-error "duplicate declaration" } */ - -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-conflict-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-conflict-4.mm deleted file mode 100644 index e2aca6cc5..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-conflict-4.mm +++ /dev/null @@ -1,47 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -/* Test that the compiler can correctly compare protocols in types of - method signatures. In this test we look at protocols implementing - other protocols. The fact that one protocol implements another one - doesn't mean that they are identical. */ - -@protocol A -- (void) doSomething; -@end - -@protocol B <A> -- (void) doSomethingElse; -@end - -@protocol C <A> -- (void) doYetSomethingElse; -@end - -@interface MyClass2 -- (void) aMethod: (id <A>)x; /* { dg-message "previous declaration" } */ -- (void) aMethod: (id <B>)x; /* { dg-error "duplicate declaration" } */ - -- (void) bMethod: (id <B>)x; /* { dg-message "previous declaration" } */ -- (void) bMethod: (id <A>)x; /* { dg-error "duplicate declaration" } */ - -- (void) cMethod: (id <A, B>)x; -- (void) cMethod: (id <B>)x; /* Ok - because if you implement B, then you also implement A, so <B> == <A, B> */ - -- (void) dMethod: (id <A, B>)x; -- (void) dMethod: (id <B, A>)x; /* Ok */ - -- (void) eMethod: (id <A>)x; /* { dg-message "previous declaration" } */ -- (void) eMethod: (id <B, C>)x; /* { dg-error "duplicate declaration" } */ - -- (void) fMethod: (id <B, C>)x; /* { dg-message "previous declaration" } */ -- (void) fMethod: (id <A>)x; /* { dg-error "duplicate declaration" } */ - -- (void) gMethod: (id <A>)x; /* { dg-message "previous declaration" } */ -- (void) gMethod: (id <A, B, C>)x; /* { dg-error "duplicate declaration" } */ - -- (void) hMethod: (id <A, B, C>)x; /* { dg-message "previous declaration" } */ -- (void) hMethod: (id <A>)x; /* { dg-error "duplicate declaration" } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-lookup-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-lookup-1.mm deleted file mode 100644 index 47499c37c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-lookup-1.mm +++ /dev/null @@ -1,94 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, June 2011. */ -/* { dg-do compile } */ - -@class NotKnown; - -@protocol MyProtocol -+ (id) classMethod; -- (id) instanceMethod; -@end - -@protocol MyProtocol2 -+ (id) classMethod2; -- (id) instanceMethod2; -@end - -void test (Class x, Class <MyProtocol> y, id w, id <MyProtocol> z, NotKnown *a, NotKnown <MyProtocol> *b) -{ - /* "Class x" means that "x" responds to any class methods, and may - also respond to instance methods because instance methods of the - root class are class methods. */ - [x classMethod]; /* No warning here. */ - - [x instanceMethod]; /* No warning here. */ - - - /* "Class <MyProtocol> y" means that "y" responds to any class - methods specified in the protocol MyProtocol, but not to other - class or instance methods. If a class method is not found, an - instance method from the protocol may be used instead but that is - suspicious and gets a warning. */ - [y classMethod]; /* No warning here. */ - - [y instanceMethod]; /* { dg-warning "found .\\-instanceMethod. instead of .\\+instanceMethod. in protocol" } */ - - [y classMethod2]; /* { dg-warning ".\\+classMethod2. not found in protocol" } */ - - [y instanceMethod2]; /* { dg-warning ".\\+instanceMethod2. not found in protocol" } */ - - - /* If a class is specified by name, the @interface must be available - to check what it responds to. */ - [NotKnown classMethod]; /* { dg-warning ".interface of class .NotKnown. not found" } */ - - - /* "id w" means that "w" responds to anything, both class and - instance methods. */ - [w instanceMethod]; /* No warning here. */ - - [w instanceMethod2]; /* No warning here. */ - - [w classMethod]; /* No warning here. */ - - [w classMethod2]; /* No warning here. */ - - - /* "id <MyProtocol> z" means that "z" responds to any instance - methods in the protocol, but not class methods. To select class - methods, you use "Class <MyProtocol> z". */ - [z instanceMethod]; /* No warning here. */ - - [z instanceMethod2]; /* { dg-warning ".\\-instanceMethod2. not found in protocol" } */ - - [z classMethod]; /* { dg-warning ".\\-classMethod. not found in protocol" } */ - - [z classMethod2]; /* { dg-warning ".\\-classMethod2. not found in protocol" } */ - - - /* "NotKnown *a" means that "a" is an instance of NotKnown. Since - the programmer explicitly specified the class name, it must be - because they expect the compiler to do type-checking; the - @interface must be available to do this check, otherwise the - compiler does not know what "a" responds to. */ - [a instanceMethod]; /* { dg-warning ".interface of class .NotKnown. not found" } */ - - /* But, if you cast it to "id", then you're disabling type-checking - and the warnings should go away. */ - [(id)a instanceMethod]; /* No warning here. */ - - - /* "NotKnown <MyProtocol> *b" means that "a" is an instance of - NotKnown, and also implements protocol <MyProtocol>. If you send - a message that is part of the protocol, then the compiler can do - type-checking and all is fine. */ - [b instanceMethod]; - - /* But if you send a message that is not part of the protocol, then - you'll get a warning that the method can not be found in the - protocol. */ - [b instanceMethod2]; /* { dg-warning ".\\-instanceMethod2. not found in protocol" } */ - - /* But, if you cast it to "id", then you're disabling type-checking - and the warnings should go away. */ - [(id)b instanceMethod2]; /* No warning here. */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-namespace-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-namespace-1.mm deleted file mode 100644 index 6095f572c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-namespace-1.mm +++ /dev/null @@ -1,29 +0,0 @@ -/* Test for usage of namespace inside @implementation. */ -/* { dg-do compile } */ -@interface MyDocument -@end - -@implementation MyDocument - -// This deprecated usage works -static void foo1() { } - -// This preferred usage does _not_ work -namespace - { - void foo2() { } - } - -namespace STD - { - void foo3 () {} - } - -using namespace STD; - -- (void) GARF { - foo2(); - foo3(); -} - -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-namespace-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-namespace-2.mm deleted file mode 100644 index 3e1c9d123..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-namespace-2.mm +++ /dev/null @@ -1,25 +0,0 @@ -/* Test that qualified type is resolved to its proper type. */ -/* { dg-do compile } */ - -@interface Object -{ - int I[100]; -} -@end - -namespace HC -{ - -struct Object -{ - void test(); -}; - -} // namespace HC - -int main() -{ - HC::Object* object; - object->test(); // Must compile with no error - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/msg-in-protocol.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/msg-in-protocol.mm deleted file mode 100644 index 86b7c85a3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/msg-in-protocol.mm +++ /dev/null @@ -1,18 +0,0 @@ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@class Foo; - -@protocol Bar - -- (void)bang; - -@end - -void foo() -{ - Foo<Bar> *foo = nil; - [foo bang]; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/naming-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/naming-1.mm deleted file mode 100644 index 164c8225b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/naming-1.mm +++ /dev/null @@ -1,31 +0,0 @@ -/* Testing for detecting duplicate ivars. */ -/* { dg-do compile } */ - -typedef struct S { int i; } NSDictionary; - -@interface A -{ - NSDictionary * _userInfo1; /* { dg-message "previous declaration" } */ - NSDictionary * _userInfo2; /* { dg-message "previous declaration" } */ - NSDictionary * _userInfo3; /* { dg-message "previous declaration" } */ - NSDictionary * _userInfo4; /* { dg-message "previous declaration" } */ -} -@end - -@interface B : A -{ - NSDictionary * _userInfo1; /* { dg-error "duplicate instance variable" } */ - NSDictionary * _userInfo2; /* { dg-error "duplicate instance variable" } */ -} -@end - -@interface C : A -@end - -@interface D : C -{ - NSDictionary * _userInfo3; /* { dg-error "duplicate instance variable" } */ - NSDictionary * _userInfo4; /* { dg-error "duplicate instance variable" } */ -} -@end - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/naming-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/naming-2.mm deleted file mode 100644 index 49a83892f..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/naming-2.mm +++ /dev/null @@ -1,41 +0,0 @@ -/* Testing for detecting duplicate ivars. */ -/* { dg-do compile } */ - -typedef struct S { int i; } NSDictionary; - -@interface A -{ - NSDictionary * _userInfo; /* { dg-message "previous declaration" } */ - int i1; - int i2; - int i3; - int i4; - int i5; - int i6; - int i7; - NSDictionary * _userInfo1; /* { dg-message "previous declaration" } */ -} -@end - -@interface B : A -{ - NSDictionary * _userInfo1; /* { dg-error "duplicate instance variable" } */ - int ii1; - int ii2; - int ii3; - int ii4; - int ii5; - int ii6; - int ii7; -} -@end - -@interface C : A -@end - -@interface D : C -{ - NSDictionary * _userInfo; /* { dg-error "duplicate instance variable" } */ -} -@end - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/naming-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/naming-3.mm deleted file mode 100644 index dda15fc68..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/naming-3.mm +++ /dev/null @@ -1,15 +0,0 @@ -/* Testing for detecting duplicate ivars. */ -/* { dg-do compile } */ - -@interface A -{ - char x; /* { dg-message "previous declaration" } */ - char x; -} /* { dg-error "redeclaration" } */ -@end - -@interface B : A -{ - char y; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/naming-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/naming-4.mm deleted file mode 100644 index 22d0b7805..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/naming-4.mm +++ /dev/null @@ -1,145 +0,0 @@ -/* Testing for detecting duplicate ivars. */ -/* { dg-do compile } */ - -/* This check wants to force the compiler to use a hashtable. To do - so, we need lots of instance variable. */ - -@interface A -{ - /* That's 200 instance variables, which is enough to trigger the - hashtable check in the compiler. */ - char a0; char a1; char a2; char a3; char a4; char a5; char a6; char a7; char a8; char a9; - char b0; char b1; char b2; char b3; char b4; char b5; char b6; char b7; char b8; char b9; - char c0; char c1; char c2; char c3; char c4; char c5; char c6; char c7; char c8; char c9; - char d0; char d1; char d2; char d3; char d4; char d5; char d6; char d7; char d8; char d9; - char e0; char e1; char e2; char e3; char e4; char e5; char e6; char e7; char e8; char e9; - char f0; char f1; char f2; char f3; char f4; char f5; char f6; char f7; char f8; char f9; - char g0; char g1; char g2; char g3; char g4; char g5; char g6; char g7; char g8; char g9; - char h0; char h1; char h2; char h3; char h4; char h5; char h6; char h7; char h8; char h9; - char i0; char i1; char i2; char i3; char i4; char i5; char i6; char i7; char i8; char i9; - char j0; char j1; char j2; char j3; char j4; char j5; char j6; char j7; char j8; char j9; - char k0; char k1; char k2; char k3; char k4; char k5; char k6; char k7; char k8; char k9; - char l0; char l1; char l2; char l3; char l4; char l5; char l6; char l7; char l8; char l9; - char m0; char m1; char m2; char m3; char m4; char m5; char m6; char m7; char m8; char m9; - char n0; char n1; char n2; char n3; char n4; char n5; char n6; char n7; char n8; char n9; - char o0; char o1; char o2; char o3; char o4; char o5; char o6; char o7; char o8; char o9; - char p0; char p1; char p2; char p3; char p4; char p5; char p6; char p7; char p8; char p9; - char q0; char q1; char q2; char q3; char q4; char q5; char q6; char q7; char q8; char q9; - char r0; char r1; char r2; char r3; char r4; char r5; char r6; char r7; char r8; char r9; - char s0; char s1; char s2; char s3; char s4; char s5; char s6; char s7; char s8; char s9; - - char x; /* { dg-message "previous declaration" } */ - char x; - - char z; /* { dg-message "previous declaration" } */ - char k; /* { dg-message "previous declaration" } */ -} /* { dg-error "redeclaration" } */ -@end - -@interface B : A -{ - /* That's another 200 instance variables, which should be enough to - trigger the hashtable check in the compiler. */ - char Ba0; char Ba1; char Ba2; char Ba3; char Ba4; char Ba5; char Ba6; char Ba7; char Ba8; char Ba9; - char Bb0; char Bb1; char Bb2; char Bb3; char Bb4; char Bb5; char Bb6; char Bb7; char Bb8; char Bb9; - char Bc0; char Bc1; char Bc2; char Bc3; char Bc4; char Bc5; char Bc6; char Bc7; char Bc8; char Bc9; - char Bd0; char Bd1; char Bd2; char Bd3; char Bd4; char Bd5; char Bd6; char Bd7; char Bd8; char Bd9; - char Be0; char Be1; char Be2; char Be3; char Be4; char Be5; char Be6; char Be7; char Be8; char Be9; - char Bf0; char Bf1; char Bf2; char Bf3; char Bf4; char Bf5; char Bf6; char Bf7; char Bf8; char Bf9; - char Bg0; char Bg1; char Bg2; char Bg3; char Bg4; char Bg5; char Bg6; char Bg7; char Bg8; char Bg9; - char Bh0; char Bh1; char Bh2; char Bh3; char Bh4; char Bh5; char Bh6; char Bh7; char Bh8; char Bh9; - char Bi0; char Bi1; char Bi2; char Bi3; char Bi4; char Bi5; char Bi6; char Bi7; char Bi8; char Bi9; - char Bj0; char Bj1; char Bj2; char Bj3; char Bj4; char Bj5; char Bj6; char Bj7; char Bj8; char Bj9; - char Bk0; char Bk1; char Bk2; char Bk3; char Bk4; char Bk5; char Bk6; char Bk7; char Bk8; char Bk9; - char Bl0; char Bl1; char Bl2; char Bl3; char Bl4; char Bl5; char Bl6; char Bl7; char Bl8; char Bl9; - char Bm0; char Bm1; char Bm2; char Bm3; char Bm4; char Bm5; char Bm6; char Bm7; char Bm8; char Bm9; - char Bn0; char Bn1; char Bn2; char Bn3; char Bn4; char Bn5; char Bn6; char Bn7; char Bn8; char Bn9; - char Bo0; char Bo1; char Bo2; char Bo3; char Bo4; char Bo5; char Bo6; char Bo7; char Bo8; char Bo9; - char Bp0; char Bp1; char Bp2; char Bp3; char Bp4; char Bp5; char Bp6; char Bp7; char Bp8; char Bp9; - char Bq0; char Bq1; char Bq2; char Bq3; char Bq4; char Bq5; char Bq6; char Bq7; char Bq8; char Bq9; - char Br0; char Br1; char Br2; char Br3; char Br4; char Br5; char Br6; char Br7; char Br8; char Br9; - char Bs0; char Bs1; char Bs2; char Bs3; char Bs4; char Bs5; char Bs6; char Bs7; char Bs8; char Bs9; - - char y; /* { dg-message "previous declaration" } */ - char y; - - char z; /* { dg-error "duplicate instance variable" } */ -} /* { dg-error "redeclaration" } */ -@end - -@interface C : A -{ - char w; /* { dg-message "previous declaration" } */ -} -@end - -@interface D : C -{ - /* That's another 200 instance variables, which should be enough to - trigger the hashtable check in the compiler. */ - char Da0; char Da1; char Da2; char Da3; char Da4; char Da5; char Da6; char Da7; char Da8; char Da9; - char Db0; char Db1; char Db2; char Db3; char Db4; char Db5; char Db6; char Db7; char Db8; char Db9; - char Dc0; char Dc1; char Dc2; char Dc3; char Dc4; char Dc5; char Dc6; char Dc7; char Dc8; char Dc9; - char Dd0; char Dd1; char Dd2; char Dd3; char Dd4; char Dd5; char Dd6; char Dd7; char Dd8; char Dd9; - char De0; char De1; char De2; char De3; char De4; char De5; char De6; char De7; char De8; char De9; - char Df0; char Df1; char Df2; char Df3; char Df4; char Df5; char Df6; char Df7; char Df8; char Df9; - char Dg0; char Dg1; char Dg2; char Dg3; char Dg4; char Dg5; char Dg6; char Dg7; char Dg8; char Dg9; - char Dh0; char Dh1; char Dh2; char Dh3; char Dh4; char Dh5; char Dh6; char Dh7; char Dh8; char Dh9; - char Di0; char Di1; char Di2; char Di3; char Di4; char Di5; char Di6; char Di7; char Di8; char Di9; - char Dj0; char Dj1; char Dj2; char Dj3; char Dj4; char Dj5; char Dj6; char Dj7; char Dj8; char Dj9; - char Dk0; char Dk1; char Dk2; char Dk3; char Dk4; char Dk5; char Dk6; char Dk7; char Dk8; char Dk9; - char Dl0; char Dl1; char Dl2; char Dl3; char Dl4; char Dl5; char Dl6; char Dl7; char Dl8; char Dl9; - char Dm0; char Dm1; char Dm2; char Dm3; char Dm4; char Dm5; char Dm6; char Dm7; char Dm8; char Dm9; - char Dn0; char Dn1; char Dn2; char Dn3; char Dn4; char Dn5; char Dn6; char Dn7; char Dn8; char Dn9; - char Do0; char Do1; char Do2; char Do3; char Do4; char Do5; char Do6; char Do7; char Do8; char Do9; - char Dp0; char Dp1; char Dp2; char Dp3; char Dp4; char Dp5; char Dp6; char Dp7; char Dp8; char Dp9; - char Dq0; char Dq1; char Dq2; char Dq3; char Dq4; char Dq5; char Dq6; char Dq7; char Dq8; char Dq9; - char Dr0; char Dr1; char Dr2; char Dr3; char Dr4; char Dr5; char Dr6; char Dr7; char Dr8; char Dr9; - char Ds0; char Ds1; char Ds2; char Ds3; char Ds4; char Ds5; char Ds6; char Ds7; char Ds8; char Ds9; - - char y; /* { dg-message "previous declaration" } */ - char y; - - char w; /* { dg-error "duplicate instance variable" } */ - char k; /* { dg-error "duplicate instance variable" } */ -} /* { dg-error "redeclaration" } */ -@end - -/* Finally, make sure that anonymous instance variables don't trigger - warnings. This is the same as the anon-1.m testcase, but forcing - the hashtable check. */ -@interface E : D -{ - char : 1; - char : 2; -} -@end - -@interface F : E -{ - /* That's another 200 instance variables, which should be enough to - trigger the hashtable check in the compiler. */ - char Fa0; char Fa1; char Fa2; char Fa3; char Fa4; char Fa5; char Fa6; char Fa7; char Fa8; char Fa9; - char Fb0; char Fb1; char Fb2; char Fb3; char Fb4; char Fb5; char Fb6; char Fb7; char Fb8; char Fb9; - char Fc0; char Fc1; char Fc2; char Fc3; char Fc4; char Fc5; char Fc6; char Fc7; char Fc8; char Fc9; - char Fd0; char Fd1; char Fd2; char Fd3; char Fd4; char Fd5; char Fd6; char Fd7; char Fd8; char Fd9; - char Fe0; char Fe1; char Fe2; char Fe3; char Fe4; char Fe5; char Fe6; char Fe7; char Fe8; char Fe9; - char Ff0; char Ff1; char Ff2; char Ff3; char Ff4; char Ff5; char Ff6; char Ff7; char Ff8; char Ff9; - char Fg0; char Fg1; char Fg2; char Fg3; char Fg4; char Fg5; char Fg6; char Fg7; char Fg8; char Fg9; - char Fh0; char Fh1; char Fh2; char Fh3; char Fh4; char Fh5; char Fh6; char Fh7; char Fh8; char Fh9; - char Fi0; char Fi1; char Fi2; char Fi3; char Fi4; char Fi5; char Fi6; char Fi7; char Fi8; char Fi9; - char Fj0; char Fj1; char Fj2; char Fj3; char Fj4; char Fj5; char Fj6; char Fj7; char Fj8; char Fj9; - char Fk0; char Fk1; char Fk2; char Fk3; char Fk4; char Fk5; char Fk6; char Fk7; char Fk8; char Fk9; - char Fl0; char Fl1; char Fl2; char Fl3; char Fl4; char Fl5; char Fl6; char Fl7; char Fl8; char Fl9; - char Fm0; char Fm1; char Fm2; char Fm3; char Fm4; char Fm5; char Fm6; char Fm7; char Fm8; char Fm9; - char Fn0; char Fn1; char Fn2; char Fn3; char Fn4; char Fn5; char Fn6; char Fn7; char Fn8; char Fn9; - char Fo0; char Fo1; char Fo2; char Fo3; char Fo4; char Fo5; char Fo6; char Fo7; char Fo8; char Fo9; - char Fp0; char Fp1; char Fp2; char Fp3; char Fp4; char Fp5; char Fp6; char Fp7; char Fp8; char Fp9; - char Fq0; char Fq1; char Fq2; char Fq3; char Fq4; char Fq5; char Fq6; char Fq7; char Fq8; char Fq9; - char Fr0; char Fr1; char Fr2; char Fr3; char Fr4; char Fr5; char Fr6; char Fr7; char Fr8; char Fr9; - char Fs0; char Fs1; char Fs2; char Fs3; char Fs4; char Fs5; char Fs6; char Fs7; char Fs8; char Fs9; - - char : 1; - char : 2; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/no-extra-load.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/no-extra-load.mm deleted file mode 100644 index 815ee789e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/no-extra-load.mm +++ /dev/null @@ -1,24 +0,0 @@ -// Radar 3926484 - -// { dg-do compile } - -#include "../objc-obj-c++-shared/TestsuiteObject.h" -#include <iostream> - -@interface Greeter : TestsuiteObject -- (void) greet: (const char *)msg; -@end - -@implementation Greeter -- (void) greet: (const char *)msg { std::cout << msg; } -@end - -int -main () -{ - std::cout << "Hello from C++\n"; - Greeter *obj = [Greeter new]; - [obj greet: "Hello from Objective-C\n"]; -} - -/* { dg-final { scan-assembler-not "L_objc_msgSend\\\$non_lazy_ptr" } } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/objc-gc-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/objc-gc-3.mm deleted file mode 100644 index 430e5832e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/objc-gc-3.mm +++ /dev/null @@ -1,65 +0,0 @@ -/* Test looking up fields in superclasses in the context of write-barriers - (where component references get rewritten). */ -/* Contributed by Ziemowit Laski <zlaski@apple.com> */ - -/* { dg-do compile } */ -/* { dg-options "-fobjc-gc" } */ -/* { dg-prune-output "cc1objplus: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" -#include "../objc-obj-c++-shared/runtime.h" - -@class MyWindow; - -@interface MyDocument : TestsuiteObject { - MyWindow *_window; -} -@end - -@interface MyFileDocument : MyDocument { - struct { - unsigned int autoClose:1; - unsigned int openForUI:1; - unsigned int isClosing:1; - unsigned int needsDiskCheck:1; - unsigned int isWritable:1; - unsigned int representsFileOnDisk:1; - unsigned int RESERVED:26; - } _fdFlags; -} -@end - -@interface MyTextFileDocument : MyFileDocument { - TestsuiteObject *_textStorage; - struct __tfdFlags { - unsigned int immutable:1; - unsigned int lineEnding:2; - unsigned int isClosing:1; - unsigned int settingsAreSet:1; - unsigned int usesTabs:1; - unsigned int isUTF8WithBOM:1; - unsigned int wrapsLines:1; - unsigned int usingDefaultLanguage:1; - unsigned int RESERVED:23; - } _tfdFlags; - int _tabWidth; - int _indentWidth; -} -@end - -@interface MyRTFFileDocument : MyTextFileDocument -- (BOOL)readFromFile:(const char *)fileName ofType:(const char *)type; -@end - -@implementation MyRTFFileDocument -- (BOOL)readFromFile:(const char *)fileName ofType:(const char *)type { - if (_textStorage && fileName) { - [_textStorage free]; - return YES; - } else if (type) { - _textStorage = [MyRTFFileDocument new]; - return NO; - } - return (fileName && type); -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/overload-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/overload-1.mm deleted file mode 100644 index d4999897d..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/overload-1.mm +++ /dev/null @@ -1,11 +0,0 @@ -// Make sure we can overload on ObjC classes -// Radar 3960754 - -// { dg-do compile } - -@class A, B; - -struct X { - void call(A*); - void call(B*); -}; diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pr23709.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pr23709.mm deleted file mode 100644 index 018b53ac4..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pr23709.mm +++ /dev/null @@ -1,12 +0,0 @@ -/* { dg-do compile } */ - -@interface A -+(void)method: (int)parameter {} /* { dg-error "expected" } */ -@end - -@implementation A -+(void)method: (int)parameter -{ - *parameter; /* { dg-error "invalid type argument" } */ -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pr24393.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pr24393.mm deleted file mode 100644 index 269d84d9c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pr24393.mm +++ /dev/null @@ -1,10 +0,0 @@ -/* { dg-do compile } */ -#include <objc/objc.h> - -@interface Foo -{ - Class isa; -} -- (void) doSomething:(id object; /* { dg-error "xpected .\\)." } */ -- (void) someOtherMethod; -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pr28049.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pr28049.mm deleted file mode 100644 index d5ba4a10b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pr28049.mm +++ /dev/null @@ -1,2 +0,0 @@ -/* { dg-do compile } */ -+ /* { dg-error "expected" } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pr45735.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pr45735.mm deleted file mode 100644 index 395698bdb..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pr45735.mm +++ /dev/null @@ -1,4 +0,0 @@ -/* { dg-do compile } */ -@interface Fraction --(void) setNumerator: (int) :(int) ; /* { dg-error "expected identifier" } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pr48187.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pr48187.mm deleted file mode 100644 index 750710b1f..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pr48187.mm +++ /dev/null @@ -1,39 +0,0 @@ -/* { dg-do compile } */ - -@interface A -{ - ] /* { dg-error "xpected" } */ -} -@end - -@interface B -{ - ]; /* { dg-error "xpected" } */ -} -@end - -@interface C -{ - ]; /* { dg-error "xpected" } */ - int x; -} -@end - -@interface D -{ - ( -} /* { dg-error "xpected" } */ -@end - -@interface E -{ - (; /* { dg-error "xpected" } */ -} -@end - -@interface F -{ - (; /* { dg-error "xpected" } */ - int x; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pragma-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pragma-1.mm deleted file mode 100644 index 3d3539ed3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pragma-1.mm +++ /dev/null @@ -1,11 +0,0 @@ -/* It is OK to use #pragma inside @interface body. This test checks that. */ -/* Devang Patel <dpatel@apple.com>. */ - -@interface A -{ - int p; -} -+(int) foo; -#pragma Mark foobar --(int) bar; -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pragma-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pragma-2.mm deleted file mode 100644 index 14c4d7928..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/pragma-2.mm +++ /dev/null @@ -1,23 +0,0 @@ -/* It is OK to use #pragma inside @implementation body. This test checks that. */ -/* Ziemowit Laski <zlaski@apple.com>. */ - -@interface A -{ - int p; -} -+(int) foo; --(int) bar; -@end - -@implementation A -#pragma mark - -#pragma mark init / dealloc -+ (int)foo { - return 1; -} -#pragma mark - -#pragma mark Private Functions -- (int)bar { - return 2; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/private-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/private-1.mm deleted file mode 100644 index 0c25aea55..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/private-1.mm +++ /dev/null @@ -1,58 +0,0 @@ -/* Test errors for accessing @private and @protected variables. */ -/* Based on work by: Nicola Pero <nicola@brainstorm.co.uk>. */ -/* { dg-do compile } */ -#include <objc/objc.h> - -@interface MySuperClass -{ -@private - int _private; - -@protected - int _protected; - -@public - int _public; -} -- (void) test; -@end - -@implementation MySuperClass -- (void) test -{ - _private = 12; /* Ok */ - _protected = 12; /* Ok */ - _public = 12; /* Ok */ -} -@end - - -@interface MyClass : MySuperClass -@end - -@implementation MyClass -- (void) test -{ - /* Private variables simply don't exist in the subclass. */ - _private = 12; /* { dg-error "instance variable \\'_private\\' is declared private" } */ - - _protected = 12; /* Ok */ - _public = 12; /* Ok */ -} -@end - -int main (void) -{ - MyClass *m = nil; - - if (m != nil) - { - int access; - - access = m->_private; /* { dg-warning "is @private" } */ - access = m->_protected; /* { dg-warning "is @protected" } */ - access = m->_public; /* Ok */ - } - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/private-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/private-2.mm deleted file mode 100644 index 3e6ff118d..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/private-2.mm +++ /dev/null @@ -1,56 +0,0 @@ -/* Test warnings for shadowing instance variables. */ -/* Based on work by: Nicola Pero <nicola@brainstorm.co.uk>. */ - -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MySuperClass -{ -@private - int _private; - -@protected - int _protected; - -@public - int _public; -} -- (void) test; -@end - -@implementation MySuperClass -- (void) test -{ - /* FIXME: I wonder if the warnings shouldn't be better generated - when the variable is declared, rather than used! */ - int _private = 12; - int _protected = 12; - int _public = 12; - int a; - - a = _private; /* { dg-warning "hides instance variable" } */ - a = _protected; /* { dg-warning "hides instance variable" } */ - a = _public; /* { dg-warning "hides instance variable" } */ -} -@end - - -@interface MyClass : MySuperClass -@end - -@implementation MyClass -- (void) test -{ - int _private = 12; - int _protected = 12; - int _public = 12; - int a; - - /* The private variable can be shadowed without warnings, because - * it's invisible, and not accessible, to the subclass! */ - a = _private; /* Ok */ - a = _protected; /* { dg-warning "hides instance variable" } */ - a = _public; /* { dg-warning "hides instance variable" } */ -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-1.mm deleted file mode 100644 index 1b945bd44..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-1.mm +++ /dev/null @@ -1,20 +0,0 @@ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; -} -@property; /* { dg-error "expected identifier" } */ -@property int; /* { dg-error "expected identifier" } */ -@property int a; -@property int b, c; -@property () int d; /* { dg-error "expected identifier" } */ -@property (readonly) int e; -@property (readonly,) int f; /* { dg-error "expected identifier" } */ -@property (xxx) int g; /* { dg-error "unknown property attribute" } */ -@property (readonly,xxx) int h; /* { dg-error "unknown property attribute" } */ -@property ( int i; /* { dg-error "expected identifier" } */ - /* { dg-error "expected ... " "" { target *-*-* } 18 } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-10.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-10.mm deleted file mode 100644 index 010c41bd3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-10.mm +++ /dev/null @@ -1,97 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test the property syntax in a number of expressions. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int a; -} -@property (nonatomic) int a; -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@synthesize a; -@end - -int -test (int g) -{ - return g; -} - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - MyRootClass *object2 = [[MyRootClass alloc] init]; - - object.a = 14; - object.a = object.a + object.a; - - if (object.a != 28) - abort (); - - object.a = 99; - object.a++; - - if (object.a != 100) - abort (); - - object.a = 99; - object.a *= 2; - - if (object.a != 198) - abort (); - - { - int f = object.a; - - if (f != 198) - abort (); - - if (f != object.a) - abort (); - - if (object.a != f) - abort (); - - object.a = object.a; - - if (object.a != 198) - abort (); - } - - if (test (object.a) != 198) - abort (); - - object.a = -object.a; - - if (object.a != -198) - abort (); - - for (object.a = 0; object.a < 99; object.a++) - object2.a = object.a; - - if (object2.a != object.a - 1) - abort (); - - if (object2.a != 98) - abort (); - - if (object.a != 99) - abort (); - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-11.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-11.mm deleted file mode 100644 index 51c402346..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-11.mm +++ /dev/null @@ -1,44 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test that properties are found even if implemented in superclasses. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int a; -} -@property (nonatomic) int a; -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@synthesize a; -@end - -@interface MySubClass : MyRootClass -@end - -@implementation MySubClass -@end - -int main (void) -{ - MySubClass *object = [[MySubClass alloc] init]; - - object.a = 40; - if (object.a != 40) - abort (); - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-12.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-12.mm deleted file mode 100644 index 89001e73b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-12.mm +++ /dev/null @@ -1,47 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test atomic, assign synthesized methods. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int a; - id b; -} -@property int a; -@property (assign) id b; -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@synthesize a; -@synthesize b; -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - - object.a = 40; - if (object.a != 40) - abort (); - - object.b = object; - if (object.b != object) - abort (); - - return (0); -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-13.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-13.mm deleted file mode 100644 index 6786c3aa8..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-13.mm +++ /dev/null @@ -1,72 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test retain and copy synthesized methods. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int copy_count; - id a; - id b; -} -@property (copy) id a; -@property (retain) id b; -+ (id) initialize; -+ (id) alloc; -- (id) init; -- (id) copyWithZone: (void *)zone; -- (int) copyCount; -- (id) autorelease; -- (oneway void) release; -- (id) retain; -@end - -/* This class implements copyWithZone, which doesn't do anything other - than increasing a counter of how many copies were made. */ -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -- (id) copyWithZone: (void *)zone { copy_count++; return self; } -- (int) copyCount { return copy_count; } -- (id) autorelease { return self; } -- (oneway void) release { return; } -- (id) retain { return self; } -@synthesize a; -@synthesize b; -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - MyRootClass *argument = [[MyRootClass alloc] init]; - - /* This should copy argument. */ - object.a = argument; - if (object.a != argument) - abort (); - - /* Test that it was copied. */ - if ([object.a copyCount] != 1) - abort (); - - /* We just test that the retain accessors seem to work and that they - don't copy. We don't test that retain was actually called, - because if garbage collection is enabled, it may never be - called! */ - object.b = argument; - if (object.b != argument) - abort (); - - /* Test that it was not copied. */ - if ([object.b copyCount] != 1) - abort (); - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-14.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-14.mm deleted file mode 100644 index a9068ba89..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-14.mm +++ /dev/null @@ -1,20 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; -} - -/* Test the warnings on 'assign'. */ -@property id property_a; /* { dg-warning "object property .property.a. has no .assign., .retain. or .copy. attribute" } */ - /* { dg-message ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 12 } */ - -@property (readonly) id property_b; /* No 'assign' warning (assign semantics do not matter if the property is readonly). */ -@property id *property_c; /* No 'assign' warning (the type is not an Objective-C object). */ -@property Class property_d; /* No 'assign' warning (Classes are static objects so assign semantics do not matter for them). */ -@property MyRootClass *property_e; /* { dg-warning "object property .property.e. has no .assign., .retain. or .copy. attribute" } */ - /* { dg-message ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 18 } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-15.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-15.mm deleted file mode 100644 index ef5344246..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-15.mm +++ /dev/null @@ -1,20 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ -/* { dg-options "-Wno-property-assign-default" } */ - -#include <objc/objc.h> - -/* Test that -Wno-property-assign-default turns off all "object - property xxx has no assign, return or copy attribute" warnings. */ - -@interface MyRootClass -{ - Class isa; -} - -@property id property_a; /* Would normally generate a warning. */ -@property (readonly) id property_b; -@property id *property_c; -@property Class property_d; -@property MyRootClass *property_e; /* Would normally generate a warning. */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-16.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-16.mm deleted file mode 100644 index 6a9856b90..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-16.mm +++ /dev/null @@ -1,46 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -/* Test that if you have a property declared in a class and a - sub-class, the attributes match. */ - -@interface MyRootClass -{ - Class isa; -} -@property (assign) id a; /* { dg-message "originally specified here" } */ -@property (retain) id b; /* { dg-message "originally specified here" } */ -@property int c; /* { dg-message "originally specified here" } */ -@property (nonatomic) int d; /* { dg-message "originally specified here" } */ -@property int e; /* { dg-message "originally specified here" } */ -@property int f; /* { dg-message "originally specified here" } */ -@property int g; /* { dg-message "originally specified here" } */ -@property (readonly) int h; /* Ok */ -@property (readonly,getter=getMe) int i; /* { dg-message "originally specified here" } */ -@end - -@interface MyClass : MyRootClass -@property (assign) id a; -@property (retain) id b; -@property int c; -@property (nonatomic) int d; -@property int e; -@property int f; -@property int g; -@property (readonly) int h; -@property (readonly,getter=getMe) int i; -@end - -@interface MyClass2 : MyRootClass -@property (retain) id a; /* { dg-warning "assign semantics attributes of property .a. conflict with previous declaration" } */ -@property (assign) id b; /* { dg-warning "assign semantics attributes of property .b. conflict with previous declaration" } */ -@property (nonatomic) int c; /* { dg-warning ".nonatomic. attribute of property .c. conflicts with previous declaration" } */ -@property int d; /* { dg-warning ".nonatomic. attribute of property .d. conflicts with previous declaration" } */ -@property (setter=setX:) int e; /* { dg-warning ".setter. attribute of property .e. conflicts with previous declaration" } */ -@property (getter=x) int f; /* { dg-warning ".getter. attribute of property .f. conflicts with previous declaration" } */ -@property (readonly) int g; /* { dg-warning ".readonly. attribute of property .g. conflicts with previous declaration" } */ -@property (readwrite) int h; /* Ok */ -@property (readonly) int i; /* { dg-warning ".getter. attribute of property .i. conflicts with previous declaration" } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-17.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-17.mm deleted file mode 100644 index efb62d6f7..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-17.mm +++ /dev/null @@ -1,98 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -/* Test that if you have a property declared in a class, with - getters/setters in the superclass, there are no warnings. */ - -@interface MyRootClass -{ - Class isa; - int myCount; - int myCount2; - int myCount3; -} -- (int)count; -- (void)setCount: (int)number; -- (int)count2; -- (void)setCount2: (int)number; -- (int)count3; -@end - -@implementation MyRootClass -- (int) count -{ - return myCount; -} -- (void) setCount: (int)number -{ - myCount = number; -} -- (int) count2 -{ - return myCount2; -} -- (void) setCount2: (int)number -{ - myCount2 = number; -} -- (int) count3 -{ - return myCount3; -} -@end - - - -/* Try with a subclass. */ -@interface MyClass : MyRootClass -@property int count; -@end - -@implementation MyClass -@end /* No warnings. */ - - - -/* Try with a category. */ -@interface MyRootClass (count) -@property int count; -@end - -@implementation MyRootClass (count) -@end /* No warnings. */ - - - -/* Try with a category of a subclass. */ -@interface MyClass2 : MyClass -@end - -@implementation MyClass2 -@end - -@interface MyClass2 (count2) -@property int count2; -@end - -@implementation MyClass2 (count2) -@end /* No warnings. */ - - - -/* Now, try with a category of a subclass, but with a missing setter, - which should generate a warning. */ -@interface MyClass3 : MyClass -@end - -@implementation MyClass3 -@end - -@interface MyClass3 (count3) -@property int count3; -@end - -@implementation MyClass3 (count3) -@end /* { dg-warning "incomplete implementation" } */ -/* { dg-warning "method definition for .-setCount3:. not found" "" { target *-*-* } 97 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-18.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-18.mm deleted file mode 100644 index d31821098..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-18.mm +++ /dev/null @@ -1,46 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -/* Test that if you have a property declared in a class and a - category, the attributes match. This is almost the same as - at-property-16.m, but for a category. It is a separate file - because it is difficult to test multiple messages for the same - line. */ - -@interface MyRootClass -{ - Class isa; -} -@property (assign) id a; -@property (retain) id b; -@property int c; -@property (nonatomic) int d; -@property int e; -@property int f; -@property int g; -@property (readonly) int h; -@property (readonly,getter=getMe) int i; -@property (nonatomic) float j; -@end -@interface MyRootClass (Category) -@property (retain) id a; /* { dg-warning "assign semantics attributes of property .a. conflict with previous declaration" } */ - /* { dg-message "originally specified here" "" { target *-*-* } 16 } */ -@property (assign) id b; /* { dg-warning "assign semantics attributes of property .b. conflict with previous declaration" } */ - /* { dg-message "originally specified here" "" { target *-*-* } 17 } */ -@property (nonatomic) int c; /* { dg-warning ".nonatomic. attribute of property .c. conflicts with previous declaration" } */ - /* { dg-message "originally specified here" "" { target *-*-* } 18 } */ -@property int d; /* { dg-warning ".nonatomic. attribute of property .d. conflicts with previous declaration" } */ - /* { dg-message "originally specified here" "" { target *-*-* } 19 } */ -@property (setter=setX:) int e; /* { dg-warning ".setter. attribute of property .e. conflicts with previous declaration" } */ - /* { dg-message "originally specified here" "" { target *-*-* } 20 } */ -@property (getter=x) int f; /* { dg-warning ".getter. attribute of property .f. conflicts with previous declaration" } */ - /* { dg-message "originally specified here" "" { target *-*-* } 21 } */ -@property (readonly) int g; /* { dg-warning ".readonly. attribute of property .g. conflicts with previous declaration" } */ - /* { dg-message "originally specified here" "" { target *-*-* } 22 } */ -@property (readwrite) int h; /* Ok */ -@property (readonly) int i; /* { dg-warning ".getter. attribute of property .i. conflicts with previous declaration" } */ - /* { dg-message "originally specified here" "" { target *-*-* } 24 } */ -@property (nonatomic) float j; /* Ok */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-19.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-19.mm deleted file mode 100644 index be898e218..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-19.mm +++ /dev/null @@ -1,74 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test looking up a @property in a protocol of a category of a superclass. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int a; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@end - -/* Use a different getter/setter, so that the only way to compile - object.count is to find the actual @property. */ -@protocol count -@property (getter=number, setter=setNumber:) int count; -@end - -@interface MySubClass : MyRootClass -- (int) testMe; -@end - -@interface MySubClass (Category) <count> -@end - -@implementation MySubClass (Category) -- (int) number -{ - return a; -} -- (void) setNumber: (int)count -{ - a = count; -} -@end - -@implementation MySubClass -- (int) testMe -{ - self.count = 400; - if (self.count != 400) - abort (); - - return self.count; -} -@end - -int main (void) -{ - MySubClass *object = [[MySubClass alloc] init]; - - object.count = 44; - if (object.count != 44) - abort (); - - if ([object testMe] != 400) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-2.mm deleted file mode 100644 index d8433dffc..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-2.mm +++ /dev/null @@ -1,13 +0,0 @@ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; -} -@property int name __attribute__((deprecated)); -@property int table __attribute__((xxx)); /* { dg-warning ".xxx. attribute directive ignored" } */ -@property void function (void); /* { dg-error "declaration of function .function. in invalid context" } */ -@property typedef int j; /* { dg-error "invalid type for property" } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-20.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-20.mm deleted file mode 100644 index 85f5aecd1..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-20.mm +++ /dev/null @@ -1,81 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -/* Test that if you have a property declared in a class and a - sub-class, the types match (unless it's a readonly property, in - which case a "specialization" is enough). */ - -@protocol MyProtocolA -- (void) doNothingA; -@end - -@protocol MyProtocolB -- (void) doNothingB; -@end - -@interface MyRootClass -{ - Class isa; -} -@end - -@interface MySubClass1 : MyRootClass -@end - -@interface MySubClass2 : MyRootClass -@end - -@interface MySubClass3 : MyRootClass <MyProtocolA> -@end - -@interface MySubClass4 : MySubClass1 -@end - -/* Now, the test. */ - -@interface MyClass : MyRootClass -{ } -@property (assign) id <MyProtocolA> a; /* { dg-message "originally specified here" } */ -@property int b; /* { dg-message "originally specified here" } */ -@property float c; /* { dg-message "originally specified here" } */ -@property (assign) MyRootClass *d; /* { dg-message "originally specified here" } */ -@property (assign) MySubClass1 *e; /* { dg-message "originally specified here" } */ -@property (assign, readonly) MySubClass1 *f; /* { dg-message "originally specified here" } */ -@property (assign) MySubClass3 *g; /* { dg-message "originally specified here" } */ -@property (assign, readonly) MySubClass3 *h; /* { dg-message "originally specified here" } */ -@end - -/* The following are all OK because they are identical. */ -@interface MyClass2 : MyClass -{ } -@property (assign) id a; -@property int b; -@property float c; -@property (assign) MyRootClass *d; -@property (assign) MySubClass1 *e; -@property (assign, readonly) MySubClass1 *f; -@property (assign) MySubClass3 *g; -@property (assign, readonly) MySubClass3 *h; -@end - -/* The following are not OK. */ -@interface MyClass3 : MyClass -{ } -@property (assign) MySubClass1 *a; /* { dg-warning "type of property .a. conflicts with previous declaration" } */ -@property float b; /* { dg-warning "type of property .b. conflicts with previous declaration" } */ -@property int c; /* { dg-warning "type of property .c. conflicts with previous declaration" } */ -@property (assign) id d; /* { dg-warning "type of property .d. conflicts with previous declaration" } */ -@property (assign) MyRootClass *e; /* { dg-warning "type of property .e. conflicts with previous declaration" } */ -@property (assign, readonly) MyRootClass *f; /* { dg-warning "type of property .f. conflicts with previous declaration" } */ -@property (assign) MySubClass2 *g; /* { dg-warning "type of property .g. conflicts with previous declaration" } */ -@property (assign, readonly) MySubClass2 *h; /* { dg-warning "type of property .h. conflicts with previous declaration" } */ -@end - -/* The following are OK. */ -@interface MyClass4 : MyClass -{ } -@property (assign, readonly) MySubClass4 *f; -@property (assign, readonly) MySubClass3 <MyProtocolB> *h; -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-21.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-21.mm deleted file mode 100644 index d1f54b1cd..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-21.mm +++ /dev/null @@ -1,23 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@protocol MyProtocol -- (void) message; -@end - -@interface MyRootClass -{ - Class isa; -} - -/* Test the warnings on 'assign' with protocols. */ -@property id <MyProtocol> property_a; /* { dg-warning "object property .property.a. has no .assign., .retain. or .copy. attribute" } */ - /* { dg-message ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 16 } */ - -@property MyRootClass <MyProtocol> *property_b; /* { dg-warning "object property .property.b. has no .assign., .retain. or .copy. attribute" } */ - /* { dg-message ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 19 } */ - -@property Class <MyProtocol> property_c; /* No 'assign' warning (Classes are static objects so assign semantics do not matter for them). */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-22.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-22.mm deleted file mode 100644 index 03b3d0bb4..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-22.mm +++ /dev/null @@ -1,172 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test properties of different types. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -enum colour { Red, Black }; - -@interface MyRootClass -{ - Class isa; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -+ (Class) class; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -+ (Class) class { return self; } -@end - - -@interface MyClass : MyRootClass -{ - /* A bunch of C types. */ - char pchar; - short pshort; - int pint; - long plong; - float pfloat; - double pdouble; - enum colour penum; - - /* A bunch of pointers to C types. */ - char *pcharp; - short *pshortp; - int *pintp; - long *plongp; - float *pfloatp; - double *pdoublep; - enum colour *penump; - - /* A bunch of Objective-C types. */ - id pid; - Class pclass; - MyClass *pMyClassp; -} -@property (assign) char pchar; -@property (assign) short pshort; -@property (assign) int pint; -@property (assign) long plong; -@property (assign) float pfloat; -@property (assign) double pdouble; -@property (assign) enum colour penum; - -@property (assign) char *pcharp; -@property (assign) short *pshortp; -@property (assign) int *pintp; -@property (assign) long *plongp; -@property (assign) float *pfloatp; -@property (assign) double *pdoublep; -@property (assign) enum colour *penump; - -@property (assign) id pid; -@property (assign) Class pclass; -@property (assign) MyClass *pMyClassp; -@end - -@implementation MyClass -@synthesize pchar; -@synthesize pshort; -@synthesize pint; -@synthesize plong; -@synthesize pfloat; -@synthesize pdouble; -@synthesize penum; - -@synthesize pcharp; -@synthesize pshortp; -@synthesize pintp; -@synthesize plongp; -@synthesize pfloatp; -@synthesize pdoublep; -@synthesize penump; - -@synthesize pid; -@synthesize pclass; -@synthesize pMyClassp; -@end - -int main (void) -{ - MyClass *object = [[MyClass alloc] init]; - - object.pchar = 1; - if (object.pchar != 1) - abort (); - - object.pshort = 2; - if (object.pshort != 2) - abort (); - - object.pint = 3; - if (object.pint != 3) - abort (); - - object.plong = 4; - if (object.plong != 4) - abort (); - - object.pfloat = 0; - if (object.pfloat != 0) - abort (); - - object.pdouble = 0; - if (object.pdouble != 0) - abort (); - - object.penum = Black; - if (object.penum != Black) - abort (); - - object.pcharp = (char *)0; - if (object.pcharp != 0) - abort (); - - object.pshortp = (short *)0; - if (object.pshortp != 0) - abort (); - - object.pintp = (int *)0; - if (object.pintp != 0) - abort (); - - object.plongp = (long *)0; - if (object.plongp != 0) - abort (); - - object.pfloatp = (float *)0; - if (object.pfloatp != 0) - abort (); - - object.pdoublep = (double *)0; - if (object.pdoublep != 0) - abort (); - - object.penump = (enum colour *)0; - if (object.penump != 0) - abort (); - - object.pid = object; - if (object.pid != object) - abort (); - - object.pclass = [MyClass class]; - if (object.pclass != [MyClass class]) - abort (); - - object.pMyClassp = object; - if (object.pMyClassp != object) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-23.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-23.mm deleted file mode 100644 index 73138f64c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-23.mm +++ /dev/null @@ -1,18 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* Test that properties of type arrays or bitfields are rejected. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; -} -@property int a[8]; /* { dg-error "property can not be an array" } */ -@property int b:8; /* { dg-error "expected" } */ -@property int c[]; /* { dg-error "property can not be an array" } */ - /* { dg-error "ISO C.. forbids zero-size array" "" { target *-*-* } 16 } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-24.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-24.mm deleted file mode 100644 index b4a7699f6..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-24.mm +++ /dev/null @@ -1,118 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test @optional @properties. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@end - -/* Use a different getters/setters, so that the only way to compile - object.countX is to find the actual @property. */ -@protocol count -@required -/* @required + @synthesize. */ -@property (getter=number1, setter=setNumber1:) int count1; -/* @required + manual setters/getters. */ -@property (getter=number2, setter=setNumber2:) int count2; - -@optional -/* @optional + @synthesize. */ -@property (getter=number3, setter=setNumber3:) int count3; -/* @optional + manual setters/getters. */ -@property (getter=number4, setter=setNumber4:) int count4; - -@optional -/* @optional + readonly, with a setter added in the class itself. */ -@property (readonly, getter=number5) int count5; -@end - -@interface MySubClass : MyRootClass <count> -{ - int count1; - int count2; - int count3; - int count4; - int count5; -} -- (void) setCount5: (int)value; -@end - -@implementation MySubClass -@synthesize count1; -- (int) number2 -{ - return count2; -} -- (void) setNumber2: (int)value -{ - count2 = value; -} -@synthesize count3; -- (int) number4 -{ - return count4; -} -- (void) setNumber4: (int)value -{ - count4 = value; -} -- (int) number5 -{ - return count5; -} -- (void) setCount5: (int)value -{ - count5 = value; -} -@end - -int main (void) -{ - MySubClass *object = [[MySubClass alloc] init]; - - /* First, test that @required and @optional properties work as - expected if implemented either via @synthesize or manually. */ - object.count1 = 44; - if (object.count1 != 44) - abort (); - - object.count2 = 88; - if (object.count2 != 88) - abort (); - - object.count3 = 77; - if (object.count3 != 77) - abort (); - - object.count4 = 11; - if (object.count4 != 11) - abort (); - - /* Now, test the complication: @optional @property which is - readonly, but which has a setter manually implemented. - Apparently it is possible to use the dotsyntax and the @optional - @property getter is used when reading, while the manual setter is - used when writing. */ - object.count5 = 99; - if (object.count5 != 99) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-25.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-25.mm deleted file mode 100644 index 422a29e55..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-25.mm +++ /dev/null @@ -1,87 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* Test warnings and non-warnings with @optional @properties. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@end - -@protocol count -@optional -@property int count1; -@property (readonly) int count2; -@end - - -/* A class that implements all the properties. */ -@interface MySubClass1 : MyRootClass <count> -{ - int count1; - int count2; -} -@end - -@implementation MySubClass1 -@synthesize count1; -@synthesize count2; -@end - - -/* A class that implements nothing; no warnings as the properties are - all optional. */ -@interface MySubClass2 : MyRootClass <count> -@end - -@implementation MySubClass2 -@end - - -@protocol count2 -@required -@property int count1; -@property (readonly) int count2; -@end - -/* A class that implements all the properties. */ -@interface MySubClass3 : MyRootClass <count2> -{ - int count1; - int count2; -} -@end - -@implementation MySubClass3 -@synthesize count1; -@synthesize count2; -@end - - -/* A class that implements nothing; warnings as the properties are - all required. */ -@interface MySubClass4 : MyRootClass <count2> -@end - -@implementation MySubClass4 -@end - -/* { dg-warning "incomplete implementation of class" "" { target *-*-* } 81 } */ -/* { dg-warning "method definition for ..setCount1:. not found" "" { target *-*-* } 81 } */ -/* { dg-warning "method definition for ..count1. not found" "" { target *-*-* } 81 } */ -/* { dg-warning "method definition for ..count2. not found" "" { target *-*-* } 81 } */ -/* { dg-warning "class .MySubClass4. does not fully implement the .count2. protocol" "" { target *-*-* } 81 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-26.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-26.mm deleted file mode 100644 index c45757e23..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-26.mm +++ /dev/null @@ -1,85 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test @properties in class extensions. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@end - -@protocol count4 -/* Use a different getters/setters, so that the only way to compile - object.countX is to find the actual @property. */ -@property (getter=number4, setter=setNumber4:) int count4; -@end - -@interface MySubClass : MyRootClass -{ - int count1; - int count2; - int count3; - int count4; -} -@property (getter=number1, setter=setNumber1:) int count1; -@end - -@interface MySubClass () -@property (getter=number2, setter=setNumber2:) int count2; -@end - -@interface MySubClass () <count4> -@property (getter=number3, setter=setNumber3:) int count3; -@end - -@implementation MySubClass -@synthesize count1; -@synthesize count2; -- (int) number3 -{ - return count3; -} -- (void) setNumber3: (int)value -{ - count3 = value; -} -@synthesize count4; -@end - -int main (void) -{ - MySubClass *object = [[MySubClass alloc] init]; - - object.count1 = 20; - if (object.count1 != 20) - abort (); - - object.count2 = 11; - if (object.count2 != 11) - abort (); - - object.count3 = 19; - if (object.count3 != 19) - abort (); - - object.count4 = 74; - if (object.count4 != 74) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-27.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-27.mm deleted file mode 100644 index 727834684..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-27.mm +++ /dev/null @@ -1,66 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test overriding a readonly @property with a readwrite one in a class extension. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@end - -@protocol count2 -/* Use a different getters/setters, so that the only way to compile - object.countX is to find the actual @property. */ -@property (readonly, getter=number2) int count2; -@end - -@interface MySubClass : MyRootClass -{ - int count1; - int count2; -} -@property (readonly, getter=number1) int count1; -@end - -@interface MySubClass () -@property (readwrite, getter=number1, setter=setNumber1:) int count1; -@end - -@interface MySubClass () <count2> -@property (readwrite, getter=number2, setter=setNumber2:) int count2; -@end - -@implementation MySubClass -@synthesize count1; -@synthesize count2; -@end - -int main (void) -{ - MySubClass *object = [[MySubClass alloc] init]; - - object.count1 = 20; - if (object.count1 != 20) - abort (); - - object.count2 = 11; - if (object.count2 != 11) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-28.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-28.mm deleted file mode 100644 index de5122443..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-28.mm +++ /dev/null @@ -1,29 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-do compile } */ - -/* Test errors when extending a property in a class extension. */ - -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; -} -@property (readonly, retain) id property1; /* { dg-message "originally specified here" } */ -@property (readonly) int property2; /* { dg-message "originally specified here" } */ -@property (readonly, getter=y) int property3; /* { dg-message "originally specified here" } */ -@property (readonly) int property4; /* Ok */ -@property (readonly) int property5; /* { dg-message "originally specified here" } */ -@end - -@interface MyRootClass () -@property (readwrite, copy) id property1; /* { dg-warning "assign semantics attributes of property .property1. conflict with previous declaration" } */ -@property (readwrite, nonatomic) int property2; /* { dg-warning ".nonatomic. attribute of property .property2. conflicts with previous declaration" } */ -@property (readwrite, getter=x) int property3; /* { dg-warning ".getter. attribute of property .property3. conflicts with previous declaration" } */ -@property (readwrite) int property4; /* Ok */ -@property (readwrite) float property5; /* { dg-warning "type of property .property5. conflicts with previous declaration" } */ -@end - - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-29.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-29.mm deleted file mode 100644 index 0f31617f8..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-29.mm +++ /dev/null @@ -1,14 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, January 2011. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; -} -/* Test missing '=' in setter/getter attributes. */ -@property (getter) int property_a; /* { dg-error "missing .=. .after .getter. attribute." } */ -@property (setter) int property_b; /* { dg-error "missing .=. .after .setter. attribute." } */ -@property (assign, getter) int property_c; /* { dg-error "missing .=. .after .getter. attribute." } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-3.mm deleted file mode 100644 index adf4dd036..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-3.mm +++ /dev/null @@ -1,15 +0,0 @@ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; -} -@property volatile int a; /* This is allowed */ -@property extern int b; /* { dg-error "invalid type" } */ -@property static int c; /* { dg-error "invalid type" } */ -@property inline int d; /* { dg-error "declared as an .inline." } */ -@property typedef int e; /* { dg-error "invalid type" } */ -@property __thread int f; /* { dg-error "invalid type" } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-4.mm deleted file mode 100644 index 941aab8e3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-4.mm +++ /dev/null @@ -1,40 +0,0 @@ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; -} -- (int) myGetter; -- (int) myGetterB; -- (int) myGetter2; -- (void) mySetter: (int)property; -- (void) mySetterB: (int)property; -- (void) mySetter2: (int)property; - -/* Test that all the new property attributes can be parsed. */ -@property (assign) id property_a; -@property (copy) id property_b; -@property (nonatomic) int property_c; -@property (readonly) int property_d; -@property (readwrite) int property_e; -@property (retain) id property_f; -@property (release) int property_g; /* { dg-error "unknown property attribute" } */ - -@property (getter=myGetter) int property_h; -@property (setter=mySetter:) int property_i; - -/* Now test various problems. */ - -@property (readonly, readwrite) int a; /* { dg-error ".readonly. attribute conflicts with .readwrite. attribute" } */ -@property (readonly, setter=mySetterB:) int b; /* { dg-error ".readonly. attribute conflicts with .setter. attribute" } */ - -@property (assign, retain) id c; /* { dg-error ".assign. attribute conflicts with .retain. attribute" } */ -@property (assign, copy) id d; /* { dg-error ".assign. attribute conflicts with .copy. attribute" } */ -@property (copy, retain) id e; /* { dg-error ".retain. attribute conflicts with .copy. attribute" } */ - -@property (setter=mySetter:,setter=mySetter2:) int f; /* { dg-error ".setter. attribute may only be specified once" } */ -@property (getter=myGetter, getter=myGetter2 ) int g; /* { dg-error ".getter. attribute may only be specified once" } */ - -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-5.mm deleted file mode 100644 index fc618f2bc..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-5.mm +++ /dev/null @@ -1,34 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; - id property_a; - int property_b; - int property_c; - int property_d; - id property_e; - id property_f; - id property_g; - id property_h; -} - -/* Test various error messages. */ -@property id property_a; /* { dg-warning "object property .property.a. has no .assign., .retain. or .copy. attribute" } */ - /* { dg-message ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 20 } */ -@property int property_b = 4; /* { dg-error "expected" } */ -@property (retain) int property_c; /* { dg-error ".retain. attribute is only valid for Objective-C objects" } */ -@property (copy) int property_d; /* { dg-error ".copy. attribute is only valid for Objective-C objects" } */ - -@property (retain) id property_e; -@property (retain) id property_f; -@property (retain) id property_g; -@property (retain) id property_h; -@property (retain) id property_e; /* { dg-error "redeclaration of property .property_e." } */ - /* { dg-message "originally specified here" "" { target *-*-* } 26 } */ -@end - -@property id test; /* { dg-error "misplaced .@property. Objective-C.. construct" } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-6.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-6.mm deleted file mode 100644 index f2e2044cc..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-6.mm +++ /dev/null @@ -1,61 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test the property syntax with non-synthesized setter/getter - and with standard names. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int a; -} -@property (nonatomic) int a; -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } - -- (int) a -{ - return a; -} -- (void) setA: (int)value -{ - a = value; -} -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - - if (object.a != 0) - abort (); - - object.a = 14; - - if (object.a != 14) - abort (); - - object.a = 23; - - if (object.a != 23) - abort (); - - object.a = 78; - - if (object.a != 78) - abort (); - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-7.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-7.mm deleted file mode 100644 index dc8e90fc3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-7.mm +++ /dev/null @@ -1,58 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test the property syntax with non-synthesized setter/getter - and with a non-standard name for the getter. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int a; -} -@property (getter = getA, nonatomic) int a; -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } - -- (int) getA -{ - return a; -} -- (void) setA: (int)value -{ - a = value; -} -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - - object.a = 14; - - if (object.a != 14) - abort (); - - object.a = 23; - - if (object.a != 23) - abort (); - - object.a = 78; - - if (object.a != 78) - abort (); - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-8.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-8.mm deleted file mode 100644 index f40416567..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-8.mm +++ /dev/null @@ -1,58 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test the property syntax with non-synthesized setter/getter - and with a non-standard name for the setter. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int a; -} -@property (setter = writeA:, nonatomic) int a; -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } - -- (int) a -{ - return a; -} -- (void) writeA: (int)value -{ - a = value; -} -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - - object.a = 14; - - if (object.a != 14) - abort (); - - object.a = 23; - - if (object.a != 23) - abort (); - - object.a = 78; - - if (object.a != 78) - abort (); - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-9.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-9.mm deleted file mode 100644 index 4b2b64d3f..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-9.mm +++ /dev/null @@ -1,50 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test the property syntax with synthesized setter/getter - and with a non-standard name for the getter and setter. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int a; -} -@property (getter = giveMeA, setter = writeA:, nonatomic) int a; -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@synthesize a; -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - - object.a = 14; - - if (object.a != 14) - abort (); - - object.a = 23; - - if (object.a != 23) - abort (); - - object.a = 78; - - if (object.a != 78) - abort (); - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-deprecated-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-deprecated-1.mm deleted file mode 100644 index 2cf4dee5e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-deprecated-1.mm +++ /dev/null @@ -1,37 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do compile } */ - -/* Test that properties can be deprecated. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int a; -} -@property int a __attribute__((deprecated)); -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@synthesize a; -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - - object.a = 40; /* { dg-warning "is deprecated" } */ - if (object.a != 40) /* { dg-warning "is deprecated" } */ - abort (); - - return (0); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-deprecated-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-deprecated-2.mm deleted file mode 100644 index d2901a55b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/at-property-deprecated-2.mm +++ /dev/null @@ -1,25 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do compile } */ - -/* Test that deprecation warnings are produced when a setter/getter of - a @property is used directly. */ - -#include <objc/objc.h> - -@interface MyClass -{ - Class isa; - int variable; -} -@property (assign, nonatomic) int property __attribute__ ((deprecated)); -@end - -void foo (void) -{ - MyClass *object = nil; - - if ([object property] > 0) /* { dg-warning "is deprecated" } */ - { - [object setProperty: 43]; /* { dg-warning "is deprecated" } */ - } -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/cxx-property-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/cxx-property-1.mm deleted file mode 100644 index 3c6f93e2a..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/cxx-property-1.mm +++ /dev/null @@ -1,10 +0,0 @@ -/* Testcase from PR obj-c++/48275. */ -/* { dg-do compile } */ - -@interface Test -{ - int ns; -} -@property (getter=namespace) int ns; - -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/cxx-property-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/cxx-property-2.mm deleted file mode 100644 index 4e085b398..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/cxx-property-2.mm +++ /dev/null @@ -1,22 +0,0 @@ -/* { dg-do compile } */ - -/* All these C++ keywords are acceptable in ObjC method names, hence - should be accepted for property getters and setters. */ - -@interface Test -{ - Class isa; -} -@property (getter=namespace) int p0; -@property (setter=namespace:) int p1; -@property (getter=and) int p2; -@property (setter=and:) int p3; -@property (getter=class) int p4; -@property (setter=class:) int p5; -@property (getter=new) int p6; -@property (setter=new:) int p7; -@property (getter=delete) int p8; -@property (setter=delete:) int p9; -@property (getter=delete) int p10; -@property (setter=delete:) int p11; -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-1.mm deleted file mode 100644 index 8922f5f03..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-1.mm +++ /dev/null @@ -1,63 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test the 'dot syntax' without a declarated property. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int a; - id b; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -- (int) count; -- (void) setCount: (int)value; -- (id) next; -- (void) setNext: (id)value; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -- (int) count -{ - return a; -} -- (void) setCount: (int)value -{ - a = value; -} -- (id) next -{ - return b; -} -- (void) setNext: (id)value -{ - b = value; -} -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - - object.count = 40; - if (object.count != 40) - abort (); - - object.next = object; - if (object.next != object) - abort (); - - return 0; -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-10.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-10.mm deleted file mode 100644 index 433595f3d..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-10.mm +++ /dev/null @@ -1,86 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test dot-syntax with 'super'. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -static int c; - -@interface MyRootClass -{ - Class isa; - int a; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -- (int) count; -- (void) setCount: (int)count; -+ (int) classCount; -+ (void) setClassCount: (int)count; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -- (int) count -{ - return a; -} -- (void) setCount: (int)count -{ - a = count; -} -+ (int) classCount -{ - return c; -} -+ (void) setClassCount: (int)count -{ - c = count; -} -@end - -@interface MySubClass : MyRootClass -+ (int) testMe; -- (int) testMe; -@end - -@implementation MySubClass -- (int) testMe -{ - super.count = 400; - if (super.count != 400) - abort (); - - return super.count; -} -+ (int) testMe -{ - super.classCount = 4000; - if (super.classCount != 4000) - abort (); - - return super.classCount; -} -@end - -int main (void) -{ - MySubClass *object = [[MySubClass alloc] init]; - - if ([object testMe] != 400) - abort (); - - if ([MySubClass testMe] != 4000) - abort (); - - return 0; -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-11.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-11.mm deleted file mode 100644 index 6c9d924ca..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-11.mm +++ /dev/null @@ -1,61 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* Test the error reporting for the dot-syntax in the scenario where - we have a setter, but not a getter, yet a getter is requested. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -static int c; - -@interface MyRootClass -{ - Class isa; - int a; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -- (void) setCount: (int)count; -+ (void) setClassCount: (int)count; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -- (void) setCount: (int)count -{ - a = count; -} -+ (void) setClassCount: (int)count -{ - c = count; -} -@end - -@interface MySubClass : MyRootClass -+ (int) testMe; -- (int) testMe; -@end - -@implementation MySubClass -- (int) testMe -{ - super.count = 400; - if (super.count != 400) /* { dg-error "no .count. getter found" } */ - abort (); - - return super.count; /* { dg-error "no .count. getter found" } */ -} -+ (int) testMe -{ - super.classCount = 4000; - if (super.classCount != 4000) /* { dg-error "no .classCount. getter found" } */ - abort (); - - return super.classCount; /* { dg-error "no .classCount. getter found" } */ -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-12.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-12.mm deleted file mode 100644 index 20882f909..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-12.mm +++ /dev/null @@ -1,105 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test looking up a setter or getter which are in a protocol attached - to a category of a superclass. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -static int c; - -@interface MyRootClass -{ - Class isa; - int a; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@end - -@protocol count -- (int) count; -- (void) setCount: (int)count; -@end - -@protocol classCount -+ (int) classCount; -+ (void) setClassCount: (int)count; -@end - -@interface MyRootClass (Category) <count, classCount> -@end - -@implementation MyRootClass (Category) -- (int) count -{ - return a; -} -- (void) setCount: (int)count -{ - a = count; -} -+ (int) classCount -{ - return c; -} -+ (void) setClassCount: (int)count -{ - c = count; -} -@end - -@interface MySubClass : MyRootClass -+ (int) testMe; -- (int) testMe; -@end - -@implementation MySubClass -- (int) testMe -{ - self.count = 400; - if (self.count != 400) - abort (); - - return self.count; -} -+ (int) testMe -{ - self.classCount = 4000; - if (self.classCount != 4000) - abort (); - - return self.classCount; -} -@end - -int main (void) -{ - MySubClass *object = [[MySubClass alloc] init]; - - object.count = 44; - if (object.count != 44) - abort (); - - MySubClass.classCount = 40; - if (MySubClass.classCount != 40) - abort (); - - if ([object testMe] != 400) - abort (); - - if ([MySubClass testMe] != 4000) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-13.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-13.mm deleted file mode 100644 index c5a4b3301..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-13.mm +++ /dev/null @@ -1,53 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test dot-syntax with a local variable. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int a; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -- (int) count; -- (void) setCount: (int)count; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -- (int) count -{ - return a; -} -- (void) setCount: (int)count -{ - a = count; -} -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - int i; - - for (i = 0; i < 10; i++) - { - object.count = i; - - if (object.count != i) - abort (); - } - - return 0; -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-14.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-14.mm deleted file mode 100644 index efa60ed99..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-14.mm +++ /dev/null @@ -1,77 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* Test dot-syntax with accessors to be looked up in protocol @properties. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@protocol ProtocolA -@property int countA; -@end - -@protocol ProtocolB -@property int countB; -@end - -@protocol ProtocolC -@property int countC; -@end - -@interface MyRootClass -{ - Class isa; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@interface MySubClass <ProtocolA, ProtocolB, ProtocolC> -@end - -int function (MySubClass *object, int x) -{ - object.countA = x; - object.countB = x; - object.countC = object.countB; - - return object.countC; -} - -int function2 (MyRootClass <ProtocolA, ProtocolB, ProtocolC> *object, int x) -{ - object.countA = x; - object.countB = x; - object.countC = object.countB; - - return object.countC; -} - -int function3 (MyRootClass <ProtocolA, ProtocolB> *object, int x) -{ - object.countA = x; - object.countB = x; - object.countC = object.countB; /* { dg-error "request for member .countC. in" } */ - - return object.countC; /* { dg-error "request for member .countC. in" } */ -} - -int function4 (id <ProtocolA, ProtocolB, ProtocolC> object, int x) -{ - object.countA = x; - object.countB = x; - object.countC = object.countB; - - return object.countC; -} - -int function5 (id <ProtocolA, ProtocolB> object, int x) -{ - object.countA = x; - object.countB = x; - object.countC = object.countB; /* { dg-error "request for member .countC. in" } */ - - return object.countC; /* { dg-error "request for member .countC. in" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-15.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-15.mm deleted file mode 100644 index 7ddf5300c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-15.mm +++ /dev/null @@ -1,80 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* Test dot-syntax with accessors to be looked up in protocols. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@protocol ProtocolA -- (int) countA; -- (void) setCountA: (int)aNumber; -@end - -@protocol ProtocolB -- (int) countB; -- (void) setCountB: (int)aNumber; -@end - -@protocol ProtocolC -- (int) countC; -- (void) setCountC: (int)aNumber; -@end - -@interface MyRootClass -{ - Class isa; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@interface MySubClass <ProtocolA, ProtocolB, ProtocolC> -@end - -int function (MySubClass *object, int x) -{ - object.countA = x; - object.countB = x; - object.countC = object.countB; - - return object.countC; -} - -int function2 (MyRootClass <ProtocolA, ProtocolB, ProtocolC> *object, int x) -{ - object.countA = x; - object.countB = x; - object.countC = object.countB; - - return object.countC; -} - -int function3 (MyRootClass <ProtocolA, ProtocolB> *object, int x) -{ - object.countA = x; - object.countB = x; - object.countC = object.countB; /* { dg-error "request for member .countC. in" } */ - - return object.countC; /* { dg-error "request for member .countC. in" } */ -} - -int function4 (id <ProtocolA, ProtocolB, ProtocolC> object, int x) -{ - object.countA = x; - object.countB = x; - object.countC = object.countB; - - return object.countC; -} - -int function5 (id <ProtocolA, ProtocolB> object, int x) -{ - object.countA = x; - object.countB = x; - object.countC = object.countB; /* { dg-error "request for member .countC. in" } */ - - return object.countC; /* { dg-error "request for member .countC. in" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-16.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-16.mm deleted file mode 100644 index 893db69d9..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-16.mm +++ /dev/null @@ -1,91 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test dot-syntax with pre/post increment and decrement. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int a; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -- (int) count; -- (void) setCount: (int)count; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -- (int) count -{ - return a; -} -- (void) setCount: (int)count -{ - a = count; -} -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - - object.count = 10; - if (object.count != 10) - abort (); - - /* First, test that they increment/decrement as expected. */ - object.count++; - if (object.count != 11) - abort (); - - ++object.count; - if (object.count != 12) - abort (); - - object.count--; - if (object.count != 11) - abort (); - - --object.count; - if (object.count != 10) - abort (); - - /* Now, test that they are pre/post increment/decrement, as - expected. */ - if (object.count++ != 10) - abort (); - - if (object.count != 11) - abort (); - - if (++object.count != 12) - abort (); - - if (object.count != 12) - abort (); - - if (object.count-- != 12) - abort (); - - if (object.count != 11) - abort (); - - if (--object.count != 10) - abort (); - - if (object.count != 10) - abort (); - - return 0; -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-17.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-17.mm deleted file mode 100644 index c28e11f48..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-17.mm +++ /dev/null @@ -1,67 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* Test errors with the dot-syntax with pre/post increment and decrement. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int count; - int a; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@property (assign, readonly) int count; -- (void) setWriteOnlyCount: (int)value; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@synthesize count; -- (void) setWriteOnlyCount: (int)value -{ - a = value; -} -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - - object.count = 10; /* { dg-error "readonly property can not be set" } */ - if (object.count != 10) /* Ok */ - abort (); - - /* Test errors when trying to change a readonly property using - pre/post increment/decrement operators. */ - object.count++; /* { dg-error "readonly property can not be set" } */ - - ++object.count; /* { dg-error "readonly property can not be set" } */ - - object.count--; /* { dg-error "readonly property can not be set" } */ - - --object.count; /* { dg-error "readonly property can not be set" } */ - - /* Test errors when trying to change something using Objective-C 2.0 - dot-syntax but there is a setter but no getter. */ - object.writeOnlyCount = 10; /* Ok */ - - object.writeOnlyCount++; /* { dg-error "no .writeOnlyCount. getter found" } */ - - ++object.writeOnlyCount; /* { dg-error "no .writeOnlyCount. getter found" } */ - - object.writeOnlyCount--; /* { dg-error "no .writeOnlyCount. getter found" } */ - - --object.writeOnlyCount; /* { dg-error "no .writeOnlyCount. getter found" } */ - - return 0; -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-18.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-18.mm deleted file mode 100644 index 5697d311d..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-18.mm +++ /dev/null @@ -1,90 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test dot-syntax with tricky assignments. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int a; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -- (int) count; -- (void) setCount: (int)count; -- (int) somethingToExecuteOnlyOnce; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -- (int) count -{ - return a; -} -- (void) setCount: (int)count -{ - a = count; -} -- (int) somethingToExecuteOnlyOnce -{ - a++; - return 10; -} -@end - -int main (void) -{ - MyRootClass *object1 = [[MyRootClass alloc] init]; - MyRootClass *object2 = [[MyRootClass alloc] init]; - MyRootClass *object3 = [[MyRootClass alloc] init]; - int i; - - object1.count = 10; - if (object1.count != 10) - abort (); - - object2.count = 10; - if (object2.count != 10) - abort (); - - /* Test multiple assignments to a constant. */ - object1.count = object2.count = 20; - - if (object1.count != 20 || object2.count != 20) - abort (); - - i = object1.count = 30; - - if (i != 30 || object1.count != 30) - abort (); - - i = object2.count = 30; - - if (i != 30 || object2.count != 30) - abort (); - - /* Test a simple assignment to something with a side-effect; the - 'rhs' should be evaluated only once. */ - object1.count = ([object2 somethingToExecuteOnlyOnce] > 0 ? 30 : 45); - - if (object1.count != 30 || object2.count != 31) - abort (); - - /* Test multiple assignments with side effects. */ - object3.count = object1.count = ([object2 somethingToExecuteOnlyOnce] > 0 ? 30 : 45); - - if (object1.count != 30 || object2.count != 32 || object3.count != 30) - abort (); - - return 0; -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-19.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-19.mm deleted file mode 100644 index df4867b0a..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-19.mm +++ /dev/null @@ -1,113 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test dot-syntax with more tricky assignments. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - id a; - id b; - int p1; - float p2; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; - -@property (assign) id object1; -@property (assign) id object2; -- (id) test; -- (id) myself; -- (id) nilObject; - -@property int p1; -@property float p2; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@synthesize object1 = a; -@synthesize object2 = b; -- (id) test -{ - /* Test multiple assignments with 'self'. */ - self.object1 = self.object2 = self; - - if (self.object1 != self || self.object2 != self) - abort (); - - /* Test multiple assignments with a conditional and method calls. */ - self.object1 = self.object2 = (self ? [self myself] : [self nilObject]); - - if (self.object1 != self || self.object2 != self) - abort (); - - self.object1 = self.object2 = (self ? [self nilObject] : [self myself]); - - if (self.object1 != nil || self.object2 != nil) - abort (); - - return self.object1; -} -- (id) myself -{ - return self; -} -- (id) nilObject -{ - return nil; -} - -@synthesize p1; -@synthesize p2; -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - MyRootClass *object1 = [[MyRootClass alloc] init]; - - [object test]; - - /* Now, test multiple assignments with different types. Use - int/float as they seem to happily crash the compiler in gimplify - if proper conversions are not being generated by the - frontend. ;-) */ - object.p1 = object.p2 = 12; - - if (object.p1 != 12 || object.p2 != 12) - abort (); - - object.p1 = object.p2 = 2.7; - - if (object.p1 != 2) - abort (); - - /* Just try a different loop, mixing in a few different standard C - constructs to cover a few other cases. */ - object.p1 = 10; - object1.p1 = 0; - while (object.p1) - { - object1.p1 += ((object.p2 = 4.56) ? 0 : object.p1); - object.p1--; - } - - if (object.p1 != 0 || object1.p1 != 0) - abort (); - - if ((object.p1 = 0)) - abort (); - - return 0; -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-2.mm deleted file mode 100644 index 03e49aebc..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-2.mm +++ /dev/null @@ -1,72 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test the 'dot syntax' without a declarated property. This tests the case where - only the setter (or only the getter) exists. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int a; - id b; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -- (int) a; -- (void) setCount: (int)value; -- (id) b; -- (void) setNext: (id)value; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -- (int) a -{ - return a; -} -- (void) setCount: (int)value -{ - a = value; -} -- (id) b -{ - return b; -} -- (void) setNext: (id)value -{ - b = value; -} -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - - /* This should work because -setCount: exists (even if -count does - not). */ - object.count = 40; - - /* This should work because -a exists (even if -setA: does not). */ - if (object.a != 40) - abort (); - - /* This should work because -setNext: exists (even if -next does - not). */ - object.next = object; - - /* This should work because -b exists (even if -setB: does not). */ - if (object.b != object) - abort (); - - return 0; -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-20.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-20.mm deleted file mode 100644 index 2bddb7c6b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-20.mm +++ /dev/null @@ -1,67 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ -/* { dg-options "-Wall" } */ - -/* Test warnings with the dot-syntax. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - id a; - id b; - int p1; - int p2; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; - -@property int p1; -@property int p2; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@synthesize p1; -@synthesize p2; -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - - /* First, test that the artificial code generated by dot-syntax does - not generate unexpected warnings. */ - - /* All of the following should generate no warnings. */ - object.p1 = 0; - object.p2 = 0; - object.p1 = object.p2 = 0; - if (object.p1 > 0) - object.p2 = 0; - - object.p1++; - ++object.p1; - object.p1--; - --object.p1; - - while (object.p1) - object.p1--; - - /* Now test some warnings. */ - object.p1; /* This warning does not seem to be produced in C++. dg-warning "value computed is not used" */ - - /* TODO: It would be good to get the following to warn. */ - if (object.p1 = 0) /* dg-warning "suggest parentheses around assignment used as truth value" */ - abort (); - - return 0; -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-21.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-21.mm deleted file mode 100644 index 4b8945ed6..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-21.mm +++ /dev/null @@ -1,113 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test dot-syntax with super in a category. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int a; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -- (int) count; -- (void) setCount: (int)count; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -- (int) count -{ - return a; -} -- (void) setCount: (int)count -{ - a = count; -} -@end - -/* First, test 'super' in the main implementation of a subclass. */ -@interface MySubClass : MyRootClass -- (int) superCount; -- (void) setSuperCount: (int)count; -@end - -@implementation MySubClass -- (int) superCount -{ - return super.count; -} -- (void) setSuperCount: (int)count -{ - super.count = count; -} -@end - -/* Now, test 'super' in a category of a subclass. */ -@interface MySubClass (Category) -- (int) superCount2; -- (void) setSuperCount2: (int)count; -- (int) test: (int)x; -@end - -@implementation MySubClass (Category) -- (int) superCount2 -{ - return super.count; -} -- (void) setSuperCount2: (int)count -{ - super.count = count; -} -- (int) test: (int)x -{ - /* For positive x, the following will leave super.count - unchanged. */ - super.count++; - --super.count; - - super.count = (x < 0 ? x : super.count); - - if ((x = super.count)) - super.count += 1; - - if ((x = super.count)) - super.count -= 1; - - /* Finally, also put a bit of self.count in the mix. */ - self.count++; - super.count--; - - return super.count; -} -@end - -int main (void) -{ - MySubClass *object = [[MySubClass alloc] init]; - - object.count = 10; - if (object.count != 10) - abort (); - - object.superCount = 11; - if (object.superCount != 11) - abort (); - - object.superCount2 = 12; - if (object.superCount2 != 12) - abort (); - - if ([object test: 45] != 12) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-22.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-22.mm deleted file mode 100644 index cc5834822..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-22.mm +++ /dev/null @@ -1,19 +0,0 @@ -/* PR objc/47784. This testcase used to crash the compiler. */ - -typedef struct { - float x; -} SomeType; - -@interface MyClass - -@property(assign,readwrite) SomeType position; - -@end - -void example (MyClass *x) -{ - const SomeType SomeTypeZero = {0.0f}; - - x.position= SomeTypeZero; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-3.mm deleted file mode 100644 index d34780628..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-3.mm +++ /dev/null @@ -1,64 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test the 'dot syntax' without a declarated property. This tests the case where - the object is a Class. */ - - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -static int a; -static id b; - -@interface MyRootClass -{ - Class isa; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -+ (int) count; -+ (void) setCount: (int)value; -+ (id) next; -+ (void) setNext: (id)value; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -+ (int) count -{ - return a; -} -+ (void) setCount: (int)value -{ - a = value; -} -+ (id) next -{ - return b; -} -+ (void) setNext: (id)value -{ - b = value; -} -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - - MyRootClass.count = 40; - if (MyRootClass.count != 40) - abort (); - - MyRootClass.next = object; - if (MyRootClass.next != object) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-4.mm deleted file mode 100644 index 2e918d282..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-4.mm +++ /dev/null @@ -1,44 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* Test the 'dot syntax' without a declarated property. This tests - syntax errors in the case where the object is a Class. */ - - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@end - -int main (void) -{ - MyRootClass.invalid = 40; /* { dg-error "could not find setter.getter" } */ - if (MyRootClass.invalid != 40) /* { dg-error "could not find setter.getter" } */ - abort (); - - MyRootClass.; /* { dg-error "expected identifier" } */ - if (MyRootClass.) /* { dg-error "expected identifier" } */ - abort (); - - MyRootClass.int; /* { dg-error "expected identifier" } */ - /* { dg-error "expected" "" { target *-*-* } 37 } */ - if (MyRootClass.int) /* { dg-error "expected identifier" } */ - /* { dg-error "expected" "" { target *-*-* } 39 } */ - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-5.mm deleted file mode 100644 index 06e113032..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-5.mm +++ /dev/null @@ -1,78 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test the 'dot syntax' with self, both in instance and class methods. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -static int c; - -@interface MyRootClass -{ - Class isa; - int a; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -- (int) count; -- (void) setCount: (int)count; -+ (int) classCount; -+ (void) setClassCount: (int)count; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -- (int) count -{ - return a; -} -- (void) setCount: (int)count -{ - a = count; -} -+ (int) classCount -{ - return c; -} -+ (void) setClassCount: (int)count -{ - c = count; -} -- (int) testMe -{ - self.count = 400; - if (self.count != 400) - abort (); - - return self.count; -} -+ (int) testMe -{ - self.classCount = 4000; - if (self.classCount != 4000) - abort (); - - return self.classCount; -} -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - - if ([object testMe] != 400) - abort (); - - if ([MyRootClass testMe] != 4000) - abort (); - - return 0; -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-6.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-6.mm deleted file mode 100644 index 7ecd34e3d..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-6.mm +++ /dev/null @@ -1,106 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test nested 'dot syntax' (xxx.yyy.zzz or [xxx yyy].zzz). */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@class MyRootClass; - -static MyRootClass *shared_root = nil; - -@interface MyRootClass -{ - Class isa; - int a; - int b; - MyRootClass *next; -} -@property int b; -@property (assign) MyRootClass *next; -+ (id) initialize; -+ (MyRootClass *)sharedInstance; -+ (id) alloc; -- (id) init; -- (MyRootClass *)same; -- (int) count; -- (void) setCount: (int)count; -@end - -@implementation MyRootClass -@synthesize b; -@synthesize next; -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -+ (MyRootClass *)sharedInstance -{ - if (!shared_root) - shared_root = [[self alloc] init]; - - return shared_root; -} -- (MyRootClass *)same -{ - return self; -} -- (int) count -{ - return a; -} -- (void) setCount: (int)count -{ - a = count; -} -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - - /* Test ClassName.accessor.accessor. */ - MyRootClass.sharedInstance.count = 500; - if (MyRootClass.sharedInstance.count != 500) - abort (); - - /* Test object.accessor.accessor. */ - object.same.count = 1000; - if (object.same.count != 1000) - abort (); - - /* Test object.accessor.property. */ - object.same.next = object; - if (object.same.next != object) - abort (); - - /* Test lots of nesting. */ - if (object.next.next.same.same.next.next.same != object) - abort (); - - /* Test more nesting. */ - MyRootClass.sharedInstance.next = object; - MyRootClass.sharedInstance.next.next.next.next.next.count = 2000; - if (MyRootClass.sharedInstance.next.next.next.next.next.count != 2000) - abort (); - - /* Test more nesting. */ - MyRootClass.sharedInstance.same.same.same.same.same.count = 3000; - if (MyRootClass.sharedInstance.same.same.same.same.same.count != 3000) - abort (); - - /* Test [object method].property. */ - [MyRootClass sharedInstance].count = 5000; - if ([MyRootClass sharedInstance].count != 5000) - abort (); - - /* Just a final check. */ - if (shared_root.count != 5000) - abort (); - - return 0; -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-7.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-7.mm deleted file mode 100644 index 15c1725d8..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-7.mm +++ /dev/null @@ -1,48 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test dot syntax of a casted expression. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int a; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -- (int) count; -- (void) setCount: (int)count; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -- (int) count -{ - return a; -} -- (void) setCount: (int)count -{ - a = count; -} -@end - -int main (void) -{ - id object = [[MyRootClass alloc] init]; - - ((MyRootClass *)object).count = 200; - if (((MyRootClass *)object).count != 200) - abort (); - - return 0; -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-8.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-8.mm deleted file mode 100644 index 35dfda40c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-8.mm +++ /dev/null @@ -1,62 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test the 'dot syntax' with typedefs. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -static int c; - -@interface MyRootClass -{ - Class isa; - int a; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -- (int) count; -- (void) setCount: (int)count; -+ (int) classCount; -+ (void) setClassCount: (int)count; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -- (int) count -{ - return a; -} -- (void) setCount: (int)count -{ - a = count; -} -+ (int) classCount -{ - return c; -} -+ (void) setClassCount: (int)count -{ - c = count; -} -@end - -typedef MyRootClass MyType; - -int main (void) -{ - MyType *object = [[MyRootClass alloc] init]; - - object.count = 1974; - if (object.count != 1974) - abort (); - - return 0; -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-9.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-9.mm deleted file mode 100644 index 61a5c0eb8..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-9.mm +++ /dev/null @@ -1,77 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test that setter/getters for dot-syntax are properly found even if - not declared in the @interface, but available in the local - @implementation before the current line (ie, [object name] can be - compiled in that case, so object.name should be compiled too). */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -static int c; - -@interface MyRootClass -{ - Class isa; - int a; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -- (int) count -{ - return a; -} -- (void) setCount: (int)count -{ - a = count; -} -+ (int) classCount -{ - return c; -} -+ (void) setClassCount: (int)count -{ - c = count; -} -- (int) testMe -{ - self.count = 400; - if (self.count != 400) - abort (); - - return self.count; -} -+ (int) testMe -{ - self.classCount = 4000; - if (self.classCount != 4000) - abort (); - - return self.classCount; -} -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - - if ([object testMe] != 400) - abort (); - - if ([MyRootClass testMe] != 4000) - abort (); - - return 0; -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-deprecated-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-deprecated-1.mm deleted file mode 100644 index ad627a8c1..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dotsyntax-deprecated-1.mm +++ /dev/null @@ -1,41 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do compile } */ - -/* Test the 'dot syntax' with deprecated methods. */ - -#include <objc/objc.h> - -@interface MyClass -{ - Class isa; -} -+ (int) classCount __attribute__ ((deprecated)); -+ (void) setClassCount: (int)value __attribute__ ((deprecated)); - -- (int) count __attribute__ ((deprecated)); -- (void) setCount: (int)value __attribute__ ((deprecated)); - -- (int) classCount2; -- (void) setClassCount2: (int)value; - -- (int) count2; -- (void) setCount2: (int)value; -@end - -void foo (void) -{ - MyClass *object = nil; - - - if (object.count > 0) /* { dg-warning "is deprecated" } */ - object.count = 20; /* { dg-warning "is deprecated" } */ - - if (MyClass.classCount < -7) /* { dg-warning "is deprecated" } */ - MyClass.classCount = 11; /* { dg-warning "is deprecated" } */ - - if (object.classCount2 > 0) - object.classCount2 = 19; - - if (object.count2 < -7) - object.count2 = 74; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-1.mm deleted file mode 100644 index 4e84843c3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-1.mm +++ /dev/null @@ -1,34 +0,0 @@ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; -} -@end - -@implementation MyRootClass -@end - -@dynamic isa; /* { dg-error "misplaced .@dynamic. Objective-C.. construct" } */ - -@interface Test : MyRootClass -{ - int v1; - int v2; - int v3; - int v4; -} -@property int v1; -@property int v2; -@property int v3; -@property int v4; -@end - -@implementation Test -@dynamic; /* { dg-error "expected identifier" } */ -@dynamic v1, ; /* { dg-error "expected identifier" } */ -@dynamic v1, v2, v3; -@dynamic v4; -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-2.mm deleted file mode 100644 index 49004eff4..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-2.mm +++ /dev/null @@ -1,45 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; -} -@end - -@implementation MyRootClass -@end - -@dynamic isa; /* { dg-error "misplaced .@dynamic. Objective-C.. construct" } */ - -@interface Test : MyRootClass -{ - int v1; -} -@end -@implementation Test -@end - - -@interface Test (Category) -@property int v1; -@end -@implementation Test (Category) -@dynamic v1; -@end - - -@interface AnotherTest : MyRootClass -{ -} -@property int one; -@end - -@implementation AnotherTest -@dynamic one; -@dynamic one; /* { dg-error "property .one. already specified in .@dynamic." } */ - /* { dg-message "originally specified here" "" { target *-*-* } 41 } */ -@dynamic three; /* { dg-error "no declaration of property .three. found in the interface" } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-3.mm deleted file mode 100644 index e8a6693b0..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-3.mm +++ /dev/null @@ -1,49 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; -} -@end - -@implementation MyRootClass -@end - -/* Test @property/@dynamic in a category. First, a case where - @dynamic should turn off all warnings. */ - -@interface MyRootClass (Category) -@property int a; -- (int) test; -@end -@implementation MyRootClass (Category) -@dynamic a; -- (int) test -{ - return self.a; /* This should compile into [self a] with no warnings. */ -} -@end - - - -/* Test @property/@dynamic in a category. Second, a case with a - missing setter and no @dynamic. A warning should be generated. */ - -@interface MyRootClass (Category2) -@property int b; -- (int) test; -@end -@implementation MyRootClass (Category2) -- (int) b -{ - return 0; -} -- (int) test -{ - return self.b; -} -@end /* { dg-warning "incomplete implementation" } */ -/* { dg-warning "method definition for .-setB:. not found" "" { target *-*-* } 48 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-4.mm deleted file mode 100644 index 84998d6b4..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-4.mm +++ /dev/null @@ -1,45 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; -} -@end - -@implementation MyRootClass -@end - -/* Test @property/@dynamic with protocols. */ - -@protocol MyProtocol -@property int a; -@end - - -/* This class is declared to conform to the protocol, but because of - @dynamic, no warnings are issued even if the getter/setter for the - @property are missing. */ -@interface MyClass1 : MyRootClass <MyProtocol> -@end - -@implementation MyClass1 -@dynamic a; -@end - - -/* This class is declared to conform to the protocol and warnings are - issued because the setter for the @property is missing. */ -@interface MyClass2 : MyRootClass <MyProtocol> -@end - -@implementation MyClass2 -- (int) a -{ - return 0; -} -@end /* { dg-warning "incomplete implementation" } */ -/* { dg-warning "method definition for .-setA:. not found" "" { target *-*-* } 43 } */ -/* { dg-warning "class .MyClass2. does not fully implement the .MyProtocol. protocol" "" { target *-*-* } 43 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-5.mm deleted file mode 100644 index 77e81411a..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-5.mm +++ /dev/null @@ -1,53 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test @dynamic in the real scenario where a class declares a - @property, uses @dynamic to avoid implementing it, then subclasses - implement it. */ - -#include <objc/objc.h> -#include <objc/runtime.h> -#include <stdlib.h> - -@interface MyRootClass -{ - Class isa; -} -@property int a; -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@dynamic a; -@end - -@interface Test : MyRootClass -{ - int v1; -} -@end - -@implementation Test -@synthesize a = v1; -@end - -int main (void) -{ - /* Note how 'object' is declared to be of class 'MyRootClass', but - actually is of the subclass which implements the property for - real. */ - MyRootClass *object = [[Test alloc] init]; - - object.a = 40; - - if (object.a != 40) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-6.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-6.mm deleted file mode 100644 index 23a7a8905..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/dynamic-6.mm +++ /dev/null @@ -1,26 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* Test case when an accessor from a @property matches a method - required by a protocol. If the @property is @dynamic, then no - warning should be generated. */ - -#include <objc/objc.h> -#include <objc/runtime.h> -#include <stdlib.h> - -@protocol Count -- (int) count; -@end - -@interface MyRootClass <Count> -{ - Class isa; -} -@property int count; -@end - -@implementation MyRootClass -/* This @dynamic turns off any warnings for -count and -setCount:. */ -@dynamic count; -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/fsf-property-basic.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/fsf-property-basic.mm deleted file mode 100644 index 2c3774a93..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/fsf-property-basic.mm +++ /dev/null @@ -1,70 +0,0 @@ -/* Basic test, auto-generated getter/setter based on property name. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -#ifdef __cplusplus -extern "C" { -#endif - -extern int printf (const char *fmt,...); -extern void abort (void); - -#include <objc/objc.h> -#include <objc/runtime.h> - -#ifdef __cplusplus -} -#endif - -@interface Bar -{ -@public - Class isa; - int FooBar; -} -+ (id) initialize; -+ (id) alloc ; -- (id) init; -- (int) whatIsFooBar; -@property int FooBar; -@end - -@implementation Bar - -+initialize { return self;} -+ (id) alloc { return class_createInstance (self, 0); } - -- (id) init {return self;} - -- (int) whatIsFooBar { return self->FooBar; } -@synthesize FooBar; -@end - -int main(int argc, char *argv[]) { - int res; - Bar *f = [[Bar alloc] init]; - - /* First, establish that the property getter & setter have been synthesized - and operate correctly. */ - [f setFooBar:1]; - - if ([f whatIsFooBar] != 1) - { printf ("setFooBar did not set FooBar\n"); abort ();} - - res = [f FooBar]; - - if (res != 1 ) - { printf ("[f FooBar] = %d\n", res); abort ();} - - /* Now check the short-cut object.property syntax. */ - /* Read... */ - res = f.FooBar; - if (res != 1 ) - { printf ("f.FooBar = %d\n", res); abort ();} - - /* .... write. */ - f.FooBar = 0; - /* printf ("seems OK\n", res); */ - return f.FooBar; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/fsf-property-method-access.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/fsf-property-method-access.mm deleted file mode 100644 index 11efb4af0..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/fsf-property-method-access.mm +++ /dev/null @@ -1,75 +0,0 @@ -/* test access in methods, auto-generated getter/setter based on property name. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -#ifdef __cplusplus -extern "C" { -#endif - -extern int printf (const char *fmt,...); -extern void abort (void); - -#include <objc/objc.h> -#include <objc/runtime.h> - -#ifdef __cplusplus -} -#endif - -@interface Bar -{ -@public - Class isa; - int FooBar; -} -+ (id) initialize; -+ (id) alloc ; -- (id) init; - -- (int) lookAtProperty; -- (void) setProperty: (int) v; - -@property int FooBar; -@end - -@implementation Bar - -+initialize { return self;} -+ (id) alloc { return class_createInstance(self, 0);} - -- (id) init {return self;} - -@synthesize FooBar; - -- (int) lookAtProperty { return FooBar; } -- (void) setProperty: (int) v { FooBar = v; } - -@end - -int main(int argc, char *argv[]) { - int res; - Bar *f = [[Bar alloc] init]; - - /* First, establish that the property getter & setter have been synthesized - and operate correctly. */ - [f setProperty:11]; - - if (f.FooBar != 11) - { printf ("setProperty did not set FooBar\n"); abort ();} - - res = [f lookAtProperty]; - if (res != 11 ) - { printf ("[f lookAtProperty] = %d\n", res); abort ();} - - /* Make sure we haven't messed up the shortcut form. */ - /* read ... */ - res = f.FooBar; - if (res != 11 ) - { printf ("f.FooBar = %d\n", res); abort ();} - - /* ... write. */ - f.FooBar = 0; - /* printf ("seems OK\n", res); */ - return f.FooBar; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/fsf-property-named-ivar.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/fsf-property-named-ivar.mm deleted file mode 100644 index d29f43106..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/fsf-property-named-ivar.mm +++ /dev/null @@ -1,69 +0,0 @@ -/* Basic test, auto-generated getter/setter based on named ivar */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -#ifdef __cplusplus -extern "C" { -#endif - -extern int printf (const char *fmt,...); -extern void abort (void); - -#include <objc/objc.h> -#include <objc/runtime.h> - -#ifdef __cplusplus -} -#endif - -@interface Bar -{ -@public - Class isa; - int var; -} -+ (id) initialize; -+ (id) alloc ; -- (id) init; - -@property int FooBar; -@end - -@implementation Bar - -+initialize { return self;} -+ (id) alloc { return class_createInstance (self, 0); } - -- (id) init {return self;} - -@synthesize FooBar = var; -@end - -int main(int argc, char *argv[]) { - int res; - Bar *f = [[Bar alloc] init]; - - /* First, establish that the property getter & setter have been synthesized - and operate correctly. */ - [f setFooBar:1234]; - - if (f->var != 1234) - { printf ("setFooBar did not set var correctly\n"); abort ();} - - res = [f FooBar]; - - if (res != 1234 ) - { printf ("[f FooBar] = %d\n", res); abort ();} - - /* Now check the short-cut object.property syntax. */ - /* Read .... */ - res = f.FooBar; - if (res != 1234 ) - { printf ("f.FooBar = %d\n", res); abort ();} - - /* ... and write. */ - f.FooBar = 0; - /* printf ("seems OK\n", res); */ - return f.FooBar; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-1.mm deleted file mode 100644 index 57a171337..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-1.mm +++ /dev/null @@ -1,30 +0,0 @@ -/* This program tests use of property provided setter/getter functions. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -#import "../../objc-obj-c++-shared/TestsuiteObject.m" - -@interface Bar : TestsuiteObject -{ - int iVar; -} -@property (setter=MySetter:) int FooBar; -@end - -@implementation Bar -@synthesize FooBar=iVar; - -- (void) MySetter : (int) value { iVar = value; } - -@end - -int main(int argc, char *argv[]) { - Bar *f = [Bar new]; - f.FooBar = 1; - - f.FooBar += 3; - - f.FooBar -= 4; - return f.FooBar; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-encoding-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-encoding-1.mm deleted file mode 100644 index dc12c3137..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-encoding-1.mm +++ /dev/null @@ -1,182 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, March 2011. */ -/* Test encoding properties. */ -/* { dg-do run } */ -/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ - -#include <objc/runtime.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> - -@interface MyRootClass -{ Class isa; } -+ alloc; -- init; -+ initialize; -@end - -@implementation MyRootClass -+ alloc { return class_createInstance (self, 0); } -- init { return self; } -+ initialize { return self; } -@end - -@interface MySubClass : MyRootClass -{ - char char_property; - short short_property; - int int_property; - long long_property; - float float_property; - double double_property; - int *int_pointer_property; - - id propertyA; - id propertyB; - id propertyC; - id propertyD; - int propertyE; - id propertyF; - - id other_variable; -} -@property char char_property; -@property short short_property; -@property int int_property; -@property long long_property; -@property float float_property; -@property double double_property; -@property int *int_pointer_property; - -@property (assign, getter=getP, setter=setP:) id propertyA; -@property (assign) id propertyB; -@property (copy) id propertyC; -@property (retain) id propertyD; -@property (nonatomic) int propertyE; -@property (nonatomic, readonly, copy) id propertyF; - -@property (assign) id propertyG; -@property (assign, readonly, getter=X) id propertyH; -@end - -@implementation MySubClass -@synthesize char_property; -@synthesize short_property; -@synthesize int_property; -@synthesize long_property; -@synthesize float_property; -@synthesize double_property; -@synthesize int_pointer_property; - -@synthesize propertyA; -@synthesize propertyB; -@synthesize propertyC; -@synthesize propertyD; -@synthesize propertyE; -@synthesize propertyF; - -@synthesize propertyG = other_variable; -@dynamic propertyH; -@end - -#ifdef __OBJC2__ -void error (objc_property_t p) -{ - printf ("Error - property_getAttributes (\"%s\") returns \"%s\"\n", - property_getName (p), - property_getAttributes (p)); - abort (); -} - -/* Concatenate 3 strings and return the result. */ -char *concat (const char *a, const char *b, const char *c) -{ - /* We happily leak memory here. This is a test. */ - char *x = (char *)malloc (sizeof (char) * 128); - snprintf (x, 128, "%s%s%s", a, b, c); - return x; -} - -#endif - -int main (void) -{ -#ifdef __OBJC2__ - Class c = objc_getClass ("MySubClass"); - objc_property_t p; - - p = class_getProperty (c, "char_property"); - /* Usually we expect "Tc,Vchar_property", but if a char is of - different size, it may be encoded differently than "c". */ - if (strcmp (concat ("T", @encode (char), ",Vchar_property"), - property_getAttributes (p)) != 0) - error (p); - - p = class_getProperty (c, "short_property"); - if (strcmp (concat ("T", @encode (short), ",Vshort_property"), - property_getAttributes (p)) != 0) - error (p); - - p = class_getProperty (c, "int_property"); - if (strcmp (concat ("T", @encode (int), ",Vint_property"), - property_getAttributes (p)) != 0) - error (p); - - p = class_getProperty (c, "long_property"); - if (strcmp (concat ("T", @encode (long), ",Vlong_property"), - property_getAttributes (p)) != 0) - error (p); - - p = class_getProperty (c, "float_property"); - if (strcmp (concat ("T", @encode (float), ",Vfloat_property"), - property_getAttributes (p)) != 0) - error (p); - - p = class_getProperty (c, "double_property"); - if (strcmp (concat ("T", @encode (double), ",Vdouble_property"), - property_getAttributes (p)) != 0) - error (p); - - p = class_getProperty (c, "int_pointer_property"); - if (strcmp (concat ("T", @encode (int *), ",Vint_pointer_property"), - property_getAttributes (p)) != 0) - error (p); - - /* Objects are always encoded as '@' hence the string does not - depend on the architecture. */ - p = class_getProperty (c, "propertyA"); - if (strcmp ("T@,GgetP,SsetP:,VpropertyA", property_getAttributes (p)) != 0) - error (p); - - p = class_getProperty (c, "propertyB"); - if (strcmp ("T@,VpropertyB", property_getAttributes (p)) != 0) - error (p); - - p = class_getProperty (c, "propertyC"); - if (strcmp ("T@,C,VpropertyC", property_getAttributes (p)) != 0) - error (p); - - p = class_getProperty (c, "propertyD"); - if (strcmp ("T@,&,VpropertyD", property_getAttributes (p)) != 0) - error (p); - - p = class_getProperty (c, "propertyE"); - if (strcmp (concat ("T", @encode (int), ",N,VpropertyE"), - property_getAttributes (p)) != 0) - error (p); - - p = class_getProperty (c, "propertyF"); - if (strcmp ("T@,R,C,N,VpropertyF", property_getAttributes (p)) != 0) - error (p); - - p = class_getProperty (c, "propertyG"); - if (strcmp ("T@,Vother_variable", property_getAttributes (p)) != 0) - error (p); - - p = class_getProperty (c, "propertyH"); - if (strcmp ("T@,R,D,GX", property_getAttributes (p)) != 0) - error (p); -#endif - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-1.mm deleted file mode 100644 index cae1a5615..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-1.mm +++ /dev/null @@ -1,13 +0,0 @@ -/* { dg-do compile } */ - -@interface Bar -{ - int iVar; -} -@property int fooBar; -@end - -@implementation Bar -@end /* { dg-warning "incomplete implementation of class .Bar." } */ - /* { dg-warning "method definition for .-setFooBar:. not found" "" { target *-*-* } 11 } */ - /* { dg-warning "method definition for .-fooBar. not found" "" { target *-*-* } 11 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-2.mm deleted file mode 100644 index f730fe846..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-2.mm +++ /dev/null @@ -1,8 +0,0 @@ -/* { dg-do compile } */ - -@interface Bar -@end - -@implementation Bar -@property int FooBar; /* { dg-error "property declaration not in @interface or @protocol context" } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-3.mm deleted file mode 100644 index 0b30931a8..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-3.mm +++ /dev/null @@ -1,14 +0,0 @@ -/* { dg-do compile } */ - -@interface Person -{ - char *firstName; -} -@property char *firstName; -@end - -@implementation Person -@dynamic firstName; -@synthesize firstName; /* { dg-error "property .firstName. already specified in .@dynamic." } */ - /* { dg-message "originally specified here" "" { target *-*-* } 11 } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-4.mm deleted file mode 100644 index cc25d84af..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-4.mm +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ - -@interface Person -{ - char *fullName; -} -@property char *fullName; -+ (void) testClass; -@end - - -@implementation Person -@synthesize fullName; -+ (void) testClass { - self.fullName = "MyName"; /* { dg-error "request for member .fullName." } */ -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-5.mm deleted file mode 100644 index 464470cba..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-5.mm +++ /dev/null @@ -1,5 +0,0 @@ -/* { dg-do compile } */ - -@interface Foo -@property ( readonly, getter = HELLO, setter = THERE : ) int value; /* { dg-error ".readonly. attribute conflicts with .setter. attribute" } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-6.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-6.mm deleted file mode 100644 index 86bb66485..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-6.mm +++ /dev/null @@ -1,9 +0,0 @@ -/* Check for proper declaration of @property. */ -/* { dg-do compile } */ - -@interface Bar -{ - int iVar; -} -@property int FooBar /* { dg-error "expected ';' at end of input" } */ - /* { dg-error "expected '@end' at end of input" "" { target *-*-* } 8 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-7.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-7.mm deleted file mode 100644 index 4c3d5d7d3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property-neg-7.mm +++ /dev/null @@ -1,20 +0,0 @@ -/* { dg-do compile } */ - -@interface NSArray -{ - int count; -} -@property(readonly) int count; -@end - -@implementation NSArray -@synthesize count; -@end - -void foo (NSArray *ans[], id pid, id apid[], int i) { - NSArray *test; - test.count = 1; /* { dg-error "readonly property can not be set" } */ - ((NSArray *)pid).count = 1; /* { dg-error "readonly property can not be set" } */ - ((NSArray *)apid[i]).count = 1; /* { dg-error "readonly property can not be set" } */ - ans[i].count = 3; /* { dg-error "readonly property can not be set" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property.exp b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property.exp deleted file mode 100644 index 73f9feb5d..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/property.exp +++ /dev/null @@ -1,43 +0,0 @@ -# GCC Objective-C++ testsuite that uses the `dg.exp' driver. -# Copyright (C) 2004-2013 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GCC; see the file COPYING3. If not see -# <http://www.gnu.org/licenses/>. - -# Load support procs. -load_lib obj-c++-dg.exp - -# If a testcase doesn't have special options, use these. -global DEFAULT_OBJCXXFLAGS -if ![info exists DEFAULT_OBJCXXFLAGS] then { - set DEFAULT_OBJCXXFLAGS " -ansi -pedantic-errors -Wno-long-long" -} - -# Initialize `dg'. -dg-init - -# Gather a list of all tests. -set tests [lsort [glob -nocomplain $srcdir/$subdir/*.mm]] - -# Main loop. -dg-runtest $tests "-fgnu-runtime" $DEFAULT_OBJCXXFLAGS - -# Darwin targets can also run code with the NeXT runtime. -# but Properties are not supported by the runtime lib before Darwin 9. -if [istarget "*-*-darwin\[9123\]*" ] { - dg-runtest $tests "-fnext-runtime" $DEFAULT_OBJCXXFLAGS -} - -# All done. -dg-finish diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-1.mm deleted file mode 100644 index 3513c016e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-1.mm +++ /dev/null @@ -1,53 +0,0 @@ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface MyRootClass -{ - Class isa; -} -@end - -@implementation MyRootClass -@end - -@synthesize isa; /* { dg-error "misplaced .@synthesize. Objective-C.. construct" } */ - -@interface Test : MyRootClass -{ - int v1; - int v2; - int v3; - int v4; - int v5; - int v6; - int v7; - int v8; -} -@property int v1; -@property int v2; -@property int v3; -@property int v4; -@property int v5; -@property int v6; -@property int v7; -@property int v8; -@end - -@implementation Test -@synthesize; /* { dg-error "expected identifier" } */ -@synthesize v1, ; /* { dg-error "expected identifier" } */ -@synthesize v2, v3 = ; /* { dg-error "expected identifier" } */ -@synthesize v4, v5=v6, v6 = v5,v7; -@synthesize v8; -/* Some of the @synthesize above will fail due to syntax errors. The - compiler will then complain that the methods implementing the - properties are missing. That is correct, but we are not - interested. The following ones shut up the compiler. */ -- (int) v1 { return v1; } -- (void) setV1: (int)a { v1 = a; } -- (int) v2 { return v2; } -- (void) setV2: (int)a { v2 = a; } -- (int) v3 { return v3; } -- (void) setV3: (int)a { v3 = a; } -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-10.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-10.mm deleted file mode 100644 index fc4683187..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-10.mm +++ /dev/null @@ -1,53 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test @synthesize with bitfield instance variables. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int countA : 2; - int countB : 3; - int countC : 4; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@property (nonatomic) int countA; -@property (nonatomic) int countB; -@property (nonatomic) int countC; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@synthesize countA; -@synthesize countB; -@synthesize countC; -@end - -int main (void) -{ - MyRootClass *object = [[MyRootClass alloc] init]; - - object.countA = 1; - object.countB = 3; - object.countC = 4; - - if (object.countA != 1) - abort (); - - if (object.countB != 3) - abort (); - - if (object.countC != 4) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-11.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-11.mm deleted file mode 100644 index 25158da76..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-11.mm +++ /dev/null @@ -1,31 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* Test errors when @synthesize is used with bitfield instance variables in an incorrect way. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ - Class isa; - int countA : 2; /* { dg-message "originally specified here" } */ - int countB : 3; /* { dg-message "originally specified here" } */ -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@property int countA; -@property (nonatomic) short countB; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@synthesize countA; /* { dg-error ".atomic. property .countA. is using bit-field instance variable .countA." } */ -@synthesize countB; /* { dg-error "property .countB. is using instance variable .countB. of incompatible type" } */ -@end /* { dg-warning "incomplete implementation of class" } */ -/* { dg-message "method definition for ..setCountA.. not found" "" { target *-*-* } 29 } */ -/* { dg-message "method definition for ..countA. not found" "" { target *-*-* } 29 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-2.mm deleted file mode 100644 index b14fe264a..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-2.mm +++ /dev/null @@ -1,52 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -#include <objc/objc.h> -#include <objc/runtime.h> -#include <stdlib.h> - -@interface MyRootClass -{ - Class isa; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@end - -@interface Test : MyRootClass -{ - int v1; -} -@property int v1; -/* TODO: Test more types of properties with different semantics - (retain, copy, atomic, nonatomic, and test various C and - Objective-C types). */ -@end - -@implementation Test -@synthesize v1; -@end - -int main () -{ - Test *object = [[Test alloc] init]; - - /* Check that the synthesized methods exist and work. Do not invoke - them via property syntax - that is another test. Here we just - want to test the synthesis of the methods. */ - [object setV1: 400]; - - if ([object v1] != 400) - abort (); - - return (0); -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-3.mm deleted file mode 100644 index 866990531..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-3.mm +++ /dev/null @@ -1,66 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test @synthesize for a @property which is not declared directly in - the @interface, but in a @protocol that the @interface conforms - to. */ - -#include <objc/objc.h> -#include <objc/runtime.h> -#include <stdlib.h> - -@interface MyRootClass -{ - Class isa; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@end - -@protocol MyProtocol -@property int v1; -@end - -@protocol MyProtocol2 -@property int v2; -@end - -@interface Test : MyRootClass <MyProtocol, MyProtocol2> -{ - int v1; - int _v2; -} -@end - -@implementation Test -@synthesize v1; -@synthesize v2 = _v2; -@end - -int main (void) -{ - Test *object = [[Test alloc] init]; - - /* Check that the synthesized methods exist and work. Do not invoke - them via property syntax - that is another test. Here we just - want to test the synthesis of the methods. */ - [object setV1: 400]; - - if ([object v1] != 400) - abort (); - - [object setV2: 31]; - - if ([object v2] != 31) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-4.mm deleted file mode 100644 index 602dc68b4..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-4.mm +++ /dev/null @@ -1,67 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test @synthesize for a @property where the setter/getter are also - declared by the user. This is fine. */ - -#include <objc/objc.h> -#include <objc/runtime.h> -#include <stdlib.h> - -@interface MyRootClass -{ - Class isa; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@end - -@protocol MyProtocol -@property int v1; -@end - -@protocol MyProtocol2 -@property int v2; -@end - -@interface Test : MyRootClass <MyProtocol, MyProtocol2> -{ - int v1; - int _v2; -} -- (int)v1; -- (void)setV1: (int)aNumber; -- (int)v2; -@end - -@implementation Test -@synthesize v1; -@synthesize v2 = _v2; -@end - -int main (void) -{ - Test *object = [[Test alloc] init]; - - /* We use dot-syntax here as this is just a general test that - user-declared setters/getters don't cause confusion. */ - object.v1 = 400; - - if (object.v1 != 400) - abort (); - - object.v2 = 31; - - if (object.v2 != 31) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-5.mm deleted file mode 100644 index 0871b63ee..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-5.mm +++ /dev/null @@ -1,18 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* Test that @synthesize does not ICE if asked to use a non-existing - ivar. */ - -#include <objc/objc.h> - -@interface Test -@property int v1; -@end - -@implementation Test -@synthesize v1; /* { dg-error "must be an existing ivar" } */ -@end -/* { dg-warning "incomplete implementation" "" { target *-*-* } 15 } */ -/* { dg-warning "method definition for .-setV1:. not found" "" { target *-*-* } 15 } */ -/* { dg-warning "method definition for .-v1. not found" "" { target *-*-* } 15 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-6.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-6.mm deleted file mode 100644 index 2a078c9b8..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-6.mm +++ /dev/null @@ -1,30 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* Test that each @synthesize is using a different instance variable, - and that it must belong to the class (not to a superclass). */ - -#include <objc/objc.h> - -@interface Test -{ - int v; - int w; -} -@property int v1; -@property int v2; -@end -@implementation Test -@synthesize v1 = v; /* { dg-message "originally specified here" } */ -@synthesize v2 = v; /* { dg-error "property .v2. is using the same instance variable as property .v1." } */ -@end -@interface Test2 : Test -@property int w1; -@end - -@implementation Test2 -@synthesize w1; /* { dg-error "ivar .w1. used by .@synthesize. declaration must be an existing ivar" } */ -@end -/* { dg-warning "incomplete implementation" "" { target *-*-* } 27 } */ -/* { dg-message "method definition for .-setW1:. not found" "" { target *-*-* } 27 } */ -/* { dg-message "method definition for .-w1. not found" "" { target *-*-* } 27 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-7.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-7.mm deleted file mode 100644 index 929e3803b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-7.mm +++ /dev/null @@ -1,86 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -/* Test @synthesize with protocols of protocols. */ - -#include <stdlib.h> -#include <objc/objc.h> -#include <objc/runtime.h> - -@protocol ProtocolA -@property int countA; -@end - -@protocol ProtocolB <ProtocolA> -@property int countB; -@end - -@protocol ProtocolC <ProtocolB> -@property int countC; -@end - -@protocol ProtocolD -@property int countD; -@end - -@interface MyRootClass <ProtocolC> -{ - Class isa; - int countA; - int countB; - int countC; -} -+ (id) initialize; -+ (id) alloc; -- (id) init; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ (id) alloc { return class_createInstance (self, 0); } -- (id) init { return self; } -@synthesize countA; -@synthesize countB; -@synthesize countC; -@end - -@interface MySubClass : MyRootClass <ProtocolD> -{ - int countD; -} -@end - -@implementation MySubClass -@synthesize countD; -@end - -int main (void) -{ - MySubClass *object = [[MySubClass alloc] init]; - int i; - - for (i = 0; i < 10; i++) - { - object.countA += i; - object.countB += i + 1; - object.countC += i + 2; - object.countD += i + 3; - } - - if (object.countA != 45) - abort (); - - if (object.countB != 55) - abort (); - - if (object.countC != 65) - abort (); - - if (object.countD != 75) - abort (); - - return 0; -} - - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-8.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-8.mm deleted file mode 100644 index 4af3ecc74..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-8.mm +++ /dev/null @@ -1,80 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* Test that when using @synthesize the instance variable and the - property have exactly the same type. */ - -#include <objc/objc.h> - -@protocol MyProtocol -- (void)aMethod; -@end - -@interface ClassA -@end - -@interface ClassB : ClassA -@end - - -/* This is all OK. */ -@interface Test -{ - int v; - float w; - id x; - Test *y; - id <MyProtocol> *z; - ClassA *a; - ClassB *b; - ClassA <MyProtocol> *c; -} -@property (assign) int v; -@property (assign) float w; -@property (assign) id x; -@property (assign) Test *y; -@property (assign) id <MyProtocol> *z; -@property (assign) ClassA *a; -@property (assign) ClassB *b; -@end - -@implementation Test -@synthesize v; -@synthesize w; -@synthesize x; -@synthesize y; -@synthesize z; -@synthesize a; -@synthesize b; -@end - - -/* This is not OK. */ -@interface Test2 -{ - int v; /* { dg-message "originally specified here" } */ - float w; /* { dg-message "originally specified here" } */ - id x; /* { dg-message "originally specified here" } */ - Test *y; /* { dg-message "originally specified here" } */ - id <MyProtocol> *z; /* { dg-message "originally specified here" } */ - ClassA *a; /* { dg-message "originally specified here" } */ - ClassB *b; /* { dg-message "originally specified here" } */ -} -@property (assign) float v; -@property (assign) id w; -@property (assign) int x; -@property (assign) id y; -@property (assign) Test *z; -@property (assign) ClassB *a; -@property (assign) ClassA *b; -@end - -@implementation Test2 -@synthesize v; /* { dg-error "property .v. is using instance variable .v. of incompatible type" } */ -@synthesize w; /* { dg-error "property .w. is using instance variable .w. of incompatible type" } */ -@synthesize x; /* { dg-error "property .x. is using instance variable .x. of incompatible type" } */ -@synthesize y; /* { dg-error "property .y. is using instance variable .y. of incompatible type" } */ -@synthesize z; /* { dg-error "property .z. is using instance variable .z. of incompatible type" } */ -@synthesize a; /* { dg-error "property .a. is using instance variable .a. of incompatible type" } */ -@synthesize b; /* { dg-error "property .b. is using instance variable .b. of incompatible type" } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-9.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-9.mm deleted file mode 100644 index 7eae31d3f..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/property/synthesize-9.mm +++ /dev/null @@ -1,80 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* Test that when using @synthesize with a readonly property, the - instance variable can be a specialization of the property type. */ - -#include <objc/objc.h> - -@protocol MyProtocol -- (void)aMethod; -@end - -@interface ClassA -@end - -@interface ClassB : ClassA -@end - - -/* This is all OK. */ -@interface Test -{ - int v; - float w; - id x; - Test *y; - id <MyProtocol> *z; - ClassA *a; - ClassB *b; - ClassA <MyProtocol> *c; -} -@property (assign, readonly) int v; -@property (assign, readonly) float w; -@property (assign, readonly) id x; -@property (assign, readonly) Test *y; -@property (assign, readonly) id <MyProtocol> *z; -@property (assign, readonly) ClassA *a; -@property (assign, readonly) ClassB *b; -@end - -@implementation Test -@synthesize v; -@synthesize w; -@synthesize x; -@synthesize y; -@synthesize z; -@synthesize a; -@synthesize b; -@end - - -/* This is sometimes OK, sometimes not OK. */ -@interface Test2 -{ - int v; /* { dg-message "originally specified here" } */ - float w; /* { dg-message "originally specified here" } */ - id x; /* { dg-message "originally specified here" } */ - Test *y; - id <MyProtocol> *z; /* { dg-message "originally specified here" } */ - ClassA *a; /* { dg-message "originally specified here" } */ - ClassB *b; -} -@property (assign, readonly) float v; -@property (assign, readonly) id w; -@property (assign, readonly) int x; -@property (assign, readonly) id y; -@property (assign, readonly) Test *z; -@property (assign, readonly) ClassB *a; -@property (assign, readonly) ClassA *b; -@end - -@implementation Test2 -@synthesize v; /* { dg-error "property .v. is using instance variable .v. of incompatible type" } */ -@synthesize w; /* { dg-error "property .w. is using instance variable .w. of incompatible type" } */ -@synthesize x; /* { dg-error "property .x. is using instance variable .x. of incompatible type" } */ -@synthesize y; -@synthesize z; /* { dg-error "property .z. is using instance variable .z. of incompatible type" } */ -@synthesize a; /* { dg-error "property .a. is using instance variable .a. of incompatible type" } */ -@synthesize b; -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-error-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-error-1.mm deleted file mode 100644 index 888db4792..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-error-1.mm +++ /dev/null @@ -1,4 +0,0 @@ -// PR obj-c++/28434 -// { dg-do compile } - -Class<> c; // { dg-error "identifier" } diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-init-mimatch-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-init-mimatch-1.mm deleted file mode 100644 index 64e52e812..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-init-mimatch-1.mm +++ /dev/null @@ -1,35 +0,0 @@ -/* Test to warn on protocol mismatch in a variety of initializations. */ - -/* { dg-do compile } */ - -typedef struct objc_class *Class; - -typedef struct objc_object { - Class isa; -} *id; - -@protocol NSObject -@end - -@interface NSObject <NSObject> -@end - -@protocol NSCopying -- (void)copyWithZone; -@end - -@interface Foo:NSObject <NSCopying> -@end - - -extern id <NSObject> NSCopyObject(); - -@implementation Foo -- (void)copyWithZone { - Foo *copy = NSCopyObject(); /* { dg-warning "type \\'id <NSObject>\\' does not conform to the \\'NSCopying\\' protocol" } */ - - Foo<NSObject,NSCopying> *g = NSCopyObject(); /* { dg-warning "type \\'id <NSObject>\\' does not conform to the \\'NSCopying\\' protocol" } */ - - id<NSObject,NSCopying> h = NSCopyObject(); /* { dg-warning "type \\'id <NSObject>\\' does not conform to the \\'NSCopying\\' protocol" } */ -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-1.mm deleted file mode 100644 index 2f7eb9861..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-1.mm +++ /dev/null @@ -1,44 +0,0 @@ -/* Test for situations in which protocol conformance information - may be lost, leading to superfluous warnings. */ -/* Author: Ziemowit Laski <zlaski@apple.com>. */ -/* { dg-do compile } */ - -/* One-line substitute for objc/objc.h */ -typedef struct objc_object { struct objc_class *class_pointer; } *id; - -@protocol NSObject -- (int)someValue; -@end - -@interface NSObject <NSObject> -@end - -@protocol PlateMethods -- (void)someMethod; -@end - -@interface Foo { - NSObject <PlateMethods> *plate; - id <PlateMethods> plate1; - NSObject *plate2; -} -- (id <PlateMethods>) getPlate; -- (id <NSObject>) getPlate1; -- (int) getValue; -@end - -@implementation Foo -- (id <PlateMethods>) getPlate { - return plate; /* { dg-bogus "does not implement" } */ -} -- (id <NSObject>) getPlate1 { - return (id <NSObject>)plate1; /* { dg-bogus "does not conform" } */ -} -- (int) getValue { - int i = [plate1 someValue]; /* { dg-warning ".\\-someValue. not found in protocol\\(s\\)" } */ - - int j = [(id <NSObject>)plate1 someValue]; /* { dg-bogus "not found in protocol" } */ - int k = [(id)plate1 someValue]; /* { dg-bogus "not found in protocol" } */ - return i + j + k; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-2.mm deleted file mode 100644 index c1447ca85..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-2.mm +++ /dev/null @@ -1,21 +0,0 @@ -/* Don't forget to look in protocols if a class (and its superclasses) do not - provide a suitable method. */ -/* { dg-do compile } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" -#include <objc/objc.h> - -@protocol Zot --(void) zot; -@end - -@interface Foo : TestsuiteObject <Zot> -@end - -int foo() -{ - Foo *f=nil; - [f zot]; /* There should be no warnings here! */ - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-3.mm deleted file mode 100644 index 9c08f07e4..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-3.mm +++ /dev/null @@ -1,29 +0,0 @@ -/* Crash due to descriptionFor(Instance|Class)Method applied to - a protocol with no instance/class methods respectively. - Problem report and original fix by richard@brainstorm.co.uk. */ -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -#include <objc/Protocol.h> -#include "../objc-obj-c++-shared/runtime.h" - -@interface MyClass -- name; -@end - -@protocol NoInstanceMethods -+ testMethod; -@end - -@protocol NoClassMethods -- testMethod; -@end - -int -main() -{ -protocol_getMethodDescription (@protocol(NoInstanceMethods), @selector(name), YES, YES); -protocol_getMethodDescription (@protocol(NoInstanceMethods), @selector(name), YES, NO); -protocol_getMethodDescription (@protocol(NoClassMethods), @selector(name), YES, YES); -protocol_getMethodDescription (@protocol(NoClassMethods), @selector(name), YES, NO); -return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-4.mm deleted file mode 100644 index 9f94754ca..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-4.mm +++ /dev/null @@ -1,52 +0,0 @@ -/* Test for situations in which protocol conformance information - may be lost while casting. */ -/* Author: Ziemowit Laski <zlaski@apple.com>. */ -/* { dg-do compile } */ - -/* One-line substitute for objc/objc.h */ -typedef struct objc_object { struct objc_class *class_pointer; } *id; - -@protocol Proto -- (long)someValue; -@end - -@interface Obj -- (long)anotherValue; -@end - -long foo(void) { - long receiver = 2; - Obj *objrcvr; - Obj <Proto> *objrcvr2; - - /* NB: Since 'receiver' is an invalid ObjC message receiver, the compiler - should warn but then search for methods as if we were messaging 'id'. */ - - receiver += [receiver someValue]; /* { dg-warning "invalid receiver type .long int." } */ - receiver += [receiver anotherValue]; /* { dg-warning "invalid receiver type .long int." } */ - - receiver += [(Obj *)receiver someValue]; /* { dg-warning ".Obj. may not respond to .\\-someValue." } */ -/* { dg-error "invalid conversion" "" { target *-*-* } 28 } */ - - receiver += [(Obj *)receiver anotherValue]; - receiver += [(Obj <Proto> *)receiver someValue]; - receiver += [(Obj <Proto> *)receiver anotherValue]; - receiver += [objrcvr someValue]; /* { dg-warning ".Obj. may not respond to .\\-someValue." } */ -/* { dg-error "invalid conversion" "" { target *-*-* } 34 } */ - - receiver += [objrcvr anotherValue]; - receiver += [(Obj <Proto> *)objrcvr someValue]; - receiver += [(Obj <Proto> *)objrcvr anotherValue]; - receiver += [objrcvr2 someValue]; - receiver += [objrcvr2 anotherValue]; - receiver += [(Obj *)objrcvr2 someValue]; /* { dg-warning ".Obj. may not respond to .\\-someValue." } */ -/* { dg-error "invalid conversion" "" { target *-*-* } 42 } */ - - receiver += [(Obj *)objrcvr2 anotherValue]; - - return receiver; -} - -/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */ -/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */ -/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-5.mm deleted file mode 100644 index 35c0956ed..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-5.mm +++ /dev/null @@ -1,22 +0,0 @@ -/* Do not lose references to forward-declared protocols. */ -/* { dg-do compile } */ -@class MyBaseClass; -@class MyClassThatFails; -@protocol _MyProtocol; - -@interface MyClassThatFails -- (MyBaseClass<_MyProtocol> *) aMethod; -@end - -@interface MyBaseClass -@end - -@protocol _MyProtocol -@end - -@implementation MyClassThatFails -- (MyBaseClass<_MyProtocol> *) aMethod -{ - return 0; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-6.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-6.mm deleted file mode 100644 index 6a4552eb0..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-6.mm +++ /dev/null @@ -1,17 +0,0 @@ -@class Base; -@protocol _Protocol; - -@interface ClassA { -} --(void) func1:(Base<_Protocol> *)inTarget; -@end - -int main() -{ - ClassA* theA = 0; - Base<_Protocol>* myBase = 0; - [theA func1:myBase]; - - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm deleted file mode 100644 index b7746d7a1..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm +++ /dev/null @@ -1,28 +0,0 @@ -/* Check that typedefs of ObjC classes preserve - any @protocol qualifiers. */ -/* { dg-do compile } */ -#include <objc/Object.h> - -@protocol CanDoStuff; - -typedef Object<CanDoStuff> CanDoStuffType; -typedef Object<CanDoStuff> *CanDoStuffTypePtr; - -@protocol CanDoStuff -- (int) dostuff; -@end - -@protocol MoreStuff -- (int) morestuff; -@end - -int main(void) -{ - CanDoStuffTypePtr dice = nil; - CanDoStuffType *nodice = nil; - int count; - count = [dice dostuff]; - count = [nodice dostuff]; - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-qual-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-qual-1.mm deleted file mode 100644 index 7ef0e9a98..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-qual-1.mm +++ /dev/null @@ -1,61 +0,0 @@ -/* Check that protocol qualifiers are compiled and encoded properly. */ -/* Author: Ziemowit Laski <zlaski@apple.com> */ - -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -#include <stdio.h> -#include <stdlib.h> -#include "../objc-obj-c++-shared/runtime.h" -#include <objc/Protocol.h> - -/* The encoded parameter sizes will be rounded up to match pointer alignment. */ -#define ROUND(s,a) (a * ((s + a - 1) / a)) -#define aligned_sizeof(T) ROUND(sizeof(T),__alignof(void *)) - -#define CHECK_IF(expr) if(!(expr)) abort() - -@protocol Retain -+ (oneway void)retainArgument:(out bycopy id)arg1 with:(in signed char **)arg2; -- (bycopy) address:(byref inout id)location with:(out short unsigned **)arg2; -@end - -@interface Foo <Retain> -+ (oneway void)retainArgument:(out bycopy id)arg with:(in signed char **)arg2; -@end - -@implementation Foo -+ (oneway void)retainArgument:(out bycopy id)arg1 with:(in signed char **)arg2 { } -- (bycopy) address:(byref inout id)location with:(out short unsigned **)arg2 { return nil; } -@end - -Protocol *proto; -struct objc_method_description *meth; -struct objc_method_description meth_object; -unsigned totsize, offs0, offs1, offs2, offs3, offs4, offs5, offs6, offs7; - -static void scan_initial(const char *pattern) { - totsize = offs0 = offs1 = offs2 = offs3 = offs4 = offs5 = offs6 = offs7 = (unsigned)-1; - sscanf(meth->types, pattern, &totsize, &offs0, &offs1, &offs2, &offs3, - &offs4, &offs5, &offs6, &offs7); - CHECK_IF(!offs0 && offs1 == aligned_sizeof(id) && offs2 == offs1 + aligned_sizeof(SEL) && totsize >= offs2); -} - -int main(void) { - proto = @protocol(Retain); - - meth_object = protocol_getMethodDescription (proto, - @selector(address:with:), YES, YES); - meth = &meth_object; - - scan_initial("O@%u@%u:%uNR@%uo^^S%u"); - CHECK_IF(offs3 == offs2 + aligned_sizeof(id) && totsize == offs3 + aligned_sizeof(unsigned)); - - meth_object = protocol_getMethodDescription (proto, - @selector(retainArgument:with:), YES, NO); - meth = &meth_object; - - scan_initial("Vv%u@%u:%uOo@%un^*%u"); - CHECK_IF(offs3 == offs2 + aligned_sizeof(id) && totsize == offs3 + aligned_sizeof(char **)); - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-forward-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-forward-1.mm deleted file mode 100644 index 03c7ae065..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-forward-1.mm +++ /dev/null @@ -1,27 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-do compile } */ - -/* Test that all protocols appearing in @interface declarations are - real (ie, we saw a full @protocol definition with list of methods), - and not just forward-references (ie, "@protocol NSObject;"). */ - -#include <objc/objc.h> - -@protocol MyProtocol; - -@protocol MyProtocol2 -- (int)method2; -@end - -@interface MyClass <MyProtocol> /* { dg-warning "definition of protocol .MyProtocol. not found" } */ -@end - -@interface MyClass2 <MyProtocol2> /* Ok */ -@end - -@interface MyClass2 (Category) <MyProtocol> /* { dg-warning "definition of protocol .MyProtocol. not found" } */ -@end - -@protocol MyProtocol3 <MyProtocol> /* Ok */ -@end - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-forward-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-forward-2.mm deleted file mode 100644 index 9217ca8d5..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-forward-2.mm +++ /dev/null @@ -1,95 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-do compile } */ - -/* Test that all protocols appearing in @interface declarations are - real (ie, we saw a full @protocol definition with list of methods), - and not just forward-references (ie, "@protocol NSObject;"). This - test checks protocols implemented by other protocols. */ - -#include <objc/objc.h> - -@protocol MyProtocol; - -@interface MyClass <MyProtocol> /* { dg-warning "definition of protocol .MyProtocol. not found" } */ -@end - - -@protocol MyProtocol2 <MyProtocol> -- (int)method2; -@end - -@interface MyClass2 <MyProtocol2> /* { dg-warning "definition of protocol .MyProtocol. not found" } */ -- (int)method2; -@end - - -@protocol MyProtocol3 <MyProtocol2> -- (int)method3; -@end - -@interface MyClass3 <MyProtocol3> /* { dg-warning "definition of protocol .MyProtocol. not found" } */ -- (int)method2; -- (int)method3; -@end - - -@protocol MyProtocol4 <MyProtocol3, MyProtocol2> -- (int)method4; -@end - -@interface MyClass4 <MyProtocol4> /* { dg-warning "definition of protocol .MyProtocol. not found" } */ -- (int)method2; -- (int)method3; -- (int)method4; -@end - - -@protocol MyProtocol5 -- (int)method5; -@end - -@interface MyClass5 <MyProtocol5> /* Ok */ -- (int)method5; -@end - - -@protocol MyProtocol6 <MyProtocol5> -- (int)method6; -@end - -@interface MyClass6 <MyProtocol6> /* Ok */ -- (int)method5; -- (int)method6; -@end - - -@protocol MyProtocol7 <MyProtocol5, MyProtocol4> -- (int)method7; -@end - -@interface MyClass7 <MyProtocol7> /* { dg-warning "definition of protocol .MyProtocol. not found" } */ -- (int)method2; -- (int)method3; -- (int)method4; -- (int)method5; -- (int)method7; -@end - - -/* Now test that if we finally define MyProtocol, the warnings go away. */ -@protocol MyProtocol -- (int)method; -@end - -@protocol MyProtocol8 <MyProtocol5, MyProtocol4> -- (int)method8; -@end - -@interface MyClass8 <MyProtocol8> /* Ok */ -- (int)method; -- (int)method2; -- (int)method3; -- (int)method4; -- (int)method5; -- (int)method8; -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-inheritance-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-inheritance-1.mm deleted file mode 100644 index 6c23a4663..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-inheritance-1.mm +++ /dev/null @@ -1,54 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ -/* { dg-options "-Wno-protocol" } */ - -#include <objc/objc.h> - -/* Test the -Wno-protocol flag. With this, at a class is accepted - (with no warnings) as conforming to a protocol even if some - protocol methods are implemented in the superclass. */ - -@protocol MyProtocol -- (int)method; -@end - -@protocol MyProtocol2 -- (int)method2; -@end - -/* The superclass implements the method required by the protocol. */ -@interface MyRootClass -{ - Class isa; -} -- (int)method; -@end - -@implementation MyRootClass -- (int)method -{ - return 23; -} -@end - -/* The subclass inherits the method (does not implement it directly) - but that still makes it conform to the protocol. No warnings. */ -@interface MySubClass : MyRootClass <MyProtocol> -@end - -@implementation MySubClass -@end /* No warnings here. */ - - -/* The subclass instead does not inherit the method method2 (and does - not implement it directly) so it does not conform to the - protocol MyProtocol2. */ -@interface MySubClass2 : MyRootClass <MyProtocol2> -@end - -@implementation MySubClass2 -@end /* Warnings here, below. */ - -/* { dg-warning "incomplete implementation of class .MySubClass2." "" { target *-*-* } 50 } */ -/* { dg-warning "method definition for .\\-method2. not found" "" { target *-*-* } 50 } */ -/* { dg-warning "class .MySubClass2. does not fully implement the .MyProtocol2. protocol" "" { target *-*-* } 50 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-inheritance-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-inheritance-2.mm deleted file mode 100644 index d76994945..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-inheritance-2.mm +++ /dev/null @@ -1,57 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -/* Test standard warnings when a class conforms to a protocol but some - methods are implemented in the superclass. Use -Wno-protocol to - turn these off. */ - -@protocol MyProtocol -- (int)method; -@end - -@protocol MyProtocol2 -- (int)method2; -@end - -/* The superclass implements the method required by the protocol. */ -@interface MyRootClass -{ - Class isa; -} -- (int)method; -@end - -@implementation MyRootClass -- (int)method -{ - return 23; -} -@end - -/* The subclass inherits the method (does not implement it directly) - and unless -Wno-protocol is used, we emit a warning. */ -@interface MySubClass : MyRootClass <MyProtocol> -@end - -@implementation MySubClass -@end - -/* { dg-warning "incomplete implementation of class .MySubClass." "" { target *-*-* } 39 } */ -/* { dg-warning "method definition for .\\-method. not found" "" { target *-*-* } 39 } */ -/* { dg-warning "class .MySubClass. does not fully implement the .MyProtocol. protocol" "" { target *-*-* } 39 } */ - - -/* The subclass instead does not inherit the method method2 (and does - not implement it directly) so it does not conform to the - protocol MyProtocol2. */ -@interface MySubClass2 : MyRootClass <MyProtocol2> -@end - -@implementation MySubClass2 -@end /* Warnings here, below. */ - -/* { dg-warning "incomplete implementation of class .MySubClass2." "" { target *-*-* } 53 } */ -/* { dg-warning "method definition for .\\-method2. not found" "" { target *-*-* } 53 } */ -/* { dg-warning "class .MySubClass2. does not fully implement the .MyProtocol2. protocol" "" { target *-*-* } 53 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-optional-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-optional-1.mm deleted file mode 100644 index bc4a3d07e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-optional-1.mm +++ /dev/null @@ -1,48 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -/* Test that @optional for @protocol works. */ - -@protocol MyProtocol -+ (int)classMethod; -- (int)method; -@optional -+ (int)optionalClassMethod; -- (int)optionalMethod; -@end - -@interface MyRootClass <MyProtocol> -@end - -/* The implementation implements both the @required methods, but none - of the @optional ones. There should be no warnings as the - @optional methods are optional. ;-) */ -@implementation MyRootClass -+ (int)classMethod -{ - return 20; -} -- (int)method -{ - return 11; -} -@end - -int function (id <MyProtocol> object1, - MyRootClass *object2) -{ - /* Test that there are no warnings if you try to use an @optional - method with an object of the class. */ - int i = 0; - - i += [object1 method]; - i += [object2 method]; - i += [MyRootClass classMethod]; - i += [object1 optionalMethod]; - i += [object2 optionalMethod]; - i += [MyRootClass optionalClassMethod]; - - return i; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-qualifier-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-qualifier-1.mm deleted file mode 100644 index c84bfbfa2..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-qualifier-1.mm +++ /dev/null @@ -1,33 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* Test that protocol qualifiers work in the same way with @class and @interface. */ - -#include <objc/objc.h> - -@protocol MyProtocol -- (void) method; -@end - - -/* This first snippet gives no warnings, which is correct as 'object' - implements <MyProtocol> and hence responds to 'method'. Note how - the details of the class 'MyClass' are never used. */ -@interface MyClass -@end - -void test (MyClass <MyProtocol> *object) -{ - [object method]; -} - - -/* This second snippet should behave identically. 'object' still implements - the same protocol and responds to 'method'. The details of MyClass or - MyClass2 are irrelevant. */ -@class MyClass2; - -void test2 (MyClass2 <MyProtocol> *object) -{ - [object method]; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-qualifier-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-qualifier-2.mm deleted file mode 100644 index fd25d8ff6..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/protocol-qualifier-2.mm +++ /dev/null @@ -1,31 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -/* Test that protocol qualifiers are maintained correctly when a - @class is replaced by its @interface. */ - -#include <objc/objc.h> - -@protocol MyProtocol -- (void) method; -@end - -@class MyClass; - -static MyClass <MyProtocol> *object1; -static MyClass *object2; - -/* Declarating the @interface now will need to update all the existing - ObjC types referring to MyClass with the new information. We need - to test that protocol information is not lost in the process. */ -@interface MyClass -@end - -void test1 (void) -{ - [object1 method]; /* Ok */ - [object2 method]; /* { dg-warning ".MyClass. may not respond to ..method." } */ - /* { dg-warning "without a matching method" "" { target *-*-* } 27 } */ - /* { dg-warning "will be assumed to return" "" { target *-*-* } 27 } */ - /* { dg-warning "as arguments" "" { target *-*-* } 27 } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/qual-types-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/qual-types-1.mm deleted file mode 100644 index dd0eb42bc..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/qual-types-1.mm +++ /dev/null @@ -1,69 +0,0 @@ -/* Test if ObjC++ can distinguish protocol qualifiers from - template arguments. */ -/* Author: Ziemowit Laski <zlaski@apple.com>. */ - -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdlib.h> - -#define CHECK_IF(expr) if(!(expr)) abort() - -@protocol Zone -+ allocFromZone:(void *)zone; -- copyFromZone:(void *)zone; -@end - -@protocol Init <Zone> -+ initialize; -- init; -@end - -@interface Foo: TestsuiteObject -{ @public int val; } -- init; -@end - -template <class T, class U> struct X { - T x; U y; -}; - -X<int, float> xx; - -template <typename T> struct Holder -{ - T *obj; - static int counter; - Holder(void) { obj = [[T alloc] init]; } - ~Holder(void) { [obj free]; --counter; } - id <Init, Zone> getObjId(void) { return obj; } - TestsuiteObject <Zone, Init> *getObj(void) { return obj; } -}; - -typedef Holder <Foo <Init, Zone> > FooHolder; - -@implementation Foo --(id) init { - [super init]; - val = ++FooHolder::counter; - return self; -} -@end - -template <typename T> -int Holder<T>::counter = 0; - -int main (void) { - CHECK_IF(FooHolder::counter == 0); - { - FooHolder holder; - CHECK_IF(holder.obj->val == 1); - CHECK_IF(FooHolder::counter == 1); - FooHolder holder2; - CHECK_IF(holder2.obj->val == 2); - CHECK_IF(FooHolder::counter == 2); - } - CHECK_IF(FooHolder::counter == 0); - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-1.mm deleted file mode 100644 index d34f8c89c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-1.mm +++ /dev/null @@ -1,30 +0,0 @@ -/* Test whether including C++ keywords such as 'and', 'or', - 'not', etc., is allowed inside ObjC selectors (as it must be). */ -/* Author: Ziemowit Laski <zlaski@apple.com>. */ - -/* { dg-do compile } */ - -@interface Int1 -+ (int)and_eq:(int)arg1 and:(int)arg2; -- (int)or_eq:(int)arg1 or:(int)arg3; -- (int)not:(int)arg1 xor:(int)arg2; -- (void)bitand:(char)c1 bitor:(char)c2; -- (void)compl:(float)f1 xor_eq:(double)d1; -- (void)not_eq; -@end - -@implementation Int1 -+ (int)and_eq:(int)arg1 and:(int)arg2 { return arg1 + arg2; } -- (int)or_eq:(int)arg1 or:(int)arg3 { return arg1 + arg3; } -- (int)not:(int)arg1 xor:(int)arg2 { return arg1 + arg2; } -- (void)bitand:(char)c1 bitor:(char)c2 { } -- (void)compl:(float)f1 xor_eq:(double)d1 { } -- (void)not_eq { } -@end - -/* { dg-final { scan-assembler "\\+\\\[Int1 and_eq:and:\\]|c_Int1__and_eq_and" } } */ -/* { dg-final { scan-assembler "\\-\\\[Int1 or_eq:or:\\]|i_Int1__or_eq_or" } } */ -/* { dg-final { scan-assembler "\\-\\\[Int1 not:xor:\\]|i_Int1__not_xor" } } */ -/* { dg-final { scan-assembler "\\-\\\[Int1 bitand:bitor:\\]|i_Int1__bitand_bitor" } } */ -/* { dg-final { scan-assembler "\\-\\\[Int1 compl:xor_eq:\\]|i_Int1__compl_xor_eq" } } */ -/* { dg-final { scan-assembler "\\-\\\[Int1 not_eq\\]|i_Int1__not_eq" } } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-2.mm deleted file mode 100644 index 840ee19fe..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-2.mm +++ /dev/null @@ -1,17 +0,0 @@ -/* Test that we don't ICE when issuing a -Wselector warning. */ -/* { dg-options "-Wselector" } */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface Foo -@end -@implementation Foo --(void) foo -{ - SEL a; - a = @selector(b1ar); -} -@end -/* { dg-warning "creating selector for nonexistent method .b1ar." "" { target *-*-* } 0 } */ - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-3.mm deleted file mode 100644 index a1321a7b7..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-3.mm +++ /dev/null @@ -1,29 +0,0 @@ -/* Test warning for non-existent selectors. */ -/* This is the "-fgnu-runtime" variant of objc.dg/selector-1.m. */ -/* { dg-options "-Wselector -fgnu-runtime" } */ -/* { dg-do compile } */ - -typedef struct objc_object { struct objc_class *class_pointer; } *id; -typedef const struct objc_selector *SEL; - -@interface Foo -- (void) foo; -- (void) bar; -@end - -@implementation Foo -- (void) bar -{ -} - -- (void) foo -{ - SEL a,b,c; - a = @selector(b1ar); - b = @selector(bar); -} -@end - -/* FIXME: The error message should be on the correct line. */ -/* { dg-warning "creating selector for nonexistent method .b1ar." "" { target *-*-* } 0 } */ - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-4.mm deleted file mode 100644 index 690cc44b6..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-4.mm +++ /dev/null @@ -1,26 +0,0 @@ -/* Test warning for non existing selectors. */ -/* Contributed by Devang Patel <dpatel@apple.com>. */ - -/* { dg-options "-Wselector -fnext-runtime" } */ -/* { dg-do compile } */ - -typedef struct objc_object { struct objc_class *class_pointer; } *id; -typedef struct objc_selector *SEL; - -@interface Foo -- (void) foo; -- (void) bar; -@end - -@implementation Foo -- (void) bar -{ -} - -- (void) foo -{ - SEL a,b,c; - a = @selector(b1ar); /* { dg-warning "creating selector for nonexistent method .b1ar." } */ - b = @selector(bar); -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-5.mm deleted file mode 100644 index 64e82200d..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-5.mm +++ /dev/null @@ -1,13 +0,0 @@ -/* { dg-options "" } */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -int main() -{ - SEL foo = @selector(foo::); - return 0; -} - -/* { dg-final { scan-assembler "foo::" } } */ - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-6.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-6.mm deleted file mode 100644 index 9ec37fa8e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-6.mm +++ /dev/null @@ -1,13 +0,0 @@ -/* { dg-options "" } */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -int main() -{ - SEL foo = @selector(foo: a::); - return 0; -} - -/* { dg-final { scan-assembler "foo:a::" } } */ - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-warn-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-warn-1.mm deleted file mode 100644 index b4b308d7b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/selector-warn-1.mm +++ /dev/null @@ -1,16 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, January 2011. */ -/* { dg-options "-Wselector" } */ -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface RootObject -@end - -@interface MyObject : RootObject -- (void) method; /* { dg-message "found" } */ -@end - -@interface MyObject2 : RootObject -- (int) method; /* { dg-message "also found" } */ -@end /* { dg-warning "multiple selectors named .-method. found" } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/set-not-used-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/set-not-used-1.mm deleted file mode 100644 index 21ce962e8..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/set-not-used-1.mm +++ /dev/null @@ -1,35 +0,0 @@ - -/* { dg-do compile } */ -/* { dg-options "-Wunused-but-set-variable" } */ - -#import "../objc-obj-c++-shared/TestsuiteObject.m" - -@interface obj : TestsuiteObject -{ - int value; -} -- (int) value; -- (void) setValue: (int)number; -@end - -@implementation obj : TestsuiteObject - -- (int) value { return value; } -- (void) setValue: (int)number { value = number; } - -@end - -int main (void) -{ - obj *a; /* { dg-bogus "set but not used" } */ - obj *b; /* { dg-bogus "set but not used" } */ - obj *c; /* { dg-warning "set but not used" } */ - - a = [obj new]; - b = [obj new]; - c = [obj new]; - - [b setValue: [a value]]; - - return [a value]; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm deleted file mode 100644 index b4fc9e6ed..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm +++ /dev/null @@ -1,27 +0,0 @@ -/* Test the -Wnonportable-cfstrings option, which should give - warnings if non-ASCII characters are embedded in constant - CFStrings. This will only work on MacOS X 10.2 and later. */ -/* Developed by Ziemowit Laski <zlaski@apple.com>. */ - -/* So far, CFString is darwin-only. */ -/* { dg-do compile { target *-*-darwin* } } */ -/* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ -/* { dg-options "-ftrack-macro-expansion=0 -mconstant-cfstrings -Wnonportable-cfstrings" } */ - -#import <Foundation/NSString.h> -#import <CoreFoundation/CFString.h> - -#ifndef __CONSTANT_CFSTRINGS__ -#error The -fconstant-cfstrings option is not functioning properly -#endif - -void foo(void) { - NSString *s1 = @"Compile-time string literal"; - CFStringRef s2 = CFSTR("Compile-time string literal"); - NSString *s3 = @"Non-ASCII literal - \222"; /* { dg-warning "non-ASCII character in CFString literal" } */ - CFStringRef s4 = CFSTR("\222 - Non-ASCII literal"); /* { dg-warning "non-ASCII character in CFString literal" } */ - CFStringRef s5 = CFSTR("Non-ASCII (\222) literal"); /* { dg-warning "non-ASCII character in CFString literal" } */ - NSString *s6 = @"\0Embedded NUL"; /* { dg-warning "embedded NUL in CFString literal" } */ - CFStringRef s7 = CFSTR("Embedded \0NUL"); /* { dg-warning "embedded NUL in CFString literal" } */ - CFStringRef s8 = CFSTR("Embedded NUL\0"); /* { dg-warning "embedded NUL in CFString literal" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm deleted file mode 100644 index 13cb78957..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm +++ /dev/null @@ -1,26 +0,0 @@ -/* Test if constant CFStrings may be passed back as ObjC strings. */ -/* Author: Ziemowit Laski */ - -/* So far, CFString is darwin-only. */ -/* { dg-do compile { target *-*-darwin* } } */ -/* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ -/* { dg-options "-mconstant-cfstrings" } */ - -#include <objc/Object.h> - -@interface Foo: Object { - char *cString; - unsigned int len; -} -+ (Foo *)description; -@end - -@interface Bar: Object -+ (Foo *) getString: (int) which; -@end - -@implementation Bar -+ (Foo *) getString: (int) which { - return which? [Foo description]: @"Hello"; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-1.mm deleted file mode 100644 index 754c99bf1..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-1.mm +++ /dev/null @@ -1,25 +0,0 @@ -/* Test errors for constant strings. */ -/* { dg-do compile } */ -/* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ - -#ifdef __cplusplus -extern void baz(...); -#endif - -void foo() -{ - baz(@"hiya"); /* { dg-error "annot find interface declaration" } */ -} - -@interface NXConstantString -{ - void *isa; - char *str; - int len; -} -@end - -void bar() -{ - baz(@"howdah"); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm deleted file mode 100644 index 430ab5db2..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm +++ /dev/null @@ -1,28 +0,0 @@ -/* Test if ObjC types play nice in conditional expressions. */ -/* Author: Ziemowit Laski */ - -/* { dg-do compile } */ -/* { dg-options "-fconstant-string-class=Foo" } */ -/* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ - -#include <objc/Object.h> -#include "../../objc-obj-c++-shared/objc-test-suite-types.h" - -@interface Foo: Object { - char *cString; - unsigned int len; -} -+ (id)description; -@end - -@interface Bar: Object -+ (Foo *) getString: (int) which; -@end - -TNS_STRING_REF_T _FooClassReference; /* Only used by NeXT. */ - -@implementation Bar -+ (Foo *) getString: (int) which { - return which? [Foo description]: @"Hello"; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-2.mm deleted file mode 100644 index e9e2fc93d..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-2.mm +++ /dev/null @@ -1,8 +0,0 @@ -/* Test the -fconstant-string-class flag error. */ -/* { dg-do compile } */ -/* { dg-options "-fconstant-string-class=" } */ -/* { dg-options "-mno-constant-cfstrings -fconstant-string-class=" { target *-*-darwin* } } */ - -{ dg-error "no class name specified|missing argument" "" { target *-*-* } 0 } - -void foo () {} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-5.mm deleted file mode 100644 index 8c12a0c11..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-5.mm +++ /dev/null @@ -1,28 +0,0 @@ -/* Positive test case for constant string layout. */ -/* Contributed by Ziemowit Laski <zlaski@apple.com>. */ - -/* { dg-do compile } */ -/* { dg-options "-fconstant-string-class=MyConstantString" } */ -/* { dg-options "-mno-constant-cfstrings -fconstant-string-class=MyConstantString" { target *-*-darwin* } } */ - -@interface MyBase { - const char *p; -} -@end - -@interface MyConstantString: MyBase { - union equiv_u { - void *u; - unsigned char *c; - } _contents; - unsigned int _count; -} -@end - -/* The NeXT runtime initializes the 'isa' pointer of string constants at - compile time. */ -#ifdef __NEXT_RUNTIME__ -extern void *_MyConstantStringClassReference; -#endif - -MyConstantString *str = @"Hello"; diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-6.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-6.mm deleted file mode 100644 index 69954d9f4..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-6.mm +++ /dev/null @@ -1,28 +0,0 @@ -/* Negative test case for constant string layout. */ -/* Contributed by Ziemowit Laski <zlaski@apple.com>. */ - -/* { dg-do compile } */ -/* { dg-options "-fconstant-string-class=MyConstantString" } */ -/* { dg-options "-mno-constant-cfstrings -fconstant-string-class=MyConstantString" { target *-*-darwin* } } */ - -@interface MyBase { - char p; -} -@end - -@interface MyConstantString: MyBase { - union equiv_u { - void *u; - unsigned char *c; - } _contents; - char _count; -} -@end - -/* The NeXT runtime initializes the 'isa' pointer of string constants at - compile time. */ -#ifdef __NEXT_RUNTIME__ -extern void *_MyConstantStringClassReference; -#endif - -MyConstantString *str = @"Hello"; /* { dg-error "interface .MyConstantString. does not have valid constant string layout" } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/strings-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/strings-1.mm deleted file mode 100644 index 408392fd5..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/strings-1.mm +++ /dev/null @@ -1,32 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ -/* { dg-do compile } */ - -#include "../../objc-obj-c++-shared/runtime.h" -#ifndef __NEXT_RUNTIME__ -#include <objc/NXConstStr.h> -#endif - -/* The following are correct. */ -id test_valid1 = @"test"; -id test_valid2 = @"te" @"st"; -id test_valid3 = @"te" @"s" @"t"; -id test_valid4 = @ "t" @ "e" @ "s" @ "t"; - -/* The following are accepted too; you can concat an ObjC string to a - C string, the result being an ObjC string. */ -id test_valid5 = @"te" "st"; -id test_valid6 = @"te" "s" @"t"; -id test_valid7 = @"te" @"s" "t"; - -/* The following are not correct. */ -id test_invalid1 = @@"test"; /* { dg-error "stray .@. in program" } */ -const char *test_invalid2 = "test"@; /* { dg-error "stray .@. in program" } */ -const char *test_invalid3 = "test"@@; /* { dg-error "stray .@. in program" } */ -const char *test_invalid4 = "te" @"st"; /* { dg-error "expected" } */ -id test_invalid5 = @"te" @@"st"; /* { dg-error "repeated .@. before Objective-C string" } */ -id test_invalid6 = @@"te" @"st"; /* { dg-error "stray .@. in program" } */ -id test_invalid7 = @"te" @"s" @@"t"; /* { dg-error "repeated .@. before Objective-C string" } */ -id test_invalid8 = @"te" @@"s" @"t"; /* { dg-error "repeated .@. before Objective-C string" } */ -id test_invalid9 = @"te" @"s" @"t" @; /* { dg-error "stray .@. in program" } */ -id test_invalidA = @"te" @ st; /* { dg-error "stray .@. in program" } */ - /* { dg-error "expected" "" { target *-*-* } 31 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/strings-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/strings-2.mm deleted file mode 100644 index 403cf7d3b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/strings-2.mm +++ /dev/null @@ -1,66 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ - -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -/* { dg-options "-fconstant-string-class=MyTestString" } */ -/* { dg-options "-mno-constant-cfstrings -fconstant-string-class=MyTestString" { target *-*-darwin* } } */ - -#include "../../objc-obj-c++-shared/objc-test-suite-types.h" - -#include <stdlib.h> /* For abort() */ - -@interface MyTestString -{ - void *dummy_class_ptr; - char *string; - unsigned int len; -} -+ initialize; -/* All strings should contain the C string 'test'. Call -check to - test that this is true. */ -- (void) check; -@end - -@implementation MyTestString -+ initialize {return self;} -- (void) check -{ - if (len != 4 || string[0] != 't' || string[1] != 'e' - || string[2] != 's' || string[3] != 't' || string[4] != '\0') - abort (); -} -@end - -TNS_STRING_REF_T _MyTestStringClassReference; /* Only used by NeXT. */ - -int main (void) -{ - MyTestString *test_valid1 = @"test"; - MyTestString *test_valid2 = @"te" @"st"; - MyTestString *test_valid3 = @"te" @"s" @"t"; - MyTestString *test_valid4 = @ "t" @ "e" @ "s" @ "t"; - MyTestString *test_valid5 = @ "t" "e" "s" "t"; - MyTestString *test_valid6 = @ "t" "e" "s" @ "t"; - - [test_valid1 check]; - [test_valid2 check]; - [test_valid3 check]; - [test_valid4 check]; - [test_valid5 check]; - [test_valid6 check]; - - return 0; -} - -#ifdef __NEXT_RUNTIME__ -#include <string.h> -/* The MyTestString metaclass will need to be initialized before we can - send messages to strings. */ - -void testsuite_mytest_string_init (void) __attribute__((constructor)); -void testsuite_mytest_string_init (void) { - memcpy (&_MyTestStringClassReference, - objc_getClass ("MyTestString"), - sizeof (_MyTestStringClassReference)); -} -#endif
\ No newline at end of file diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/strings.exp b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/strings.exp deleted file mode 100644 index 316dbf997..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/strings.exp +++ /dev/null @@ -1,45 +0,0 @@ -# String tests that only need to run at default optimization. - -# Copyright (C) 2010-2013 Free Software Foundation, Inc. -# -# This file is part of GCC. -# -# GCC is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3, or (at your option) -# any later version. -# -# GCC is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GCC; see the file COPYING3. If not see -# <http://www.gnu.org/licenses/>. - -# Load support procs. -load_lib obj-c++-dg.exp - -# If a testcase doesn't have special options, use these. -global DEFAULT_OBJCXXFLAGS -if ![info exists DEFAULT_OBJCXXFLAGS] then { - set DEFAULT_OBJCXXFLAGS " -ansi -pedantic-errors -Wno-long-long" -} - -# Initialize `dg'. -dg-init - -# Gather a list of all tests. -set tests [lsort [glob -nocomplain $srcdir/$subdir/*.mm]] - -# Main loop. -dg-runtest $tests "-fgnu-runtime" $DEFAULT_OBJCXXFLAGS - -# darwin targets can also run code with the NeXT runtime. -if [istarget "*-*-darwin*" ] { - dg-runtest $tests "-fnext-runtime" $DEFAULT_OBJCXXFLAGS -} - -# All done. -dg-finish diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/stubify-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/stubify-1.mm deleted file mode 100644 index 687739cec..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/stubify-1.mm +++ /dev/null @@ -1,39 +0,0 @@ -/* All calls must be properly stubified. Complain about any "call - _objc_msgSend<end-of-line>" without the $stub suffix. */ - -/* { dg-do compile { target *-*-darwin* } } */ -/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ -/* { dg-require-effective-target ilp32 } */ -/* { dg-options "-Os -mdynamic-no-pic -fno-exceptions -mmacosx-version-min=10.4" } */ - -typedef struct objc_object { } *id ; -int x = 41 ; - -extern "C" { - extern id objc_msgSend(id self, char * op, ...); - extern int bogonic (int, int, int); -} - -@interface Document {} -- (Document *) window; -- (Document *) class; -- (Document *) close; -@end -@implementation Document -- (Document *) class { } -- (Document *) close { } -- (Document *) window { } -- (void)willEndCloseSheet:(void *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { - [[self window] close]; - ((void (*)(id, char *, int))objc_msgSend)([self class], (char *)contextInfo, 1); - ((void (*)(id, char *, int))bogonic)([self class], (char *)contextInfo, 1); - bogonic (3, 4, 5); - x++; -} -@end - -/* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_objc_msgSend\n" } } */ -/* { dg-final { scan-assembler "\(bl|call\)\[ \t\]+L_objc_msgSend\\\$stub\n" } } */ -/* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_bogonic\n" } } */ -/* { dg-final { scan-assembler "\(bl|call\)\[ \t\]+L_bogonic\\\$stub\n" } } */ -/* { dg-final { scan-assembler-not "\\\$non_lazy_ptr" } } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/stubify-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/stubify-2.mm deleted file mode 100644 index 9968672ed..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/stubify-2.mm +++ /dev/null @@ -1,33 +0,0 @@ -/* All calls must be properly stubified. */ -/* Testcase extracted from TextEdit:Document.m. */ - -/* { dg-do compile { target *-*-darwin* } } */ -/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ -/* { dg-require-effective-target ilp32 } */ -/* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4" } */ - -typedef struct objc_object { } *id ; -int x = 41 ; -extern id objc_msgSend(id self, char * op, ...); -extern int bogonic (int, int, int) ; -@interface Document {} -- (Document *) window; -- (Document *) class; -- (Document *) close; -@end -@implementation Document -- (Document *) class { } -- (Document *) close { } -- (Document *) window { } -- (void)willEndCloseSheet:(void *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { - [[self window] close]; - ((void (*)(id, char *, int))objc_msgSend)([self class], (char *)contextInfo, 1); - ((void (*)(id, char *, int))bogonic)([self class], (char *)contextInfo, 1); - bogonic (3, 4, 5); - x++; -} -@end - -/* Any symbol_ref of an un-stubified objc_msgSend is an error; look - for "objc_msgSend" in quotes, without the $stub suffix. */ -/* { dg-final { scan-rtl-dump-not "symbol_ref.*\"objc_msgSend\"" "jump" } } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/super-class-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/super-class-1.mm deleted file mode 100644 index 788703697..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/super-class-1.mm +++ /dev/null @@ -1,30 +0,0 @@ -/* Test calling super from within a category method. */ - -/* { dg-do compile } */ - -#include <objc/objc.h> - -@interface NSObject -@end -@interface NSMenuItem: NSObject -@end - -@interface NSObject (Test) -+ (int) test_func; -@end - -@implementation NSObject (Test) -+ (int) test_func -{} -@end - -@interface NSMenuItem (Test) -+ (int) test_func; -@end - -@implementation NSMenuItem (Test) -+ (int) test_func -{ - return [super test_func]; /* { dg-bogus "invalid use of undefined type" } */ -} /* { dg-bogus "forward declaration of" "" { target *-*-* } 28 } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/super-class-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/super-class-2.mm deleted file mode 100644 index efc72b819..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/super-class-2.mm +++ /dev/null @@ -1,35 +0,0 @@ -/* Bail out gracefully if attempting to derive from a class that has only been - forward-declared (via @class). Conversely, @compatibility_alias declarations - should be traversed to find the @interface. */ - -/* { dg-do compile } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -@class MyWpModule; - -@compatibility_alias MyObject TestsuiteObject; -@compatibility_alias FictitiousModule MyWpModule; - -@protocol MySelTarget -- (id) meth1; -@end - -@protocol Img -- (id) meth2; -@end - -@interface FunnyModule: FictitiousModule <Img> /* { dg-error ".MyWpModule., superclass of .FunnyModule." } */ -- (id) meth2; -@end - -@interface MyProjWpModule : MyWpModule <MySelTarget, Img> /* { dg-error ".MyWpModule., superclass of .MyProjWpModule." } */ { - id i1, i2; -} -- (id) meth1; -- (id) meth2; -@end - -@interface AnotherModule: MyObject <MySelTarget> -- (id) meth1; -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/super-dealloc-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/super-dealloc-1.mm deleted file mode 100644 index 0ab177bb7..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/super-dealloc-1.mm +++ /dev/null @@ -1,46 +0,0 @@ -/* Check for warnings about missing [super dealloc] calls. */ -/* Author: Ziemowit Laski <zlaski@apple.com> */ - -/* { dg-do compile } */ - -@interface Foo { - void *isa; -} -- (void) dealloc; -- (void) some_other; -@end - -@interface Bar: Foo { - void *casa; -} -- (void) dealloc; -@end - -@interface Baz: Bar { - void *usa; -} -- (void) dealloc; -@end - -@implementation Foo -- (void) dealloc { - isa = 0; /* Should not warn here. */ -} -- (void) some_other { - isa = (void *)-1; -} -@end - -@implementation Bar -- (void) dealloc { - casa = 0; - [super some_other]; -} /* { dg-warning "method possibly missing a .super dealloc. call" } */ -@end - -@implementation Baz -- (void) dealloc { - usa = 0; - [super dealloc]; /* Should not warn here. */ -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/super-dealloc-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/super-dealloc-2.mm deleted file mode 100644 index 80dcf4950..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/super-dealloc-2.mm +++ /dev/null @@ -1,46 +0,0 @@ -/* Check for warnings about missing [super dealloc] calls. */ -/* Author: Ziemowit Laski <zlaski@apple.com> */ - -/* { dg-do compile } */ - -@interface Foo { - void *isa; -} -- (void) dealloc; -- (void) some_other; -@end - -@interface Bar: Foo { - void *casa; -} -- (void) dealloc0; -@end - -@interface Baz: Bar { - void *usa; -} -- (void) dealloc; -@end - -@implementation Foo -- (void) dealloc { - isa = 0; /* Should not warn here. */ -} -- (void) some_other { - isa = (void *)-1; -} -@end - -@implementation Bar -- (void) dealloc0 { - casa = 0; - [super some_other]; /* Should not warn here. */ -} -@end - -@implementation Baz -- (void) dealloc { - usa = 0; - [super dealloc0]; -} /* { dg-warning "method possibly missing a .super dealloc. call" } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/sync-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/sync-2.mm deleted file mode 100644 index c73bbd92f..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/sync-2.mm +++ /dev/null @@ -1,35 +0,0 @@ -/* Make sure that @synchronized parses and a very basic test runs. */ -/* { dg-options "-fobjc-exceptions -fgnu-runtime" } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -int main (void) -{ - TestsuiteObject *a = [TestsuiteObject new]; - TestsuiteObject *b = [TestsuiteObject new]; - TestsuiteObject *c = [TestsuiteObject new]; - - /* This single-threaded test just checks that @synchronized() uses a - recursive mutex, and that the runtime at least doesn't crash - immediately upon finding it. - */ - @synchronized (a) - { - @synchronized (a) - { - @synchronized (b) - { - @synchronized (b) - { - @synchronized (c) - { - @synchronized (c) - { - return 0; - } - } - } - } - } - } -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/sync-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/sync-3.mm deleted file mode 100644 index 95def43d0..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/sync-3.mm +++ /dev/null @@ -1,128 +0,0 @@ -/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ -/* { dg-options "-fobjc-exceptions" } */ -/* { dg-do compile } */ - -/* Test that the compiler is checking the argument of @synchronized(), - and produce errors when invalid types are used. */ - -#include <objc/objc.h> - -@interface MyObject -{ - Class isa; -} -@end - -@implementation MyObject -@end - -@protocol MyProtocol; - -typedef MyObject MyObjectTypedef; -typedef MyObject *MyObjectPtrTypedef; -typedef int intTypedef; - -typedef struct { float x; float y; } point, *point_ptr; - -int test (id object) -{ - int dummy = 0; - - { - int x; - @synchronized (x) /* { dg-error ".@synchronized. argument is not an object" } */ - { dummy++; } - } - - { - intTypedef x; - @synchronized (x) /* { dg-error ".@synchronized. argument is not an object" } */ - { dummy++; } - } - - { - int *x; - @synchronized (x) /* { dg-error ".@synchronized. argument is not an object" } */ - { dummy++; } - } - - { - point x; - @synchronized (x) /* { dg-error ".@synchronized. argument is not an object" } */ - { dummy++; } - } - - { - point_ptr x; - @synchronized (x) /* { dg-error ".@synchronized. argument is not an object" } */ - { dummy++; } - } - - { - id x; - @synchronized (x) /* Ok */ - { dummy++; } - } - - { - id <MyProtocol> x; - @synchronized (x) /* Ok */ - { dummy++; } - } - - { - MyObject *x; - @synchronized (x) /* Ok */ - { dummy++; } - } - - { - MyObject <MyProtocol> *x; - @synchronized (x) /* Ok */ - { dummy++; } - } - - { - static MyObject *x; - @synchronized (x) /* Ok */ - { dummy++; } - } - - { - MyObjectTypedef *x; - @synchronized (x) /* Ok */ - { dummy++; } - } - - { - MyObjectTypedef <MyProtocol> *x; - @synchronized (x) /* Ok */ - { dummy++; } - } - - { - MyObjectPtrTypedef x; - @synchronized (x) /* Ok */ - { dummy++; } - } - - { - Class x; - @synchronized (x) /* Ok */ - { dummy++; } - } - - @synchronized (1) /* { dg-error ".@synchronized. argument is not an object" } */ - { dummy++; } - - @synchronized ("Test") /* { dg-error ".@synchronized. argument is not an object" } */ - { dummy++; } - - @synchronized () /* { dg-error "expected" } */ - { dummy++; } - - @synchronized (int) /* { dg-error "expected" } */ - { dummy++; } - - return dummy; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-1.mm deleted file mode 100644 index 13f3c275c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-1.mm +++ /dev/null @@ -1,26 +0,0 @@ -/* Graceful handling of a syntax error. */ -/* { dg-do compile } */ - -#include <objc/Object.h> - -class foo { - public: - foo(); - virtual ~foo(); -}; - - -extern void NXLog(const char *, ...); - -@interface Test2 : Object { -} -- (void) foo2; -@end - -@implementation Test2 -- (void) foo2 - NXLog("Hello, world!"); /* { dg-error "expected .\{. before .NXLog." } */ -} /* { dg-error "stray .\}. between Objective\\-C\\+\\+ methods" } */ -@end - -/* { dg-error "expected constructor, destructor, or type conversion before" "" { target *-*-* } 22 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-10.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-10.mm deleted file mode 100644 index e45abccfc..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-10.mm +++ /dev/null @@ -1 +0,0 @@ -@interface /* { dg-error "expected identifier" } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-2.mm deleted file mode 100644 index ba8804a89..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-2.mm +++ /dev/null @@ -1,16 +0,0 @@ -/* Recover gracefully from a syntax error. */ - -@implementation Whatever /* { dg-warning "cannot find interface declaration for .Whatever." } */ - -- (void) function -{ - if( 1 ) - { - else /* { dg-error "expected .\}. before .else." } */ - { - } -} - -- (void) another {} - -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-3.mm deleted file mode 100644 index 34f914bad..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-3.mm +++ /dev/null @@ -1,10 +0,0 @@ -/* Yet another stray infinite loop... */ -/* { dg-do compile } */ - -@interface Foo -{ - int x; - int y; -} -- (int) foo ; { /* { dg-error "stray .\{. between Objective\\-C\\+\\+ methods" } */ -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-4.mm deleted file mode 100644 index 0df061839..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-4.mm +++ /dev/null @@ -1,15 +0,0 @@ -/* Yet another stray infinite loop... */ -/* { dg-do compile } */ - -@interface t -{ -} -- (void)go; -@end -@implementation t -- (void)go -{ - } -} /* { dg-error "stray .\}. between Objective\\-C\\+\\+ methods" } */ -@end - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-5.mm deleted file mode 100644 index f0d060520..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-5.mm +++ /dev/null @@ -1,13 +0,0 @@ -/* { dg-do compile } */ - -typedef struct S { int i; } NSDictionary; - -@interface A -{ -} -@end - -@interface B : A -{ - NSDictionary * _userInfo; -@end /* { dg-error "expected .\}. before .end." } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-6.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-6.mm deleted file mode 100644 index 21423ec7e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-6.mm +++ /dev/null @@ -1,12 +0,0 @@ -/* { dg-do compile } */ - -@interface NSButton -- (int) state; -@end - -void FOO() -{ - NSButton * mCopyAcrobatCB; - - [ [ mCopyAcrobatCB state ] == 0 ] != 1; /* { dg-error "objective\\-c\\+\\+" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-7.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-7.mm deleted file mode 100644 index e38c0958c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-7.mm +++ /dev/null @@ -1,13 +0,0 @@ -/* { dg-do compile } */ - -@interface Foo --(void) someMethod; -@end - -@implementation Foo --(void) --(void) someMethod /* { dg-error "expected before .-." } */ -{ -} -@end /* { dg-warning "incomplete implementation of class" } */ -/* { dg-warning "method definition for ..someMethod. not found" "" { target *-*-* } 12 } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-8.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-8.mm deleted file mode 100644 index 731ffda5f..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-8.mm +++ /dev/null @@ -1 +0,0 @@ -@interface A /* { dg-error "expected ..end." } */
\ No newline at end of file diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-9.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-9.mm deleted file mode 100644 index 97706d5b1..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-9.mm +++ /dev/null @@ -1,3 +0,0 @@ -@implementation SaturnDoc /* { dg-warning "cannot find interface declaration" } */ -- read: (void*)aStream ggg /* { dg-error "expected .:. at end of input" } */ -/* { dg-error "expected ..end. at end of input" "" { target *-*-* } 2 } */
\ No newline at end of file diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-1.mm deleted file mode 100644 index 434c52707..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-1.mm +++ /dev/null @@ -1,50 +0,0 @@ -/* Test for using ObjC classes as C++ template parameters. */ -/* Author: Ziemowit Laski <zlaski@apple.com>. */ - -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdlib.h> - -#define CHECK_IF(expr) if(!(expr)) abort() - -@interface Base: TestsuiteObject -- (int) meth; -@end - -@interface Derived: Base -- (int) meth; -@end - -static int count = 0; - -template <class T> struct Templ -{ - T *m; - int i; - Templ(): i(55), m([[T alloc] init]) { count++; } - ~Templ() { [m free]; count--; } -}; - -@implementation Base -- (int) meth { return 333; } -@end - -@implementation Derived -- (int) meth { return 666; } -@end - -int main (void) { - CHECK_IF(count == 0); - { - Templ<Derived> derived; - CHECK_IF(derived.i == 55 && count == 1); - Templ<Base> base; - CHECK_IF(base.i == 55 && count == 2); - CHECK_IF([base.m meth] == 333); - CHECK_IF([derived.m meth] == 666); - } - CHECK_IF(count == 0); - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-2.mm deleted file mode 100644 index 346dab6c2..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-2.mm +++ /dev/null @@ -1,29 +0,0 @@ -/* Test if ObjC classes (and pointers thereto) can participate - in C++ overloading. Correct handling of cv-qualifiers is - key here. */ -/* Author: Ziemowit Laski <zlaski@apple.com>. */ - -/* { dg-do compile } */ - -@interface foo { - int a, b; -} -@end - -struct bar { - int c, d; -}; - -template <class _Tp> -struct allocator { - typedef _Tp* pointer; - typedef const _Tp* const_pointer; - typedef _Tp& reference; - typedef const _Tp& const_reference; - - pointer address(reference __x) const { return &__x; } - const_pointer address(const_reference __x) const { return &__x; } -}; - -allocator<bar *> b; -allocator<foo *> d; diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-3.mm deleted file mode 100644 index c564733cf..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-3.mm +++ /dev/null @@ -1,81 +0,0 @@ -/* Test for passing arguments to ObjC methods in the context of template - expansion. */ -/* Contributed by Ziemowit Laski <zlaski@apple.com>. */ - -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdlib.h> - -#define CHECK_IF(expr) if(!(expr)) abort() - -@interface ObjCClass : TestsuiteObject -{ -@public - int info; -} --(id) init; --(id) initWithInformation: (int) whatInfo; --(id) initWithInformation: (int) whatInfo andInfo: (int) info2; -@end - -void foo(int info) { - ObjCClass *mObj1 = [[ObjCClass alloc] init]; - ObjCClass *mObj2 = [[ObjCClass alloc] initWithInformation: info]; - ObjCClass *mObj3 = [[ObjCClass alloc] initWithInformation: info andInfo: 39]; - - CHECK_IF(mObj1->info == 666); - CHECK_IF(mObj2->info == info); - CHECK_IF(mObj3->info == info + 39); -} - -template <class WrappedObjCClass> -class ObjCObjectWrapper -{ - public: - ObjCObjectWrapper(int info); - WrappedObjCClass *mObj1, *mObj2, *mObj3; -}; - -template <class WrappedObjCClass> -ObjCObjectWrapper<WrappedObjCClass>::ObjCObjectWrapper(int info) -{ - mObj1 = [[WrappedObjCClass alloc] init]; - mObj2 = [[WrappedObjCClass alloc] initWithInformation: info]; - mObj3 = [[WrappedObjCClass alloc] initWithInformation: info andInfo: 67]; -} - -@implementation ObjCClass --(id) init { - return [self initWithInformation:666]; -} --(id) initWithInformation: (int) whatInfo { - [super init]; - info = whatInfo; - return self; -} --(id) initWithInformation: (int) whatInfo andInfo: (int) info2 { - [super init]; - info = whatInfo + info2; - return self; -} -@end - -ObjCObjectWrapper<ObjCClass> staticInstance(42); - -int main(void) { - ObjCObjectWrapper<ObjCClass> stackInstance(47); - - foo(89); - - CHECK_IF(staticInstance.mObj1->info == 666); - CHECK_IF(staticInstance.mObj2->info == 42); - CHECK_IF(staticInstance.mObj3->info == 42 + 67); - - CHECK_IF(stackInstance.mObj1->info == 666); - CHECK_IF(stackInstance.mObj2->info == 47); - CHECK_IF(stackInstance.mObj3->info == 47 + 67); - - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-4.mm deleted file mode 100644 index 5301df5c0..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-4.mm +++ /dev/null @@ -1,85 +0,0 @@ -/* Author: Ziemowit Laski <zlaski@apple.com>. */ - -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -/* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ -/* { dg-additional-sources "../objc-obj-c++-shared/nsconstantstring-class-impl.mm" } */ - -#include <stdarg.h> -#include <stdlib.h> -#include <string.h> - -#ifndef __NEXT_RUNTIME__ -#include <objc/NXConstStr.h> -#else -#include "../objc-obj-c++-shared/nsconstantstring-class.h" -#endif - -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include "../objc-obj-c++-shared/runtime.h" - -#define CHECK_IF(expr) if(!(expr)) abort() - -template <class ARR, class TYPE> class TestT -{ -public: - TYPE k; - int abc(ARR *array) { - return [array count] * k; - } - TestT(TYPE _k): k(_k) { } -}; - -template <class TYPE> -const char *getDesc(void) { - return [TYPE name]; -} - -@class Array; - -template <class TYPE> -int abc(TYPE *xyz, Array *array) { - return [xyz count] + [array count]; -} - -@interface Array: TestsuiteObject { - id *arr; - int count; -} -+ (id)arrayWithObjects:(id)first, ... ; -- (int)count; -@end - -@implementation Array -+ (id)arrayWithObjects:(id)first, ... { - Array *a = [Array new]; - a->count = 0; - a->arr = (id *) calloc(8, sizeof(id)); - - va_list args; - va_start (args, first); - - a->arr[a->count++] = first; - - for (id el; el = va_arg(args, id); a->count++) - a->arr[a->count] = el; - - return a; -} -- (int)count { - return count; -} -@end - -int main(void) { - CHECK_IF(!strcmp ([@"TestsuiteObject" cString], getDesc<TestsuiteObject>())); - CHECK_IF(!strcmp ([@"Array" cString], getDesc<Array>())); - - Array* a1 = [Array arrayWithObjects:@"One", @"Two", @"Three", nil]; - Array* a2 = [Array arrayWithObjects:@"Four", @"Five", nil]; - - TestT<Array, int> t(7); - CHECK_IF(t.abc(a1) + t.abc(a2) == 35); - CHECK_IF(abc(a1, a2) * t.k == 35); - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-5.mm deleted file mode 100644 index 79ed57d15..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-5.mm +++ /dev/null @@ -1,17 +0,0 @@ -// Test that extern template does not get emitted. -// Author: Matt Austern <austern@apple.com> - -// { dg-do compile } -// { dg-options "" } -// { dg-final { scan-assembler-not ".globl __ZN3FooIiE5identEi" } } - -template <typename X> -struct Foo { - X ident(X x) { return x; } -}; - -extern template struct Foo<int>; - -int abcde(Foo<int>& foo, int n) { - return foo.ident(n); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-6.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-6.mm deleted file mode 100644 index c9b82c0c7..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-6.mm +++ /dev/null @@ -1,16 +0,0 @@ -// Test that extern template does not get emitted. -// Author: Matt Austern <austern@apple.com> - -// { dg-do compile } -// { dg-options "" } -// { dg-final { scan-assembler-not ".globl __ZN3FooIiE5identEi" } } - -template <typename X> - struct Foo { X ident(X x); }; - -template <typename X> - X Foo<X>::ident(X x) { return x; } - -extern template struct Foo<int>; - -int abcde(Foo<int>& foo, int n) { return foo.ident(n); } diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-7.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-7.mm deleted file mode 100644 index 8621abeba..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-7.mm +++ /dev/null @@ -1,21 +0,0 @@ -// Test that objective-c++ does not confuse a template parameter named 'Object' -// with an interface of the same name. -// Author: Fariborz Jahanian <fjahanian@apple.com> -// { dg-do compile } -// { dg-options "" } -typedef struct objc_class *Class; - -@interface Object -{ - Class isa; -} -@end - -template <class Object> -struct pyobject_type -{ - static Object* checked_downcast(Object* x) - { - return x; - } -}; diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-8.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-8.mm deleted file mode 100644 index df215b852..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/template-8.mm +++ /dev/null @@ -1,53 +0,0 @@ -/* Test that all pending instantiations have taken place before meta-data - generation. */ -/* Author: Fariborz Jahanian <fjahanian@apple.com> */ -/* Adapted by Nicola Pero <nicola.pero@meta-innovation.com> */ -/* { dg-do run } */ -/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -#include <objc/objc.h> -#include <objc/runtime.h> - -@interface MyRootClass -{ Class isa; } -+ (id) initialize; -+ alloc; -- init; -- doSomething; -@end - -@implementation MyRootClass -+ (id) initialize { return self; } -+ alloc { return class_createInstance (self, 0); } -- init { return self; } -- doSomething { return self; } -@end - -class Base -{ -public: - Base() { } - virtual ~Base() { } - - void destroy() { delete this; } -}; - -template<class T> -class Subclass : public T -{ -public: - Subclass() { } - - virtual ~Subclass() - { - [[[MyRootClass alloc] init] doSomething]; - } -}; - -int main(int argc, const char * argv[]) -{ - Subclass<Base>* theSubclass = new Subclass<Base>(); - theSubclass->destroy(); - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/threedotthree-abi-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/threedotthree-abi-1.mm deleted file mode 100644 index c48181049..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/threedotthree-abi-1.mm +++ /dev/null @@ -1,76 +0,0 @@ -/* This file tests that things are encoded using the gcc-3.3 ABI which is only - used by the NeXT runtime. */ -/* { dg-do run { target *-*-darwin* } } */ -/* { dg-require-effective-target ilp32 } */ -/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ - -#include <stdio.h> -#include <string.h> -#include "../objc-obj-c++-shared/runtime.h" - -extern "C" void abort(); - -@protocol CommonProtocol - --(oneway void)methodCall_On:(in bycopy id)someValue_On; --(oneway void)methodCall_nO:(bycopy in id)someValue_nO; - --(oneway void)methodCall_Oo:(out bycopy id)someValue_Oo; --(oneway void)methodCall_oO:(bycopy out id)someValue_oO; - --(oneway void)methodCall_rn:(in const id)someValue_rn; - --(oneway void)methodCall_oOn:(in bycopy out id)someValue_oOn; - -@end - -@interface ObjCClass <CommonProtocol> -{ - -} - -@end - -@implementation ObjCClass --(oneway void)methodCall_On:(in bycopy id)someValue_On { } --(oneway void)methodCall_nO:(bycopy in id)someValue_nO { } - --(oneway void)methodCall_Oo:(out bycopy id)someValue_Oo { } --(oneway void)methodCall_oO:(bycopy out id)someValue_oO { } - --(oneway void)methodCall_rn:(in const id)someValue_rn { } --(oneway void)methodCall_oOn:(in bycopy out id)someValue_oOn { } -@end - -Protocol *proto = @protocol(CommonProtocol); -struct objc_method_description *meth; -struct objc_method_description meth_object; - -int main() -{ - meth_object = protocol_getMethodDescription (proto, @selector(methodCall_On:), YES, YES); - meth = &meth_object; - if (strcmp (meth->types, "Vv12@0:4On@8")) - abort(); - meth_object = protocol_getMethodDescription (proto, @selector(methodCall_nO:), YES, YES); - meth = &meth_object; - if (strcmp (meth->types, "Vv12@0:4nO@8")) - abort(); - meth_object = protocol_getMethodDescription (proto, @selector(methodCall_Oo:), YES, YES); - meth = &meth_object; - if (strcmp (meth->types, "Vv12@0:4Oo@8")) - abort(); - meth_object = protocol_getMethodDescription (proto, @selector(methodCall_oO:), YES, YES); - meth = &meth_object; - if (strcmp (meth->types, "Vv12@0:4oO@8")) - abort(); - meth_object = protocol_getMethodDescription (proto, @selector(methodCall_rn:), YES, YES); - meth = &meth_object; - if (strcmp (meth->types, "Vv12@0:4rn@8")) - abort(); - meth_object = protocol_getMethodDescription (proto, @selector(methodCall_oOn:), YES, YES); - meth = &meth_object; - if (strcmp (meth->types, "Vv12@0:4oOn@8")) - abort(); - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/diag-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/diag-1.mm deleted file mode 100644 index 7c3245d9f..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/diag-1.mm +++ /dev/null @@ -1,12 +0,0 @@ -// Valid __thread specifiers. -// { dg-require-effective-target tls } - -__thread int g1; -extern __thread int g2; -static __thread int g3; - -void foo() -{ - extern __thread int l1; - static __thread int l2; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/diag-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/diag-2.mm deleted file mode 100644 index de88eb193..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/diag-2.mm +++ /dev/null @@ -1,26 +0,0 @@ -/* Invalid __thread specifiers. */ -/* { dg-require-effective-target tls } */ - -__thread extern int g1; /* { dg-error "'__thread' before 'extern'" } */ -__thread static int g2; /* { dg-error "'__thread' before 'static'" } */ -__thread __thread int g3; /* { dg-error "duplicate '__thread'" } */ -typedef __thread int g4; /* { dg-error "multiple storage classes" } */ - -void foo() -{ - __thread int l1; /* { dg-error "implicitly auto and declared '__thread'" } */ - auto __thread int l2; /* { dg-error "multiple storage classes" } */ - __thread extern int l3; /* { dg-error "'__thread' before 'extern'" } */ - register __thread int l4; /* { dg-error "multiple storage classes" } */ -} - -__thread void f1 (); /* { dg-error "storage class '__thread' invalid for function 'f1'" } */ -extern __thread void f2 (); /* { dg-error "storage class '__thread' invalid for function 'f2'" } */ -static __thread void f3 (); /* { dg-error "storage class '__thread' invalid for function 'f3'" } */ -__thread void f4 () { } /* { dg-error "storage class '__thread' invalid for function 'f4'" } */ - -void bar(__thread int p1); /* { dg-error "(invalid in parameter)|(specified for parameter)" } */ - -struct A { - __thread int i; /* { dg-error "storage class specified for 'i'" } */ -}; diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/diag-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/diag-3.mm deleted file mode 100644 index 0a597b20f..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/diag-3.mm +++ /dev/null @@ -1,11 +0,0 @@ -/* Report invalid extern and __thread combinations. */ -/* { dg-require-effective-target tls } */ - -extern int j; /* { dg-error "previously declared here" } */ -__thread int j; /* { dg-error "follows non-thread-local" } */ - -extern __thread int i; /* { dg-error "previously declared here" } */ -int i; /* { dg-error "follows thread-local" } */ - -extern __thread int k; /* This is fine. */ -__thread int k; diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/diag-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/diag-4.mm deleted file mode 100644 index 10ac2aada..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/diag-4.mm +++ /dev/null @@ -1,10 +0,0 @@ -/* Invalid __thread specifiers. */ -/* { dg-require-effective-target tls } */ - -__thread typedef int g4; /* { dg-error "multiple storage classes in declaration of" } */ - -void foo() -{ - __thread auto int l2; /* { dg-error "multiple storage classes in declaration of" } */ - __thread register int l4; /* { dg-error "multiple storage classes in declaration of" } */ -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/diag-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/diag-5.mm deleted file mode 100644 index 413d107f2..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/diag-5.mm +++ /dev/null @@ -1,4 +0,0 @@ -/* __thread specifiers on empty declarations. */ -/* { dg-require-effective-target tls } */ - -__thread struct foo; /* { dg-error "qualifiers can only be specified for objects and functions" } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/init-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/init-1.mm deleted file mode 100644 index 943088713..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/init-1.mm +++ /dev/null @@ -1,14 +0,0 @@ -/* Invalid initializations. */ -/* { dg-require-effective-target tls } */ - -__thread int i = 42; - -static int j; -__thread int *p = &j; - -/* Note that this is valid in C++ (unlike C) as a run-time initialization. */ -int *q = &i; - -/* Valid because "const int k" is an integral constant expression in C++. */ -__thread const int k = 42; -__thread const int l = k;
\ No newline at end of file diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/init-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/init-2.mm deleted file mode 100644 index 327c309e9..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/init-2.mm +++ /dev/null @@ -1,14 +0,0 @@ -/* Invalid initializations. */ -/* { dg-require-effective-target tls } */ - -extern __thread int i; -__thread int *p = &i; /* { dg-error "dynamic initialization" } */ - -extern int f(); -__thread int j = f(); /* { dg-error "dynamic initialization" } */ - -struct S -{ - S(); -}; -__thread S s; /* { dg-error "dynamic initialization" } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/static-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/static-1.mm deleted file mode 100644 index 6d58010eb..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/static-1.mm +++ /dev/null @@ -1,31 +0,0 @@ -// { dg-do run } -// { dg-require-effective-target tls } -// { dg-add-options tls } -// { dg-additional-sources "static-1a.mm" } - -extern "C" { -extern void abort (); -} -extern int test (); - -struct A -{ - static __thread int i; -}; - -__thread int A::i = 8; - -int -main () -{ - if (A::i != 8) - abort (); - - if (test ()) - abort (); - - if (A::i != 17) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/static-1a.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/static-1a.mm deleted file mode 100644 index 40974205f..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/static-1a.mm +++ /dev/null @@ -1,17 +0,0 @@ -// { dg-skip-if "Additional Source File" *-*-* "*" "" } -// This is the additional source file for test static-1.mm - -struct A -{ - static __thread int i; -}; - -int -test () -{ - if (A::i != 8) - return 1; - - A::i = 17; - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/tls.exp b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/tls.exp deleted file mode 100644 index a4ba6393f..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/tls.exp +++ /dev/null @@ -1,25 +0,0 @@ -# Load support procs. -load_lib obj-c++-dg.exp - -# If a testcase doesn't have special options, use these. -global DEFAULT_OBJCXXFLAGS -if ![info exists DEFAULT_OBJCXXFLAGS] then { - set DEFAULT_OBJCXXFLAGS " -ansi -pedantic-errors -Wno-long-long" -} - -# Initialize `dg'. -dg-init - -# Gather a list of all tests. -set tests [lsort [glob -nocomplain $srcdir/$subdir/*.mm]] - -# Main loop. -dg-runtest $tests "-fgnu-runtime" $DEFAULT_OBJCXXFLAGS - -# darwin targets can also run code with the NeXT runtime. -if [istarget "*-*-darwin*" ] { -dg-runtest $tests "-fnext-runtime" $DEFAULT_OBJCXXFLAGS -} - -# All done. -dg-finish diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/trivial.m b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/trivial.m deleted file mode 100644 index e2b8f45b8..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/tls/trivial.m +++ /dev/null @@ -1,3 +0,0 @@ -// { dg-require-effective-target tls } - -__thread int i; diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/too-many-args.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/too-many-args.mm deleted file mode 100644 index 6fee1b31b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/too-many-args.mm +++ /dev/null @@ -1,10 +0,0 @@ -/* { dg-do compile } */ - -@interface SomeClass -+ method:(int)foo; -@end - -int main(void) { - [SomeClass method:3, 4]; /* { dg-error "too many arguments to method \\'method:\\'" } */ - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/dg-torture.exp b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/dg-torture.exp deleted file mode 100644 index 9ef34e995..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/dg-torture.exp +++ /dev/null @@ -1,17 +0,0 @@ -# This harness is for tests that should be run at all optimisation levels. - -load_lib obj-c++-dg.exp - -dg-init - -# Gather a list of all tests. -set tests [lsort [glob -nocomplain $srcdir/$subdir/*.mm]] - -obj-c++-dg-runtest $tests "-fgnu-runtime" - -# darwin targets can also run code with the NeXT runtime. -if [istarget "*-*-darwin*" ] { - obj-c++-dg-runtest $tests "-fnext-runtime" -} - -dg-finish diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm deleted file mode 100644 index 2983c43c4..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm +++ /dev/null @@ -1,62 +0,0 @@ -/* Test the -fconstant-cfstrings option for constructing - compile-time immutable CFStrings, and their interoperation - with both Cocoa and CoreFoundation. This will only work - on MacOS X 10.1.2 and later. */ -/* Developed by Ziemowit Laski <zlaski@apple.com>. */ - -/* So far, CFString is darwin-only. */ -/* { dg-do run { target *-*-darwin* } } */ -/* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -/* { dg-options "-mconstant-cfstrings -framework Cocoa" } */ -/* Darwin10's linker emits a warning that the constant strings are incompatible with writable ones. - well, we don't implement writable ones at this juncture. */ -/* { dg-options "-mconstant-cfstrings -framework Cocoa -Wl,-w" { target *-*-darwin[123]* } } */ - -#import <Foundation/NSString.h> -#import <CoreFoundation/CFString.h> -#include <stdlib.h> - -void printOut(NSString *str) { - NSLog(@"The value of str is: %@", str); -} - -CFStringRef s0a = CFSTR("Compile-time string literal"); -CFStringRef s0b = CFSTR("Compile-time string literal"); - -void checkNSRange(NSRange r) { - if (r.location != 6 || r.length != 5) { - printOut(@"Range check failed"); - abort(); - } -} - -void checkCFRange(CFRange r) { - if (r.location != 6 || r.length != 5) { - printOut(@"Range check failed"); - abort(); - } -} - -int main(void) { - const NSString *s1 = @"Compile-time string literal"; - CFStringRef s2 = CFSTR("Compile-time string literal"); - - checkNSRange([@"Hello World" rangeOfString:@"World"]); - checkNSRange([(id)CFSTR("Hello World") rangeOfString:@"World"]); - checkNSRange([@"Hello World" rangeOfString:(id)CFSTR("World")]); - checkNSRange([(id)CFSTR("Hello World") rangeOfString:(id)CFSTR("World")]); - - checkCFRange(CFStringFind((CFStringRef)@"Hello World", (CFStringRef)@"World", 0)); - checkCFRange(CFStringFind(CFSTR("Hello World"), (CFStringRef)@"World", 0)); - checkCFRange(CFStringFind((CFStringRef)@"Hello World", CFSTR("World"), 0)); - checkCFRange(CFStringFind(CFSTR("Hello World"), CFSTR("World"), 0)); - - /* Check for string uniquing. */ - if (s0a != s0b || s0a != s2 || s1 != (id)s2) { - NSLog(@"String uniquing failed"); - abort (); - } - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-3.mm deleted file mode 100644 index 4a6142988..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-3.mm +++ /dev/null @@ -1,27 +0,0 @@ -/* Test for assigning compile-time constant-string objects to static variables. */ -/* Contributed by Ziemowit Laski <zlaski@apple.com> */ - -/* So far, CFString is darwin-only. */ -/* { dg-do run { target *-*-darwin* } } */ -/* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ -/* { dg-options "-mconstant-cfstrings -framework Foundation" } */ - -#include <stdlib.h> - -typedef const struct __CFString * CFStringRef; -static CFStringRef appKey = (CFStringRef) @"com.apple.soundpref"; - -static int CFPreferencesSynchronize (CFStringRef ref) { - return ref == appKey; -} - -static void PrefsSynchronize() -{ - if(!CFPreferencesSynchronize(appKey)) - abort(); -} - -int main(void) { - PrefsSynchronize(); - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-4.mm deleted file mode 100644 index 1155db5f8..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-4.mm +++ /dev/null @@ -1,21 +0,0 @@ -/* Test if constant CFStrings get placed in the correct section and that the - layout of the object is correct for both m32 and m64. */ -/* Contributed by Ziemowit Laski <zlaski@apple.com> */ - -/* So far, CFString is darwin-only. */ -/* { dg-do compile { target *-*-darwin* } } */ -/* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ -/* { dg-options "-mconstant-cfstrings" } */ - -typedef const struct __CFString * CFStringRef; -static CFStringRef appKey = (CFStringRef) @"com.apple.soundpref"; - -void *foo (void) -{ - void *a = (void *)appKey; - return a; -} - -/* { dg-final { scan-assembler ".section __DATA, __cfstring" } } */ -/* { dg-final { scan-assembler ".long\t___CFConstantStringClassReference\n\t.long\t1992\n\t.long\t.*\n\t.long\t19\n" { target { *-*-darwin* && { ! lp64 } } } } } */ -/* { dg-final { scan-assembler ".quad\t___CFConstantStringClassReference\n\t.long\t1992\n\t.space 4\n\t.quad\t.*\n\t.quad\t19\n" { target { *-*-darwin* && { lp64 } } } } } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm deleted file mode 100644 index cba188b70..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm +++ /dev/null @@ -1,36 +0,0 @@ -/* Test if ObjC constant string layout is checked properly, regardless of how - constant string classes get derived. */ -/* Contributed by Ziemowit Laski <zlaski@apple.com> */ - -/* { dg-do compile } */ -/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ -/* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ - -#include <objc/Object.h> -#include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ - -@interface NSString: Object -@end - -@interface NSSimpleCString : NSString { -@protected - char *bytes; - unsigned int numBytes; -} -@end - -@interface NSConstantString : NSSimpleCString -@end - -#ifdef NEXT_OBJC_USE_NEW_INTERFACE -Class _NSConstantStringClassReference; -#else -extern struct objc_class _NSConstantStringClassReference; -#endif - -const NSConstantString *appKey = @"MyApp"; - -/* { dg-final { scan-assembler ".section __OBJC, __cstring_object" { target { *-*-darwin* && { ! lp64 } } } } } */ -/* { dg-final { scan-assembler ".section __DATA, __objc_stringobj" { target { *-*-darwin* && { lp64 } } } } } */ -/* { dg-final { scan-assembler ".long\t__NSConstantStringClassReference\n\t.long\t.*\n\t.long\t5\n\t.data" { target { *-*-darwin* && { ! lp64 } } } } } */ -/* { dg-final { scan-assembler ".quad\t_OBJC_CLASS_._NSConstantString\n\t.quad\t.*\n\t.long\t5\n\t.space" { target { *-*-darwin* && { lp64 } } } } } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm deleted file mode 100644 index c54f89bd8..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm +++ /dev/null @@ -1,36 +0,0 @@ -/* Test if ObjC constant string layout is checked properly, regardless of how - constant string classes get derived. */ -/* Contributed by Ziemowit Laski <zlaski@apple.com> */ - -/* { dg-do compile } */ -/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ -/* { dg-options "-fconstant-string-class=XStr" } */ -/* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */ - -#include <objc/Object.h> -#include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ - -@interface XString: Object { -@protected - char *bytes; -} -@end - -@interface XStr : XString { -@public - unsigned int len; -} -@end - -#ifdef NEXT_OBJC_USE_NEW_INTERFACE -extern Class _XStrClassReference; -#else -extern struct objc_class _XStrClassReference; -#endif - -const XStr *appKey = @"MyApp"; - -/* { dg-final { scan-assembler ".section __OBJC, __cstring_object" { target { *-*-darwin* && { ! lp64 } } } } } */ -/* { dg-final { scan-assembler ".section __DATA, __objc_stringobj" { target { *-*-darwin* && { lp64 } } } } } */ -/* { dg-final { scan-assembler ".long\t__XStrClassReference\n\t.long\t.*\n\t.long\t5\n\t.data" { target { *-*-darwin* && { ! lp64 } } } } } */ -/* { dg-final { scan-assembler ".quad\t_OBJC_CLASS_._XStr\n\t.quad\t.*\n\t.long\t5\n\t.space" { target { *-*-darwin* && { lp64 } } } } } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-3.mm deleted file mode 100644 index 461d97b19..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-3.mm +++ /dev/null @@ -1,57 +0,0 @@ -/* Test the -fconstant-string-class=Foo option under the NeXT - runtime. */ -/* Developed by Markus Hitter <mah@jump-ing.de>. */ - -/* { dg-do run { target *-*-darwin* } } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -/* { dg-options "-fconstant-string-class=Foo" } */ -/* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ - -#include "../../../objc-obj-c++-shared/objc-test-suite-types.h" - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -@interface Foo { - void *dummy_class_ref; - char *cString; - unsigned int len; -} -+ initialize; -- (char *)customString; -@end - -TNS_STRING_REF_T _FooClassReference; /* Only used by NeXT. */ - -@implementation Foo -+ initialize {return self;} -- (char *)customString { - return cString; -} -@end - -int main () { - Foo *string = @"bla"; - Foo *string2 = @"bla"; - - if(string != string2) - abort(); - printf("Strings are being uniqued properly\n"); - -#ifdef __NEXT_RUNTIME__ - /* This memcpy has to be done before the first message is sent to a - constant string object. Can't be moved to +initialize since _that_ - is already a message. */ - - memcpy(&_FooClassReference, objc_getClass("Foo"), sizeof(_FooClassReference)); -#endif - - if (strcmp ([string customString], "bla")) { - abort (); - } - - printf([@"This is a working constant string object\n" customString]); - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-4.mm deleted file mode 100644 index c2cadd3df..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-4.mm +++ /dev/null @@ -1,33 +0,0 @@ -/* Ensure that the preprocessor handles ObjC string constants gracefully. */ -/* Author: Ziemowit Laski <zlaski@apple.com> */ - -/* { dg-do run { target *-*-darwin* } } */ -/* { dg-options "-fconstant-string-class=MyString" } */ -/* { dg-options "-mno-constant-cfstrings -fconstant-string-class=MyString" { target *-*-darwin* } } */ - -#include <stdlib.h> - -@interface MyString -{ - void *isa; - char *str; - int len; -} -@end - -#define kMyStringMacro1 "My String" -#define kMyStringMacro2 @"My String" - -void *_MyStringClassReference; - -@implementation MyString -@end - -int main(void) { - MyString* aString1 = @kMyStringMacro1; - MyString* aString2 = kMyStringMacro2; - if(aString1 != aString2) { - abort(); - } - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-7.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-7.mm deleted file mode 100644 index a44845b04..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-7.mm +++ /dev/null @@ -1,47 +0,0 @@ -/* Test to make sure that the const objc strings are the same across - scopes. */ -/* Developed by Andrew Pinski <pinskia@physics.uc.edu> */ - -/* { dg-do run } */ -/* { dg-options "-fconstant-string-class=Foo" } */ -/* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ - -#include "../../../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <objc/objc.h> - -@interface Foo: TestsuiteObject { - char *cString; - unsigned int len; -} -- (char *)customString; -@end - -#ifdef __NEXT_RUNTIME__ -#ifdef NEXT_OBJC_USE_NEW_INTERFACE -Class _FooClassReference; -#else -struct objc_class _FooClassReference; -#endif -#endif - -@implementation Foo : TestsuiteObject -- (char *)customString { - return cString; -} -@end - - -int main () { - Foo *string = @"bla"; - { - Foo *string2 = @"bla"; - - if(string != string2) - abort(); - printf("Strings are being uniqued properly\n"); - } - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-8.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-8.mm deleted file mode 100644 index 1949a6e65..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-8.mm +++ /dev/null @@ -1,45 +0,0 @@ -/* Test for assigning compile-time constant-string objects to static variables. */ -/* Contributed by Ziemowit Laski <zlaski@apple.com> */ - -/* { dg-do run { target *-*-darwin* } } */ -/* { dg-options "-fconstant-string-class=Foo" } */ -/* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ - -#include "../../../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdlib.h> - -@interface Foo: TestsuiteObject { - char *cString; - unsigned int len; -} -@end - -#ifdef __NEXT_RUNTIME__ -#ifdef NEXT_OBJC_USE_NEW_INTERFACE -Class _FooClassReference; -#else -struct objc_class _FooClassReference; -#endif -#endif - -@implementation Foo : TestsuiteObject -- (char *)customString { - return cString; -} -@end - -static const Foo *appKey = @"MyApp"; -static int CFPreferencesSynchronize (const Foo *ref) { - return ref == appKey; -} - -static void PrefsSynchronize(void) -{ - if(!CFPreferencesSynchronize(appKey)) - abort(); -} - -int main () { - PrefsSynchronize(); - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm deleted file mode 100644 index b4f15fdcd..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm +++ /dev/null @@ -1,28 +0,0 @@ -/* Test if ObjC constant strings get placed in the correct section. */ -/* Contributed by Ziemowit Laski <zlaski@apple.com> */ - -/* { dg-do compile } */ -/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ -/* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ - -#include <objc/Object.h> -#include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ - -@interface NSConstantString: Object { - char *cString; - unsigned int len; -} -@end - -#ifdef NEXT_OBJC_USE_NEW_INTERFACE -Class _NSConstantStringClassReference; -#else -extern struct objc_class _NSConstantStringClassReference; -#endif - -const NSConstantString *appKey = @"MyApp"; - -/* { dg-final { scan-assembler ".section __OBJC, __cstring_object" { target { *-*-darwin* && { ! lp64 } } } } } */ -/* { dg-final { scan-assembler ".section __DATA, __objc_stringobj" { target { *-*-darwin* && { lp64 } } } } } */ -/* { dg-final { scan-assembler ".long\t__NSConstantStringClassReference\n\t.long\t.*\n\t.long\t5\n\t.data" { target { *-*-darwin* && { ! lp64 } } } } } */ -/* { dg-final { scan-assembler ".quad\t_OBJC_CLASS_._NSConstantString\n\t.quad\t.*\n\t.long\t5\n\t.space" { target { *-*-darwin* && { lp64 } } } } } */ diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/string1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/string1.mm deleted file mode 100644 index e76eaa244..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/string1.mm +++ /dev/null @@ -1,22 +0,0 @@ -/* Based on a test case contributed by Nicola Pero. */ - -/* { dg-do run } */ -/* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -/* { dg-additional-sources "../../../objc-obj-c++-shared/nsconstantstring-class-impl.mm" } */ - -#include <string.h> -#include <stdlib.h> - -#ifndef __NEXT_RUNTIME__ -#include <objc/NXConstStr.h> -#else -#include "../../../objc-obj-c++-shared/nsconstantstring-class.h" -#endif - -int main(int argc, char **args) -{ - if (strcmp ([@"this is a string" cString], "this is a string")) - abort (); - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/strings.exp b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/strings.exp deleted file mode 100644 index 1d00ee08e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/strings.exp +++ /dev/null @@ -1,34 +0,0 @@ -# String tests that should be run at all optimization levels. - -# Copyright (C) 2010-2013 Free Software Foundation, Inc. -# -# This file is part of GCC. -# -# GCC is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3, or (at your option) -# any later version. -# -# GCC is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GCC; see the file COPYING3. If not see -# <http://www.gnu.org/licenses/>. - -load_lib obj-c++-dg.exp - -dg-init -# Gather a list of all tests. -set tests [lsort [glob -nocomplain $srcdir/$subdir/*.mm]] - -obj-c++-dg-runtest $tests "-fgnu-runtime" - -# Darwin targets can also run code with the NeXT runtime. -if [istarget "*-*-darwin*" ] { - obj-c++-dg-runtest $tests "-fnext-runtime" -} - -dg-finish diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/diag-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/diag-1.mm deleted file mode 100644 index 7c3245d9f..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/diag-1.mm +++ /dev/null @@ -1,12 +0,0 @@ -// Valid __thread specifiers. -// { dg-require-effective-target tls } - -__thread int g1; -extern __thread int g2; -static __thread int g3; - -void foo() -{ - extern __thread int l1; - static __thread int l2; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/thr-init-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/thr-init-1.mm deleted file mode 100644 index 62e322ed1..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/thr-init-1.mm +++ /dev/null @@ -1,25 +0,0 @@ -// { dg-do run } -// { dg-require-effective-target tls } -// { dg-add-options tls } - -extern "C" { -extern void abort (); -} - -static __thread int fstat = 1; - -int test_code(int b) -{ - fstat += b ; - return fstat; -} - -int main (int ac, char *av[]) -{ - int a = test_code(1); - - if ( a != 2 || fstat != 2 ) - abort (); - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/thr-init-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/thr-init-2.mm deleted file mode 100644 index 4e3f8e6e3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/thr-init-2.mm +++ /dev/null @@ -1,45 +0,0 @@ -// { dg-do run } -// { dg-require-effective-target tls } -// { dg-add-options tls } - -extern "C" { -extern void abort (); -} - -__thread int glb =1 ; - -static __thread int fstat = 2; - -int fa(int a) -{ -static __thread int as = 3; - as += a ; - return as; -} - -int fb(int b) -{ -static __thread int bs = 4; - bs += b ; - glb = bs; - return bs; -} - -int main (int ac, char *av[]) -{ - int a = 1; - - a = fa(fstat); - if ( a != 5 ) - abort () ; - - a = fa(glb); - if ( a != 6 ) - abort () ; - - a = fb(a); - if ( a != 10 || glb != 10 ) - abort () ; - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/thr-init-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/thr-init-3.mm deleted file mode 100644 index a3d66089e..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/thr-init-3.mm +++ /dev/null @@ -1,40 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target tls } */ -/* { dg-add-options tls } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ - -#include "../../../objc-obj-c++-shared/TestsuiteObject.m" -extern "C" { -extern void abort (); -} - -@interface tsObj: TestsuiteObject { - int ai ; -} - -- (int) fa:(int) n; - -@end - -@implementation tsObj - -- (int) fa:(int) n -{ -static __thread int as = 3; - as += n ; - return as ; -} - -@end - -int main (int ac, char *av[]) -{ - int a ; - tsObj *to = [tsObj new]; - - a = [to fa:5]; - if ( a != 8 ) - abort () ; - - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/tls.exp b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/tls.exp deleted file mode 100644 index 6d0668045..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/tls.exp +++ /dev/null @@ -1,16 +0,0 @@ -# This harness is for tests that should be run at all optimisation levels. - -load_lib obj-c++-dg.exp - -dg-init -# Gather a list of all tests. -set tests [lsort [glob -nocomplain $srcdir/$subdir/*.mm]] - -obj-c++-dg-runtest $tests "-fgnu-runtime" - -# darwin targets can also run code with the NeXT runtime. -if [istarget "*-*-darwin*" ] { - obj-c++-dg-runtest $tests "-fnext-runtime" -} - -dg-finish diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/trivial.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/trivial.mm deleted file mode 100644 index e2b8f45b8..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/tls/trivial.mm +++ /dev/null @@ -1,3 +0,0 @@ -// { dg-require-effective-target tls } - -__thread int i; diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/trivial.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/trivial.mm deleted file mode 100644 index 85f675144..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/trivial.mm +++ /dev/null @@ -1,11 +0,0 @@ -// { dg-do run } - -// { dg-xfail-run-if "OBJC2 runtime" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "-fgnu-runtime" } } - -#import "../../objc-obj-c++-shared/TestsuiteObject.m" - -int main(void) -{ - [TestsuiteObject class]; - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-1.mm deleted file mode 100644 index cbdace62d..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-1.mm +++ /dev/null @@ -1,42 +0,0 @@ -/* Test if the compiler accepts @throw / @try..@catch..@finally syntax. */ -/* Developed by Ziemowit Laski <zlaski@apple.com>. */ - -/* { dg-options "-fobjc-exceptions" } */ -/* { dg-do compile } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" -#include <stdio.h> -#include <setjmp.h> - -@interface Frob: TestsuiteObject -@end - -@implementation Frob: TestsuiteObject -@end - -static int exc_control = 0; - -int proc() { - if(exc_control) { - printf ("Throwing (%d)... ", exc_control); - @throw [Frob new]; - } - return 1; -} - -int foo() -{ - @try { - return proc(); - } - @catch (Frob* ex) { - if(exc_control > 1) { - printf("Rethrowing (%d)... ", exc_control); - @throw; - } - return 0; - } - @finally { - printf("In @finally block (%d)... ", exc_control); - } -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-10.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-10.mm deleted file mode 100644 index 5f6daa42b..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-10.mm +++ /dev/null @@ -1,25 +0,0 @@ -/* Check that taking the address of a local variable marked 'volatile' - by the compiler does not generate untoward errors. */ -/* Developed by Ziemowit Laski <zlaski@apple.com>. */ - -/* { dg-options "-fobjc-exceptions" } */ -/* { dg-do compile } */ - - -void foo (int *arg1, int *arg2) -{ - *arg1 = *arg2; -} - -void bar (int arg) { - int rcvr; - - @try { - rcvr = arg; - } - @finally { - int *rcvr0 = &rcvr; - foo (rcvr0, &arg); - } -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-11.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-11.mm deleted file mode 100644 index 320185fe0..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-11.mm +++ /dev/null @@ -1,40 +0,0 @@ -/* Ensure that @try/@catch blocks do not mess with types of - local objects (other than their volatile bits). */ - -/* { dg-options "-fobjc-exceptions" } */ -/* { dg-do compile } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -@protocol Proto1 -- (int)meth1; -@end - -@protocol Proto2 -- (int)meth2; -@end - -@interface MyClass: TestsuiteObject <Proto2> { - int a; -} -- (int)meth2; -- (TestsuiteObject *)parm1: (id)p1 parm2: (id<Proto1>)p2; -@end - -MyClass *mc1, *mc2; - -@implementation MyClass -- (int)meth2 { - return a; -} -- (TestsuiteObject *)parm1: (id)p1 parm2: (id<Proto1>)p2 { - @try { - mc2 = p2; /* { dg-warning "type .id <Proto1>. does not conform to the .Proto2. protocol" } */ - } - @catch (id exc) { - return exc; - } - mc1 = p1; /* no warning here! */ - return self; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-12.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-12.mm deleted file mode 100644 index e08f321e8..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-12.mm +++ /dev/null @@ -1,51 +0,0 @@ -/* Ensure that typeof()-typed variables inside the @try { } block that - "inherit" their EH-volatileness from other variables in the stack frame - do not trigger "discards qualifiers from target pointer type" warnings. */ - -/* { dg-options "-fobjc-exceptions" } */ -/* { dg-do compile } */ - -typedef volatile int IOSharedLockData; - -@interface TestMyTests -- (void) testSpoon; -@end - -extern void some_func (int *); - -@implementation TestMyTests -- (void) testSpoon { - int i = 5; - - do { - @try { - typeof(i) j = 6; - some_func (&j); - } - @catch (id exc) { - @throw; - } - } while(0); - - do { - @try { - typeof(i) j = 7; - some_func (&j); - } - @catch (id exc) { - @throw; - } - } while(0); - - do { - @try { - typeof(i) j = 8; - some_func (&j); - } - @catch (id exc) { - @throw; - } - } while(0); - -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-13.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-13.mm deleted file mode 100644 index 905702fde..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-13.mm +++ /dev/null @@ -1,67 +0,0 @@ -/* Ensure that variables declared volatile by the user (as opposed to - synthesized by the EH-volatization machinery) _do_ trigger - "discards qualifiers from target pointer type" warnings. */ - -/* { dg-options "-fobjc-exceptions" } */ -/* { dg-do compile } */ - -@interface TestMyTests -- (void) testSpoon; -@end - -extern void some_func (int *); - -@implementation TestMyTests -- (void) testSpoon { - volatile int i = 5; - int q = 99; - - do { - @try { - typeof(i) j = 6; - typeof(q) k = 66; - some_func (&j); -/* { dg-error "invalid conversion" "" { target *-*-* } 23 } */ -/* { dg-error "initializing argument" "" { target *-*-* } 12 } */ - some_func (&k); - } - @catch (id exc) { - @throw; - } - } while(0); - - do { - @try { - typeof(i) j = 7; - typeof(q) k = 77; - some_func (&k); - some_func (&j); -/* { dg-error "invalid conversion" "" { target *-*-* } 38 } */ -/* The following is disabled as it is already checked above and the testsuites seems - to count multiple different identical errors on the same line only once */ -/* dg-error "initializing argument" "" { target *-*-* } 12 */ - } - @catch (id exc) { - @throw; - } - } while(0); - - do { - @try { - typeof(q) k = 88; - typeof(i) j = 8; - some_func (&j); -/* { dg-error "invalid conversion" "" { target *-*-* } 53 } */ -/* The following is disabled as it is already checked above and the testsuites seems - to count multiple different identical errors on the same line only once */ -/* dg-error "initializing argument" "" { target *-*-* } 12 */ - some_func (&k); - } - @catch (id exc) { - @throw; - } - } while(0); - -} -@end - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-14.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-14.mm deleted file mode 100644 index 1d922b509..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-14.mm +++ /dev/null @@ -1,24 +0,0 @@ -/* { dg-options "-fobjc-exceptions" } */ -/* { dg-do compile } */ - -typedef unsigned char uint8_t; -typedef uint8_t foo[24]; - -void thingy(foo a) -{ -} - -int main() -{ - foo bar; - - @try { - } - @finally { - } - - thingy(bar); - - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-15.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-15.mm deleted file mode 100644 index 01b3d5cbf..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-15.mm +++ /dev/null @@ -1,34 +0,0 @@ -/* Test if addition of 'volatile' to object causes bogus error in presence of try-catch. */ -/* { dg-options "-fobjc-exceptions" } */ -/* { dg-do compile } */ - -@interface Exception -@end - -class CppObj { -public: - void constMethod() const { - } -}; - -@interface MyObject : Exception -- (void)doSomething; -- (void)myMethod; -@end - -@implementation MyObject -- (void)doSomething { -} - -- (void)myMethod { - CppObj cppObj; - - @try { - [self doSomething]; - } - @catch (Exception *exception) { - } - - cppObj.constMethod(); -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-16.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-16.mm deleted file mode 100644 index 4aea2647a..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-16.mm +++ /dev/null @@ -1,20 +0,0 @@ -/* Test if addition of 'volatile' to object causes bogus error in presence of try-catch. */ -/* { dg-options "-fobjc-exceptions" } */ -/* { dg-do compile } */ - -extern void func( void * outData) ; -struct Point { - short v; - short h; -}; - - -void foo () -{ - Point eventLocation; - @try { - } @catch (id iiii) { - } - - func( &eventLocation ); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-17.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-17.mm deleted file mode 100644 index 7c642aca0..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-17.mm +++ /dev/null @@ -1,18 +0,0 @@ -/* Test if addition of 'volatile' to object causes bogus error in presence of try-catch. */ -/* { dg-options "-fobjc-exceptions" } */ -/* { dg-do compile } */ - -struct Point { - short v; - short h; -}; - -void foo () -{ - Point eventLocation; - @try { - } @catch (id iiii) { - } - - Point p = eventLocation; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-2.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-2.mm deleted file mode 100644 index d214fa70d..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-2.mm +++ /dev/null @@ -1,81 +0,0 @@ -/* Test out '@catch(id foo) {...}', which should catch - all uncaught exceptions. */ -/* Developed by Ziemowit Laski <zlaski@apple.com>. */ - -/* { dg-do run } */ -/* { dg-xfail-run-if "PR23616" { *-*-* } { "-fgnu-runtime" } { "-fnext-runtime" } } */ -/* { dg-xfail-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" "-fgnu-runtime" } { "" } } */ -/* { dg-options "-fobjc-exceptions" } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdio.h> -#include <stdlib.h> - -/* The following is not required in actual user code; we include it - here to check that the compiler generates an internal definition of - _setjmp that is consistent with what <setjmp.h> provides. */ -#include <setjmp.h> - -#define CHECK_IF(expr) if(!(expr)) abort() - -@interface Frob: TestsuiteObject -@end - -@implementation Frob: TestsuiteObject -@end - -static Frob* _connection = nil; - -//-------------------------------------------------------------------- - - -void test (TestsuiteObject* sendPort) -{ - int cleanupPorts = 1; - Frob* receivePort = nil; - - @try { - printf ("receivePort = %p\n", receivePort); - printf ("sendPort = %p\n", sendPort); - printf ("cleanupPorts = %d\n", cleanupPorts); - printf ("---\n"); - - receivePort = (Frob *) -1; - _connection = (Frob *) -1; - printf ("receivePort = %p\n", receivePort); - printf ("sendPort = %p\n", sendPort); - printf ("cleanupPorts = %d\n", cleanupPorts); - printf ("---\n"); - - receivePort = nil; - sendPort = nil; - cleanupPorts = 0; - - printf ("receivePort = %p\n", receivePort); - printf ("sendPort = %p\n", sendPort); - printf ("cleanupPorts = %d\n", cleanupPorts); - printf ("---\n"); - - @throw [TestsuiteObject new]; - } - @catch(Frob *obj) { - printf ("Exception caught by incorrect handler!\n"); - CHECK_IF(0); - } - @catch(id exc) { - printf ("Exception caught by correct handler.\n"); - printf ("receivePort = %p (expected 0x0)\n", receivePort); - printf ("sendPort = %p (expected 0x0)\n", sendPort); - printf ("cleanupPorts = %d (expected 0)\n", cleanupPorts); - printf ("---"); - CHECK_IF(!receivePort); - CHECK_IF(!sendPort); - CHECK_IF(!cleanupPorts); - } -} - -int main (void) { - test((TestsuiteObject *)-1); - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-3.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-3.mm deleted file mode 100644 index b0822d3d7..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-3.mm +++ /dev/null @@ -1,18 +0,0 @@ -/* Test if caught exception objects are accessible inside the - @catch block. (Yes, I managed to break this.) */ -/* Author: Ziemowit Laski <zlaski@apple.com> */ - -/* { dg-do compile } */ -/* { dg-options "-fobjc-exceptions" } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -const char *foo(void) -{ - @try { - return "foo"; - } - @catch (TestsuiteObject* theException) { - return [theException name]; - } -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-4.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-4.mm deleted file mode 100644 index 8dc033120..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-4.mm +++ /dev/null @@ -1,25 +0,0 @@ -/* Check that the compiler does not incorrectly complain about - exceptions being caught by previous @catch blocks. */ -/* Author: Ziemowit Laski <zlaski@apple.com> */ - -/* { dg-do compile } */ -/* { dg-options "-Wall -fobjc-exceptions" } */ - -@interface Exception -@end - -@interface FooException : Exception -@end - -extern void foo(); - -void test() -{ - @try { - foo(); - } - @catch (FooException* fe) { - } - @catch (Exception* e) { - } -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-5.mm deleted file mode 100644 index f12d7e2cc..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-5.mm +++ /dev/null @@ -1,26 +0,0 @@ -/* Check that the compiler does correctly complain about - exceptions being caught by previous @catch blocks. */ -/* Force the use of NeXT runtime to see that we don't ICE after - generating the warning message. */ - -/* { dg-do compile } */ -/* { dg-options "-Wall -fnext-runtime -fobjc-exceptions" } */ - -@interface Exception -@end - -@interface FooException : Exception -@end - -extern void foo(); - -void test() -{ - @try { - foo(); - } - @catch (Exception* e) { /* { dg-warning "earlier handler" } */ - } - @catch (FooException* fe) { /* { dg-warning "will be caught" } */ - } -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-6.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-6.mm deleted file mode 100644 index e0022b299..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-6.mm +++ /dev/null @@ -1,14 +0,0 @@ -/* A very simple @try-@catch example. */ - -/* { dg-do compile } */ -/* { dg-options "-fobjc-exceptions" } */ - -int foo(void) { - @try { - return 2; - } - @catch (id foo) { - return 1; - } - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-7.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-7.mm deleted file mode 100644 index ecab4e6e3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-7.mm +++ /dev/null @@ -1,24 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-fobjc-exceptions" } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -int main (int argc, const char * argv[]) { - TestsuiteObject * pool = [TestsuiteObject new]; - int a; - - if ( 1 ) { - @try { - a = 1; - } - @catch (TestsuiteObject *e) { - a = 2; - } - @finally { - a = 3; - } - } - - [pool free]; - return 0; -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-8.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-8.mm deleted file mode 100644 index 7adf2f9e3..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-8.mm +++ /dev/null @@ -1,27 +0,0 @@ -/* Test for graceful compilation of @synchronized statements. */ - -/* { dg-do compile } */ -/* { dg-options "-fobjc-exceptions" } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" - -@interface Derived: TestsuiteObject -- (id) meth; -@end - -@implementation Derived -- (id) meth { - return self; -} - -static Derived* rewriteDict(void) { - static Derived *sDict = 0; - if (sDict == 0) { - @synchronized ([Derived class]) { - if (sDict == 0) - sDict = [Derived new]; - } - } - return sDict; -} -@end diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-9.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-9.mm deleted file mode 100644 index 73c7c9917..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/try-catch-9.mm +++ /dev/null @@ -1,69 +0,0 @@ -/* Check that local variables that get modified inside the @try - block survive until the @catch block is reached. */ -/* Developed by Ziemowit Laski <zlaski@apple.com>. */ - -/* { dg-do run } */ -/* { dg-xfail-run-if "PR23616" { *-*-* } { "-fgnu-runtime" } { "-fnext-runtime" } } */ -/* { dg-xfail-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" "-fgnu-runtime" } { "" } } -/* { dg-prune-output ".*internal compiler error.*" } */ -/* { dg-options "-fobjc-exceptions -O2" } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdlib.h> -#include <stdio.h> - -int gi1 = 9, gi2 = 19; -float gf1 = 9.0, gf2 = 19.0; -id obj2 = nil; - -void foo (int arg1, float *arg2) -{ - int *pi = &gi1; - float *pf = &gf1; - id obj1 = nil; - int local1 = 45, local2 = 47; - float local3 = 3.0, local4 = 4.0; - register int local5 = 15; - static float local6 = 16.0; - - @try { - local1 = 123; - local2 = 345; - local3 = 5.0; - local4 = 6.0; - local5 = 17; - local6 = 18.0; - pi = &gi2; - pf = &gf2; - obj2 = obj1 = [TestsuiteObject new]; - arg1 = 17; - arg2 = &gf2; - - @throw [TestsuiteObject new]; - } - @catch (TestsuiteObject *obj) { - if (local1 != 123 || local2 != 345 || local3 != 5.0 - || local4 != 6.0 || local5 != 17 || local6 != 18.0) { - printf("Abort 1\n"); - abort(); - } - if (pi != &gi2 || pf != &gf2) { - printf("Abort 2\n"); - abort(); - } - if (!obj1 || obj1 != obj2) { - printf("Abort 3\n"); - abort(); - } - if (arg1 != 17 || arg2 != &gf2) { - printf("Abort 4\n"); - abort(); - } - } -} - -int main(void) { - foo(15, &gf1); - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/typedef-alias-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/typedef-alias-1.mm deleted file mode 100644 index 263ce010a..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/typedef-alias-1.mm +++ /dev/null @@ -1,17 +0,0 @@ -/* Typedefs of ObjC types should work without any bogus warnings. */ -/* { dg-do compile } */ - -#include "../objc-obj-c++-shared/TestsuiteObject.h" -#include <objc/objc.h> - -typedef TestsuiteObject MyObject; - -int main (int argc, const char * argv[]) -{ - TestsuiteObject* a = nil; - MyObject* b = a; - TestsuiteObject* c = b; - - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/va-meth-1.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/va-meth-1.mm deleted file mode 100644 index 2a120ee5c..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/va-meth-1.mm +++ /dev/null @@ -1,75 +0,0 @@ -/* Based on objc/execute/va_method.m, by Nicola Pero */ - -/* { dg-do run } */ -/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ -#include "../objc-obj-c++-shared/TestsuiteObject.m" -#include <stdarg.h> -#include <stdlib.h> - -/* Test methods with "C-style" trailing arguments, with or without ellipsis. */ - -@interface MathClass: TestsuiteObject -/* sum positive numbers; -1 ends the list */ -+ (int) sum: (int) firstNumber, int secondNumber, ...; -+ (int) prod: (int) firstNumber, int secondNumber, int thirdNumber; -+ (int) minimum: (int) firstNumber, ...; -@end - -extern "C" int some_func(id self, SEL _cmd, int firstN, int secondN, int thirdN, ...) { - return firstN + secondN + thirdN; -} - -@implementation MathClass -+ (int) sum: (int) firstNumber, int secondNumber, ... -{ - va_list ap; - int sum = 0, number = 0; - - va_start (ap, secondNumber); - number = firstNumber + secondNumber; - - while (number >= 0) - { - sum += number; - number = va_arg (ap, int); - } - - va_end (ap); - - return sum; -} -+ (int) prod: (int) firstNumber, int secondNumber, int thirdNumber { - return firstNumber * secondNumber * thirdNumber; -} -+ (int) minimum: (int) firstNumber, ... -{ - va_list ap; - int minimum = 999, number = 0; - - va_start (ap, firstNumber); - number = firstNumber; - - while (number >= 0) - { - minimum = (minimum < number ? minimum: number); - number = va_arg (ap, int); - } - - va_end (ap); - - return minimum; -} -@end - -int main (void) -{ - if ([MathClass sum: 1, 2, 3, 4, 5, -1] != 15) - abort (); - if ([MathClass prod: 4, 5, 6] != 120) - abort (); - if ([MathClass minimum: 17, 9, 133, 84, 35, -1] != 9) - abort (); - - return 0; -} - diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/warn5.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/warn5.mm deleted file mode 100644 index 5f9b7a7f7..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/warn5.mm +++ /dev/null @@ -1,25 +0,0 @@ -/* Check to make sure that a c++ program compiled in objective-c++ mode - has no trace of meta-data specific diagnosis coming out of compiling it. - This is replicate of warn5.C. -*/ -// { dg-do assemble } -// { dg-options "-Wpointer-arith" } - -double X(const double x) { return x; } -double Y() { return 1.0; } -double Z() { return 2.0; } - -struct A { - void bar() { } - void foo() { } -}; - -typedef void (A::*pmf)(); - -static int mememe = &A::foo - &A::bar; // { dg-error "" } -pmf b = &A::foo-1; // { dg-error "" } - -int main() { - double y; - y=X(Y-Z); // { dg-error "" } -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/warn6.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/warn6.mm deleted file mode 100644 index a74f8025d..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/warn6.mm +++ /dev/null @@ -1,7 +0,0 @@ -// PR c++/17212 -// { dg-options "-Wformat -Wno-format-zero-length" } - -void f() -{ - __builtin_printf(""); -} diff --git a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/warn7.mm b/gcc-4.8.1/gcc/testsuite/obj-c++.dg/warn7.mm deleted file mode 100644 index 6e84069ee..000000000 --- a/gcc-4.8.1/gcc/testsuite/obj-c++.dg/warn7.mm +++ /dev/null @@ -1,10 +0,0 @@ -// PR c++/50757 -// { dg-options "-Wformat -Wno-nonnull" } - -extern void *f (void *__s) __attribute__ ((__nonnull__ (1))); - -int main() -{ - void* const s = 0; - f(s); -} |