// RUN: %clang_cc1 -triple x86_64-unknown-freebsd -S -emit-llvm -fobjc-runtime=gnustep-2.0 -o - %s | FileCheck %s

@protocol X
@optional
- (id)x;
@required
+ (void*)y;
@property int reqProp;
@optional
@property int optProp;
@end

// Check that we get some plausible-looking method lists.
// CHECK: internal global { i32, i32, [2 x { i8*, i8* }] } { i32 2, i32 16, 
// CHECK-SAME: @".objc_selector_reqProp_i16\010:8"
// CHECK-SAME: @".objc_selector_setReqProp:_v20\010:8i16"
// CHECK: internal global { i32, i32, [3 x { i8*, i8* }] } { i32 3, i32 16,
// CHECK-SAME: @".objc_selector_x_\0116\010:8"
// CHECK-SAME: @".objc_selector_optProp_i16\010:8"
// CHECK-SAME: @".objc_selector_setOptProp:_v20\010:8i16"


// Check that we're emitting the protocol and a correctly initialised
// indirection variable.
// CHECK: @._OBJC_PROTOCOL_X = global
// CHECK-SAME: , section "__objc_protocols", comdat, align 8
// CHECK: @._OBJC_REF_PROTOCOL_X = linkonce_odr global
// CHECK-SAME: @._OBJC_PROTOCOL_X
// CHECK-SAME: , section "__objc_protocol_refs", comdat, align 8


// Check that we load from the indirection variable on protocol references.
// CHECK: define i8* @x()
// CHECK:   = load 
// CHECK-SAME: @._OBJC_REF_PROTOCOL_X, align 8
void *x()
{
	return @protocol(X);
}
