[llvm-commits] [llvm-gcc-4.2] r50052 - /llvm-gcc-4.2/trunk/gcc/testsuite/llvm.objc/2008-04-21-StrongIvarAssignment.m

Bill Wendling isanbard at gmail.com
Mon Apr 21 12:50:02 PDT 2008


Author: void
Date: Mon Apr 21 14:50:02 2008
New Revision: 50052

URL: http://llvm.org/viewvc/llvm-project?rev=50052&view=rev
Log:
Testcase for r50048.

Added:
    llvm-gcc-4.2/trunk/gcc/testsuite/llvm.objc/2008-04-21-StrongIvarAssignment.m

Added: llvm-gcc-4.2/trunk/gcc/testsuite/llvm.objc/2008-04-21-StrongIvarAssignment.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/llvm.objc/2008-04-21-StrongIvarAssignment.m?rev=50052&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/llvm.objc/2008-04-21-StrongIvarAssignment.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/llvm.objc/2008-04-21-StrongIvarAssignment.m Mon Apr 21 14:50:02 2008
@@ -0,0 +1,48 @@
+/* { dg-do run { target *-*-darwin* } } */
+/* { dg-options "-fobjc-gc -framework Foundation" } */
+#import <Foundation/Foundation.h>
+#import <Foundation/NSString.h>
+
+uintptr_t OldPointerVal;
+uintptr_t NewPointerVal;
+
+ at class Bork;
+
+typedef struct {
+  NSString *name;
+} Info;
+
+ at interface Bork : NSObject {
+ at private
+  CFMutableDictionaryRef _f1;
+  __strong Info*         _f2;
+}
+
+- (void) foo:(NSString*)name;
+ at end
+
+ at implementation Bork
+- (id)init {
+  _f2 = malloc(sizeof(Info) * 3);
+
+  unsigned i;
+  for (i = 0; i < 3; ++i)
+    _f2[i].name = 0;
+}
+
+- (void)foo:(NSString*)name {
+  OldPointerVal = (uintptr_t)_f2;
+  _f2[0].name = [name copy];
+  NewPointerVal = (uintptr_t)_f2;
+}
+ at end
+
+int main() {
+  Bork *NM = [Bork alloc];
+  [NM init];
+  NSString *Str = [NSString stringWithUTF8String: "Hello world"];
+  [NM foo: Str];
+  if (OldPointerVal != NewPointerVal)
+    abort();
+  [NM release];
+}





More information about the llvm-commits mailing list