[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