1// RUN: %clang_cc1 -triple=i686-apple-darwin9 -emit-llvm -o - %s | FileCheck %s
2
3// CHECK: private unnamed_addr constant [7 x i8] c"@\22<X>\22\00",
4// CHECK: private unnamed_addr constant [10 x i8] c"@\22<X><Y>\22\00",
5// CHECK: private unnamed_addr constant [13 x i8] c"@\22<X><Y><Z>\22\00",
6// CHECK: private unnamed_addr constant [16 x i8] c"@\22Foo<X><Y><Z>\22\00",
7// CHECK: private unnamed_addr constant [13 x i8] c"{Intf=@@@@#}\00",
8
9// CHECK: @[[PROP_NAME_ATTR:.*]] = private unnamed_addr constant [5 x i8] c"T@,D\00",
10// CHECK: @"_OBJC_$_PROP_LIST_C0" = internal global { i32, i32, [1 x %{{.*}}] } { i32 8, i32 1, [1 x %{{.*}}] [%{{.*}} { {{.*}}, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @[[PROP_NAME_ATTR]], i32 0, i32 0) }] },
11
12@protocol X, Y, Z;
13@class Foo;
14
15@protocol Proto
16@end
17
18@interface Intf <Proto>
19{
20id <X> IVAR_x;
21id <X, Y> IVAR_xy;
22id <X, Y, Z> IVAR_xyz;
23Foo <X, Y, Z> *IVAR_Fooxyz;
24Class <X> IVAR_Classx;
25}
26@end
27
28@implementation Intf
29@end
30
31int main()
32{
33	const char * en = @encode(Intf);
34}
35
36@protocol P0
37@property id prop0;
38@end
39
40@protocol P1 <P0>
41@property id prop0;
42@end
43
44@interface C0 <P1>
45@end
46
47@implementation C0
48@dynamic prop0;
49@end
50