From dc4cb2b736817dbbd461586ac1f5dd5b1531e9d4 Mon Sep 17 00:00:00 2001 From: Kostya Serebryany Date: Tue, 20 Nov 2012 13:11:32 +0000 Subject: [asan] don't instrument linker-initialized globals even with external linkage in -asan-initialization-order mode llvm-svn: 168367 --- llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'llvm/lib') diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp index aad31b4c6ed..4d5bb19aa84 100644 --- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp @@ -364,11 +364,9 @@ void AddressSanitizer::instrumentMop(Instruction *I) { if (!ClInitializers) return; // If a global variable does not have dynamic initialization we don't - // have to instrument it. However, if a global has external linkage, we - // assume it has dynamic initialization, as it may have an initializer - // in a different TU. - if (G->getLinkage() != GlobalVariable::ExternalLinkage && - !DynamicallyInitializedGlobals.Contains(G)) + // have to instrument it. However, if a global does not have initailizer + // at all, we assume it has dynamic initializer (in other TU). + if (G->hasInitializer() && !DynamicallyInitializedGlobals.Contains(G)) return; } } -- cgit v1.2.3