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