177f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
277f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge// END.
377f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge
477f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge// CHECK: private unnamed_addr constant [8 x i8] c"v_ann_{{.}}\00", section "llvm.metadata"
577f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge// CHECK: private unnamed_addr constant [8 x i8] c"v_ann_{{.}}\00", section "llvm.metadata"
677f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge
777f68bb90af93b95045fb994e7cd68137adcc132Julien Lerougestruct foo {
877f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge    int v __attribute__((annotate("v_ann_0"))) __attribute__((annotate("v_ann_1")));
977f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge};
1077f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge
1177f68bb90af93b95045fb994e7cd68137adcc132Julien Lerougestatic struct foo gf;
1277f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge
1377f68bb90af93b95045fb994e7cd68137adcc132Julien Lerougeint main(int argc, char **argv) {
1477f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge    struct foo f;
1577f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge    f.v = argc;
1677f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge// CHECK: getelementptr inbounds %struct.foo* %f, i32 0, i32 0
1777f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge// CHECK-NEXT: bitcast i32* {{.*}} to i8*
1877f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge// CHECK-NEXT: call i8* @llvm.ptr.annotation.p0i8({{.*}}str{{.*}}str{{.*}}i32 8)
1977f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge// CHECK-NEXT: bitcast i8* {{.*}} to i32*
2077f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge// CHECK-NEXT: bitcast i32* {{.*}} to i8*
2177f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge// CHECK-NEXT: call i8* @llvm.ptr.annotation.p0i8({{.*}}str{{.*}}str{{.*}}i32 8)
2277f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge// CHECK-NEXT: bitcast i8* {{.*}} to i32*
2377f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge    gf.v = argc;
2477f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge// CHECK: bitcast i32* getelementptr inbounds (%struct.foo* @gf, i32 0, i32 0) to i8*
2577f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge// CHECK-NEXT: call i8* @llvm.ptr.annotation.p0i8({{.*}}str{{.*}}str{{.*}}i32 8)
2677f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge    return 0;
2777f68bb90af93b95045fb994e7cd68137adcc132Julien Lerouge}
28