diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -4286,6 +4286,9 @@ getCUDARuntime().handleVarRegistration(D, *GV); } + if (D) + SanitizerMD->reportGlobal(GV, *D); + LangAS ExpectedAS = D ? D->getType().getAddressSpace() : (LangOpts.OpenCL ? LangAS::opencl_global : LangAS::Default); diff --git a/clang/test/CodeGen/memtag-globals.cpp b/clang/test/CodeGen/memtag-globals.cpp --- a/clang/test/CodeGen/memtag-globals.cpp +++ b/clang/test/CodeGen/memtag-globals.cpp @@ -11,10 +11,12 @@ int __attribute__((no_sanitize("memtag"))) attributed_global; int __attribute__((disable_sanitizer_instrumentation)) disable_instrumentation_global; int ignorelisted_global; +extern int external_global; void func() { static int static_var = 0; const char *literal = "Hello, world!"; + external_global = 1; } // CHECK: @{{.*}}extra_global{{.*}} ={{.*}} sanitize_memtag @@ -29,6 +31,7 @@ // CHECK: @{{.*}}static_var{{.*}} ={{.*}} sanitize_memtag // CHECK: @{{.*}} = {{.*}} c"Hello, world!\00"{{.*}} sanitize_memtag +// CHECK: @{{.*}}external_global{{.*}} ={{.*}} sanitize_memtag // IGNORELIST: @{{.*}}extra_global{{.*}} ={{.*}} sanitize_memtag @@ -44,3 +47,5 @@ // IGNORELIST-NOT: sanitize_memtag // IGNORELIST: @{{.*}} = {{.*}} c"Hello, world!\00"{{.*}} // IGNORELIST-NOT: sanitize_memtag +// IGNORELIST: @{{.*}}external_global{{.*}} = +// IGNORELIST-NOT: sanitize_memtag