<div dir="ltr">This fixes compiler-rt/test/asan/TestCases/Windows/dll_cerr.cc, but I agree, this should have IR-to-IR tests in LLVM proper.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jul 9, 2014 at 12:39 PM, Rafael Espíndola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">testcase?<br>
<div class="HOEnZb"><div class="h5"><br>
On 9 July 2014 04:35, Timur Iskhodzhanov <<a href="mailto:timurrrr@google.com">timurrrr@google.com</a>> wrote:<br>
> Author: timurrrr<br>
> Date: Wed Jul  9 03:35:33 2014<br>
> New Revision: 212596<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=212596&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=212596&view=rev</a><br>
> Log:<br>
> [ASan/Win] Don't instrument COMDAT globals. Properly fixes PR20244.<br>
><br>
> Modified:<br>
>     llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp<br>
><br>
> Modified: llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp?rev=212596&r1=212595&r2=212596&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp?rev=212596&r1=212595&r2=212596&view=diff</a><br>

> ==============================================================================<br>
> --- llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp (original)<br>
> +++ llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp Wed Jul  9 03:35:33 2014<br>
> @@ -923,11 +923,14 @@ bool AddressSanitizerModule::ShouldInstr<br>
>    if (!G->hasInitializer()) return false;<br>
>    if (GlobalWasGeneratedByAsan(G)) return false;  // Our own global.<br>
>    // Touch only those globals that will not be defined in other modules.<br>
> -  // Don't handle ODR type linkages since other modules may be built w/o asan.<br>
> +  // Don't handle ODR linkage types and COMDATs since other modules may be built<br>
> +  // without ASan.<br>
>    if (G->getLinkage() != GlobalVariable::ExternalLinkage &&<br>
>        G->getLinkage() != GlobalVariable::PrivateLinkage &&<br>
>        G->getLinkage() != GlobalVariable::InternalLinkage)<br>
>      return false;<br>
> +  if (G->hasComdat())<br>
> +    return false;<br>
>    // Two problems with thread-locals:<br>
>    //   - The address of the main thread's copy can't be computed at link-time.<br>
>    //   - Need to poison all copies, not just the main thread's one.<br>
> @@ -946,13 +949,6 @@ bool AddressSanitizerModule::ShouldInstr<br>
>      return false;<br>
>    }<br>
><br>
> -  // Don't instrument private COMDAT globals on Windows until PR20244 (linkage<br>
> -  // of vftables with RTTI) is properly fixed.<br>
> -  llvm::Triple TargetTriple(G->getParent()->getTargetTriple());<br>
> -  if (G->hasComdat() && G->getLinkage() == GlobalVariable::PrivateLinkage &&<br>
> -      TargetTriple.isWindowsMSVCEnvironment())<br>
> -    return false;<br>
> -<br>
>    if (G->hasSection()) {<br>
>      StringRef Section(G->getSection());<br>
>      // Ignore the globals from the __OBJC section. The ObjC runtime assumes<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br></div>