// REQUIRES: x86-64-registered-target
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-nonfragile-abi -S -o %t %s 
// RUN: FileCheck < %t %s

// rdar://9072317

/** The problem looks like clang getting confused when a single translation unit 
    contains a protocol with a property and two classes that implement that protocol 
    and synthesize the property.
*/

@protocol Proto
@property (assign) id prop;
@end

@interface NSObject @end

@interface Foo : NSObject <Proto> { int x; } @end

@interface Bar : NSObject <Proto> @end

@implementation Foo
@synthesize prop;
@end

@implementation Bar
@synthesize prop;
@end

// CHECK: l_OBJC_$_INSTANCE_METHODS_Bar:
// CHECK-NEXT        .long   24
// CHECK-NEXT        .long   2
// CHECK-NEXT        .quad   L_OBJC_METH_VAR_NAME_
// CHECK-NEXT        .quad   L_OBJC_METH_VAR_TYPE_
// CHECK-NEXT        .quad   "-[Bar prop]"