[ASan/Win] Don't instrument private COMDAT globals until PR20244 is properly fixed

llvm-svn: 212530
diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
index 65f769c..8f9355c 100644
--- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
@@ -946,6 +946,13 @@
     return false;
   }
 
+  // Don't instrument private COMDAT globals on Windows until PR20244 (linkage
+  // of vftables with RTTI) is properly fixed.
+  llvm::Triple TargetTriple(G->getParent()->getTargetTriple());
+  if (G->hasComdat() && G->getLinkage() == GlobalVariable::PrivateLinkage &&
+      TargetTriple.isWindowsMSVCEnvironment())
+    return false;
+
   if (G->hasSection()) {
     StringRef Section(G->getSection());
     // Ignore the globals from the __OBJC section. The ObjC runtime assumes