<div dir="ltr">This seems to fail on Windows:  <a href="http://lab.llvm.org:8011/builders/sanitizer-windows/builds/25343/steps/run%20check-asan/logs/stdio">http://lab.llvm.org:8011/builders/sanitizer-windows/builds/25343/steps/run%20check-asan/logs/stdio</a><div><br></div><div><pre style="font-family:"Courier New",courier,monotype,monospace;color:rgb(0,0,0);font-size:medium;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial"><span class="gmail-stdout" style="font-family:"Courier New",courier,monotype,monospace;color:black">FAIL: AddressSanitizer-i386-windows :: TestCases/lto-constmerge-odr.cc (488 of 602)
******************** TEST 'AddressSanitizer-i386-windows :: TestCases/lto-constmerge-odr.cc' FAILED ********************
Script:
--
C:/b/slave/sanitizer-windows/build/./bin/clang.exe  -fsanitize=address -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only -gcodeview -gcolumn-info   -fms-compatibility-version=19.00.24215.1  -O3 -flto C:\b\slave\sanitizer-windows\llvm\projects\compiler-rt\test\asan\TestCases\lto-constmerge-odr.cc -o C:\b\slave\sanitizer-windows\build\projects\compiler-rt\test\asan\I386WindowsConfig\TestCases\Output\lto-constmerge-odr.cc.tmp
C:\b\slave\sanitizer-windows\build\projects\compiler-rt\test\asan\I386WindowsConfig\TestCases\Output\lto-constmerge-odr.cc.tmp 2>&1
--
Exit Code: 1107

Command Output (stdout):
--
$ "C:/b/slave/sanitizer-windows/build/./bin/clang.exe" "-fsanitize=address" "-mno-omit-leaf-frame-pointer" "-fno-omit-frame-pointer" "-fno-optimize-sibling-calls" "-gline-tables-only" "-gcodeview" "-gcolumn-info" "-fms-compatibility-version=19.00.24215.1" "-O3" "-flto" "C:\b\slave\sanitizer-windows\llvm\projects\compiler-rt\test\asan\TestCases\lto-constmerge-odr.cc" "-o" "C:\b\slave\sanitizer-windows\build\projects\compiler-rt\test\asan\I386WindowsConfig\TestCases\Output\lto-constmerge-odr.cc.tmp"
# command output:
c:\users\buildbot\appdata\local\temp\lit_tmp_q0kr73\lto-constmerge-odr-c755bc.o : fatal error LNK1107: invalid or corrupt file: cannot read at 0x2F08


# command stderr:
clang.exe: error: linker command failed with exit code 1107 (use -v to see invocation)


error: command failed with exit status: 1107</span></pre><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 8, 2018 at 1:02 PM, Kuba Mracek via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: kuba.brecka<br>
Date: Thu Mar  8 13:02:52 2018<br>
New Revision: 327062<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=327062&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=327062&view=rev</a><br>
Log:<br>
[asan] Fix a false positive ODR violation due to LTO ConstantMerge pass [compiler-rt part, take 3]<br>
<br>
This fixes a false positive ODR violation that is reported by ASan when using LTO. In cases, where two constant globals have the same value, LTO will merge them, which breaks ASan's ODR detection. See the included testcase for an example.<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D43959" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D43959</a><br>
<br>
<br>
Added:<br>
    compiler-rt/trunk/test/asan/<wbr>TestCases/lto-constmerge-odr.<wbr>cc<br>
Modified:<br>
    compiler-rt/trunk/test/asan/<wbr>TestCases/Darwin/odr-lto.cc<br>
<br>
Modified: compiler-rt/trunk/test/asan/<wbr>TestCases/Darwin/odr-lto.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Darwin/odr-lto.cc?rev=327062&r1=327061&r2=327062&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/asan/TestCases/Darwin/<wbr>odr-lto.cc?rev=327062&r1=<wbr>327061&r2=327062&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/asan/<wbr>TestCases/Darwin/odr-lto.cc (original)<br>
+++ compiler-rt/trunk/test/asan/<wbr>TestCases/Darwin/odr-lto.cc Thu Mar  8 13:02:52 2018<br>
@@ -3,15 +3,10 @@<br>
<br>
 // REQUIRES: lto<br>
<br>
-// RUN: %clangxx_asan -DPART=0 -c %s -o %t-1.o -flto<br>
-// RUN: %clangxx_asan -DPART=1 -c %s -o %t-2.o -flto<br>
-// RUN: %clangxx_asan %t-1.o %t-2.o -o %t -flto<br>
-// RUN: not %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-ODR<br>
-<br>
 // RUN: %clangxx_asan -DPART=0 -c %s -o %t-1.o -flto -mllvm -asan-use-private-alias<br>
 // RUN: %clangxx_asan -DPART=1 -c %s -o %t-2.o -flto -mllvm -asan-use-private-alias<br>
 // RUN: %clangxx_asan %t-1.o %t-2.o -o %t -flto<br>
-// RUN: %env_asan_opts=use_odr_<wbr>indicator=1 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ODR<br>
+// RUN: %env_asan_opts=use_odr_<wbr>indicator=1 %run %t 2>&1 | FileCheck %s<br>
<br>
 #include <stdio.h><br>
 #include <stdlib.h><br>
@@ -40,6 +35,5 @@ void putstest()<br>
<br>
 #endif // PART == 1<br>
<br>
-// CHECK-ODR: ERROR: AddressSanitizer: odr-violation<br>
-// CHECK-NO-ODR-NOT: ERROR: AddressSanitizer: odr-violation<br>
-// CHECK-NO-ODR: Done.<br>
+// CHECK-NOT: ERROR: AddressSanitizer: odr-violation<br>
+// CHECK: Done.<br>
<br>
Added: compiler-rt/trunk/test/asan/<wbr>TestCases/lto-constmerge-odr.<wbr>cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/lto-constmerge-odr.cc?rev=327062&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/asan/TestCases/lto-<wbr>constmerge-odr.cc?rev=327062&<wbr>view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/asan/<wbr>TestCases/lto-constmerge-odr.<wbr>cc (added)<br>
+++ compiler-rt/trunk/test/asan/<wbr>TestCases/lto-constmerge-odr.<wbr>cc Thu Mar  8 13:02:52 2018<br>
@@ -0,0 +1,14 @@<br>
+// RUN: %clangxx_asan -O3 -flto %s -o %t<br>
+// RUN: %run %t 2>&1<br>
+<br>
+// REQUIRES: lto<br>
+<br>
+int main(int argc, const char * argv[]) {<br>
+  struct { long width, height; } a = {16, 16};<br>
+  struct { long width, height; } b = {16, 16};<br>
+<br>
+  // Just to make sure 'a' and 'b' don't get optimized out.<br>
+  asm volatile("" : : "r" (&a), "r" (&b));<br>
+<br>
+  return 0;<br>
+}<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>