[llvm-commits] [llvm-gcc-4.2] r54496 - in /llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg: 5938756.m AppDelegate.h AppDelegate.m cfstring-nsstring-type.m compatibility-alias.m dwarf-prototypes.m encode-int128_t.m method-attribute-4.m objc-6061276.m objc-foreach-syntax.m objc-getter-bug.m objc2-6003871.m objc2-ivar-offset-2.m property-id-proto-getter.m property-in-category.m property-setter-bug.m property-specialized-1.m property-specialized-2.m super-after-trycatch.m sync-objc-exception.m

Bill Wendling isanbard at gmail.com
Thu Aug 7 17:50:18 PDT 2008


Author: void
Date: Thu Aug  7 19:50:18 2008
New Revision: 54496

URL: http://llvm.org/viewvc/llvm-project?rev=54496&view=rev
Log:
Sync up the objc.dg testsuite with Apple's GCC testsuite.

Added:
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/5938756.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/AppDelegate.h
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/AppDelegate.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/cfstring-nsstring-type.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/compatibility-alias.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/dwarf-prototypes.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/encode-int128_t.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-4.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-6061276.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-foreach-syntax.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-getter-bug.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-6003871.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-ivar-offset-2.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-id-proto-getter.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-in-category.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-setter-bug.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-specialized-1.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-specialized-2.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/super-after-trycatch.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/sync-objc-exception.m

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/5938756.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/5938756.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/5938756.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/5938756.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,24 @@
+/* APPLE LOCAL file 5938756 */
+/* This code caused an ICE */
+/* { dg-do compile } */
+/* { dg-options "-gdwarf-2 -Os" } */
+
+ at class NSException;
+
+struct empty {
+};
+
+ at interface PC {
+}
+ at end
+
+ at implementation PC
+- (id) fn {
+  signed char isSet = 0;
+  struct empty sb;
+  if (isSet) {
+    @try { }
+    @catch (NSException *localException) { }
+  }
+}
+ at end 

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/AppDelegate.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/AppDelegate.h?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/AppDelegate.h (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/AppDelegate.h Thu Aug  7 19:50:18 2008
@@ -0,0 +1,13 @@
+/* APPLE LOCAL file radar 5839812 - synthesized methods should be given
+   the location of the '@synthesize' statement.  */
+/*  AppDelegate.m, AppDelegate.h  */
+
+#import <Cocoa/Cocoa.h>
+
+ at interface AppDelegate : NSObject {
+    NSString *name;
+}
+
+ at property (retain) NSString *name;
+
+ at end

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/AppDelegate.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/AppDelegate.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/AppDelegate.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/AppDelegate.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,18 @@
+/* APPLE LOCAL file radar 5839812 - synthesized methods should be given
+   the location of the '@synthesize' statement.  */
+/*  AppDelegate.m, AppDelegate.h  */
+/* { dg-do compile } */
+/* { dg-options " -O0 -gdwarf-2 -c -dA -mmacosx-version-min=10.5" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-final { scan-assembler "AppDelegate.m:12" } } */
+
+#import "AppDelegate.h"
+
+ at implementation AppDelegate
+
+ at synthesize name;
+
+- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
+    self.name = @"Fred";
+}
+ 
+ at end

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/cfstring-nsstring-type.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/cfstring-nsstring-type.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/cfstring-nsstring-type.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/cfstring-nsstring-type.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,31 @@
+/* APPLE LOCAL file radar 5982789 */
+/* Type of a CFString literal is NSString. This test case
+   should not issue any warning as "length" is a method 
+   in NSString class.
+*/
+/* { dg-options "-Wall -Werror" } */
+/* { dg-do compile } */
+
+#import <Foundation/Foundation.h>
+
+ at interface MyTestClassA : NSObject
+{
+}
+- (short) length;
+ at end
+
+ at implementation MyTestClassA
+- (short) length;
+{
+    return 1;
+}
+ at end
+
+
+int main (int argc, const char * argv[])
+{    
+    NSUInteger testLen = [@"teststring" length];
+    NSLog(@"teststring: %ld", (long)testLen);
+        
+    return 0;
+}

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/compatibility-alias.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/compatibility-alias.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/compatibility-alias.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/compatibility-alias.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,21 @@
+/* APPLE LOCAL file radar 5835805 */
+/* Test use of alias class name in defining a new class and its super class
+   results in proper diagnostics if class/super class is being mis-used.
+*/
+/* { dg-do compile } */
+
+ at interface Super @end
+
+ at interface MyWpModule @end
+
+ at compatibility_alias  MyAlias MyWpModule;
+
+ at compatibility_alias  AliasForSuper Super;
+
+ at interface MyAlias : AliasForSuper // expected-error {{duplicate interface declaration for class 'MyWpModule'}}
+ at end /* { dg-error "duplicate interface declaration for class 'MyWpModule'" } */
+     /* { dg-error "redefinition of 'struct MyWpModule'" "" { target *-*-* } 16 } */
+
+ at implementation MyAlias : AliasForSuper /* { dg-error "conflicting super class name 'Super'" } */
+ at end
+

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/dwarf-prototypes.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/dwarf-prototypes.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/dwarf-prototypes.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/dwarf-prototypes.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,19 @@
+/* APPLE LOCAL file radar 4355182 */
+/* Check that AT_prototyped is generated for objective-c as well. */
+/* { dg-options "-mmacosx-version-min=10.5 -gdwarf-2 -dA" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-options "-gdwarf-2 -dA" { target arm*-*-darwin* } } */
+/* { dg-final { scan-assembler "DW_AT_prototyped" } } */
+
+int foo (int);
+
+int
+foo (int x)
+{
+  return x;
+}
+
+int 
+main (int argc, char *argv)
+{
+  return foo (5);
+}

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/encode-int128_t.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/encode-int128_t.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/encode-int128_t.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/encode-int128_t.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,16 @@
+/* APPLE LOCAL file radar 5996271 */
+/* encodeing support for 128-bit ints. */
+/* { dg-do run } */
+
+extern void abort(void);
+
+int main () {
+#if __LP64__
+    if (@encode(__uint128_t)[0] != 'T')
+      abort();
+    if (@encode(__int128_t)[0] != 't')
+      abort();
+#endif
+    return 0;
+}
+

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-4.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-4.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-4.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-4.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,21 @@
+/* APPLE LOCAL file radar 6049617 */
+/* Test of implementation of method attributes on class methods. */
+/* { dg-do compile } */
+
+ at interface NSString 
+- (const char *)lossyCString __attribute__((deprecated));
++ (const char *)stringWithContentsOfFile __attribute__((deprecated));
+ at end
+
+void foo (NSString *p)
+{
+	id pid;
+        Class pclass;
+
+	[p lossyCString];	/* { dg-warning "\\'lossyCString\\' is deprecated" } */
+	[NSString stringWithContentsOfFile]; /* { dg-warning "\\'stringWithContentsOfFile\\' is deprecated" } */
+
+	[pid lossyCString];			// OK
+	[pclass stringWithContentsOfFile];      // OK
+}
+

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-6061276.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-6061276.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-6061276.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-6061276.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,35 @@
+/* APPLE LOCAL file radar 6061276 */
+/* Corner protocol case should not result in any warning on line 32 */
+/* { dg-do compile } */
+
+#import <Foundation/Foundation.h>
+
+
+ at class ASTNode;
+
+ at protocol ScopeLookup 
+- (ASTNode<ScopeLookup>*) containingScope;
+ at end
+
+ at interface ASTNode : NSObject {}
+ at end
+
+ at implementation ASTNode
+ at end
+
+ at interface Expression : ASTNode {}
+ at end
+
+ at implementation Expression
+- (ASTNode<ScopeLookup>*) containingScope { return nil; }
+ at end
+
+ at interface DeclarationContainingStatement : Expression <ScopeLookup> {}
+ at end
+
+ at implementation DeclarationContainingStatement 
+- (void)dummy {
+    ASTNode<ScopeLookup> *containingScope = [self containingScope];
+    if (containingScope) {}
+}
+ at end

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-foreach-syntax.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-foreach-syntax.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-foreach-syntax.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-foreach-syntax.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,9 @@
+/* APPLE LOCAL file radar 5925639 */
+/* { dg-options "-std=c99 -mmacosx-version-min=10.5" } */
+/* { dg-do compile } */
+
+static int test_NSURLGetResourceValueForKey( id keys )
+{
+ for ( id key; in keys) { /* { dg-error "expected expression before" } */
+  } 
+}

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-getter-bug.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-getter-bug.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-getter-bug.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-getter-bug.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,41 @@
+/* APPLE LOCAL file radar 5822637 */
+/* Check that receiver of a getter call which is a messaging expression
+   does not call the message more than once. */
+/* { dg-options "-mmacosx-version-min=10.5 -framework Foundation" } */
+/* { dg-do run } */
+
+#include <Foundation/Foundation.h>
+
+static int c;
+
+ at interface I : NSObject
+{
+	int count;
+}
+- (NSArray *)processResults;
+- (int) Another;
+ at end
+
+ at implementation I
+
+- (NSArray *)processResults 
+{
+    ++c;
+    return nil;
+}
+
+- (int) Another
+{
+int totalResults = [self processResults].count;
+return 0;
+}
+ at end
+
+int main()
+{
+	I* p = [[I alloc] init];
+	[p Another];
+
+	return c-1;
+}
+

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-6003871.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-6003871.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-6003871.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-6003871.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,18 @@
+/* APPLE LOCAL file radar 6003871 */
+/* { dg-do compile { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-options "-fnext-runtime -fobjc-gc" } */
+/* { dg-do compile } */
+
+#import "Cocoa/Cocoa.h"
+
+ at interface TEST : NSObject 
+{
+        
+        int *filesEnt[3000000];
+}
+ at end
+
+
+ at implementation TEST
+ at end
+

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-ivar-offset-2.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-ivar-offset-2.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-ivar-offset-2.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-ivar-offset-2.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,18 @@
+/* APPLE LOCAL file radar 5724385 */
+/* Test that alignment of a bitfield is alignment of its underlying type. */
+/* { dg-options "-std=c99 -mmacosx-version-min=10.5 -m64" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-options "-std=c99" { target arm*-*-darwin* } } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+ at interface Foo {
+ at private
+    int first;
+    int :1;
+    int third :1;
+    int :1;
+    int fifth :1;
+}
+ at end
+ at implementation Foo 
+ at end
+/* { dg-final { scan-assembler "\t.quad\t_OBJC_IVAR_\\\$_Foo.third\n\t.quad\tL_OBJC_METH_VAR_NAME_1\n\t.quad\tL_OBJC_METH_VAR_TYPE_1\n\t.long\t2" } } */

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-id-proto-getter.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-id-proto-getter.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-id-proto-getter.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-id-proto-getter.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,20 @@
+/* APPLE LOCAL file radar 5893391 */
+/* Test that property-style getter call syntax can be used on objects
+   of 'id' type qualified by protocols which implement the getter
+   method declared in that protocol. */
+/* { dg-options "-mmacosx-version-min=10.5 -framework Foundation -fobjc-gc" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-do run { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+
+#include <Foundation/Foundation.h>
+
+int main()
+{
+        id spam = [NSArray arrayWithObjects:@"Spam", @"spam", nil];
+        NSString *spamText= [ spam description ];
+        id<NSObject> eggs = [NSArray arrayWithObjects:@"Spam", @"spam", nil];
+        NSString *eggsText= eggs.description;
+        NSObject *bacon = [NSArray arrayWithObjects:@"Spam", @"spam", nil];
+        NSString *baconText= bacon.description;
+        NSLog(@"spam=%@, eggs=%@, bacon=%@", spamText, eggsText, baconText);
+	return 0;
+}

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-in-category.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-in-category.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-in-category.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-in-category.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,32 @@
+/* APPLE LOCAL file radar 5962694 */
+/* Test that a property declared in category's protocol list can be
+   synthesize (dynamic only) in category's implementation. */
+/* { dg-options "-mmacosx-version-min=10.5" { target *-*-darwin* } } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+#import <Foundation/Foundation.h>
+
+ at protocol MyProtocol
+ at property float                 myFloat;
+ at end
+
+ at interface MyObject : NSObject {
+        }
+ at end
+
+ at interface MyObject (MyProtocol) <MyProtocol>
+ at end
+
+ at implementation MyObject (MyProtocol)
+ at dynamic myFloat;
+ at end
+
+int main (int argc, const char * argv[]) {
+    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
+
+    // insert code here...
+    NSLog(@"Hello, World!");
+    [pool drain];
+    return 0;
+}
+

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-setter-bug.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-setter-bug.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-setter-bug.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-setter-bug.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,86 @@
+/* APPLE LOCAL file radar 5852190 */
+/* { dg-options "-mmacosx-version-min=10.5 -framework Cocoa" } */
+/* { dg-do run { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+
+#import <Cocoa/Cocoa.h>
+
+ at interface Foo : NSObject
+{
+ at public
+	BOOL _gratuitousBool;
+	NSString* _assignedString;
+	NSString* _retainedString;
+	NSString* _copiedString;
+}
+
+ at property BOOL gratuitousBool;
+ at property (assign) NSString* assignedString;
+ at property (retain) NSString* retainedString;
+ at property (copy) NSString* copiedString;
+
+- (BOOL)gratuitousBool;
+- (NSString*)assignedString;
+- (NSString*)retainedString;
+- (NSString*)copiedString;
+
+-(void)setGratuitousBool:(BOOL)gratuitousBool;
+-(void)setAssignedString:(NSString*)assignedString;
+-(void)setRetainedString:(NSString*)retainedString;
+-(void)setCopiedString:(NSString*)copiedString;
+
+ at end
+
+//---------------------------------------------------------------------------
+
+ at implementation Foo
+
+ at synthesize gratuitousBool = _gratuitousBool;
+ at synthesize assignedString = _assignedString;
+ at synthesize retainedString = _retainedString;
+ at synthesize copiedString = _copiedString;
+
+- (id)init
+{
+	self = [super init];
+	if(self == nil) return nil;
+	
+	self.gratuitousBool = YES;
+	self.assignedString = @"AssignedString";
+	self.retainedString = @"RetainedString";
+	self.copiedString = @"CopiedString";
+	
+	return self;
+}
+
+ at end
+
+//***************************************************************************
+
+static void TestGratuitousBool(Foo* foo)
+{
+	NSLog(@"gratuitousBool initial value: %d", foo.gratuitousBool);
+        if (foo.gratuitousBool != YES)
+	  abort();
+	foo.gratuitousBool = NO;
+	NSLog(@"gratuitousBool new value: %d", foo.gratuitousBool);
+	if (foo.gratuitousBool != NO)
+	  abort();
+
+	const BOOL oldGratuitousBool = foo.gratuitousBool;
+	foo->_gratuitousBool = YES;
+	NSCAssert(foo.gratuitousBool == YES, @"-gratuitousBool is borked");
+	foo->_gratuitousBool = oldGratuitousBool;
+}
+
+int main(const int argc, const char* const argv[])
+{
+	NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
+	
+	Foo* foo = [[Foo alloc] init];
+	
+	TestGratuitousBool(foo);
+	
+	[pool release];
+		  
+	return 0;
+}

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-specialized-1.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-specialized-1.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-specialized-1.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-specialized-1.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,26 @@
+/* APPLE LOCAL file radar 5218071 */
+/* Test that property type in the derived class can be more specialized than
+   that of its base class.
+*/
+/* { dg-options "-mmacosx-version-min=10.5" } */
+/* { dg-do compile } */
+
+ at protocol P1 @end
+ at protocol P2 @end
+ at protocol P3 @end
+
+ at interface NSData @end
+
+ at interface MutableNSData : NSData @end
+
+ at interface Base 
+ at property(readonly) id ref;
+ at property(readonly) id another_ref;
+ at property (readonly) NSData *nsdata;
+ at end
+
+ at interface Derived : Base
+ at property (readonly, assign) NSData *ref;
+ at property(readonly) NSData * another_ref;
+ at property (readonly) NSData * nsdata;
+ at end

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-specialized-2.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-specialized-2.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-specialized-2.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-specialized-2.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,36 @@
+/* APPLE LOCAL file radar 5218071 */
+/* Test that property type in the derived class can be more specialized than
+   that of its base class. Issue warning when this is not the case.
+*/
+/* { dg-options "-mmacosx-version-min=10.5" } */
+/* { dg-do compile } */
+
+ at protocol P1 @end
+ at protocol P2 @end
+ at protocol P3 @end
+
+ at interface NSData @end
+
+ at interface MutableNSData : NSData @end
+
+ at interface Base : NSData <P1>
+ at property(readonly) id ref;
+ at property(readonly) Base *p_base;
+ at property(readonly) NSData *nsdata;
+ at property(readonly) NSData * m_nsdata;
+ at end
+
+ at interface Data : Base <P1, P2>
+ at property(readonly) NSData *ref;
+ at property(readonly) Data *p_base;	// warn
+ at property(readonly) MutableNSData * m_nsdata;
+ at end /* { dg-warning "property 'p_base' type does not match super class 'Base' property type" } */
+
+ at interface  MutedData: Data
+ at property(readonly) id p_base;
+ at end	/* { dg-warning "property 'p_base' type does not match super class 'Data' property type" } */
+
+ at interface ConstData : Data <P1, P2, P3>
+ at property(readonly) ConstData *p_base;
+ at end /* { dg-warning "property 'p_base' type does not match super class 'Data' property type" } */
+

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/super-after-trycatch.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/super-after-trycatch.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/super-after-trycatch.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/super-after-trycatch.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,27 @@
+/* APPLE LOCAL file radar 6023694 */
+/* Test that no bogus warning is issued as the result of
+   'super' being 'volatized' for a try-catch statement. */
+/* { dg-options "-Wall" } */
+/* { dg-do compile } */
+
+ at interface NSObject {
+}
+- (unsigned)retainCount;
+ at end
+
+ at interface Foo : NSObject {
+}
+ at end
+
+ at implementation Foo
+
+- (unsigned)retainCount
+{
+        [super retainCount];
+ @try {
+ } @catch(id anything) {
+ }
+ return [super retainCount];
+}
+
+ at end

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/sync-objc-exception.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/sync-objc-exception.m?rev=54496&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/sync-objc-exception.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/sync-objc-exception.m Thu Aug  7 19:50:18 2008
@@ -0,0 +1,27 @@
+/* APPLE LOCAL file radar 5982990 */
+/* This tests that local variables declared in @synchronized block
+   have are make volatile. Test should compile with no warning or
+   error.
+*/
+/* { dg-do compile { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-options "-fobjc-exceptions -Os -Wextra -Werror" } */
+/* { dg-skip-if "" { *-*-darwin* } { "-m64" } { "" } } */
+ 
+struct MyPoint { int x; };
+
+ at interface MyObject {}
++(void) doNothingWithPoint:(struct MyPoint)aPoint;
+ at end
+
+int main()
+{
+    id  pool = 0;
+	
+    @synchronized(pool)
+	{
+		struct MyPoint thePoint;
+		[MyObject doNothingWithPoint:thePoint];
+	}
+	
+    return 0;
+}





More information about the llvm-commits mailing list