<div dir="ltr">So, for this test case:<div><br><div>extern "C" void shouldBeUnconditional();<br>extern "C" void shouldBeConditional();<br>extern "C" void otherCall();<br>void testFn(bool Bool1, bool Bool2) {<br>  Bool1 |= Bool2;<br>  shouldBeUnconditional();<br>  if (Bool1)<br>    shouldBeConditional();<br>  if (Bool2) {<br>    otherCall();<br>    if (Bool1)<br>      otherCall();<br>  }<br>}<br></div><div><br></div><div>MSVC generates this buggy asm:</div><div><br></div><div>$ cl -c -Fat.asm msvc-bool-bug.cpp -O2<br>Microsoft (R) C/C++ Optimizing Compiler Version 19.24.28315 for x64<br>Copyright (C) Microsoft Corporation.  All rights reserved.<br><br>msvc-bool-bug.cpp<br></div><div><br></div><div>$ cat t.asm</div><div>...</div><div>; Line 6<br>     call    shouldBeUnconditional<br>; Line 8<br>       call    shouldBeConditional<br></div><div>...</div><div><br></div><div>There is no conditional branch between these two calls, but if both Bool1 and Bool2 are false, the second call should not execute.</div></div><div><br></div><div>I went to file the issue, but I suspect that this report is a duplicate:</div><div><a href="https://developercommunity.visualstudio.com/content/problem/845933/miscompile-boolean-condition-deduced-to-be-always.html">https://developercommunity.visualstudio.com/content/problem/845933/miscompile-boolean-condition-deduced-to-be-always.html</a>  <br></div><div>I posted my repro there.</div><div><br></div><div>It's not clear if we should do anything in LLVM to work around the problem, or if we should just wait for the next release.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jan 23, 2020 at 10:48 AM Reid Kleckner <<a href="mailto:rnk@google.com">rnk@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">The gen-dwarf* test failures actually seem like an MSVC compiler bug. This variable somehow gets folded to true with MSVC, and extra unexpected relocations are produced:<div><a href="https://github.com/llvm/llvm-project/blob/master/llvm/lib/MC/MCDwarf.cpp#L1141" target="_blank">https://github.com/llvm/llvm-project/blob/master/llvm/lib/MC/MCDwarf.cpp#L1141</a> </div><div>I will try to reduce it. I suspect it requires this specific MSVC release to reproduce, and our buildbots must not have it.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jan 21, 2020 at 4:39 PM Alexandre Ganea via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="EN-CA">
<div>
<p class="MsoNormal">Hi,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">A few tests seem broken for a long time, some for more than a month. Would it possible for respective owners to take a look please?<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">I’m at checkout 133a7e631cee97965e310f0d110739217427fd3d, compiling on Windows 10.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">These tests fail with Visual Studio 2019:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal" style="margin-left:36pt">Failing Tests (7):<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">    Clang Tools :: clang-tidy/checkers/cert-mem57-cpp-cpp17.cpp<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">    Clang Tools :: clang-tidy/checkers/performance-noexcept-move-constructor-fix.cpp<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">    LLVM :: MC/MachO/gen-dwarf-cpp.s<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">    LLVM :: MC/MachO/gen-dwarf-macro-cpp.s<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">    LLVM :: MC/MachO/gen-dwarf-producer.s<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">    LLVM :: MC/MachO/gen-dwarf.s<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">    Polly :: ScopInfo/memset_null.ll<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt"><u></u> <u></u></p>
<p class="MsoNormal" style="margin-left:36pt">  Expected Passes    : 57692<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">  Expected Failures  : 283<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">  Unsupported Tests  : 1941<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">  Unexpected Failures: 7<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">The clang-tidy tests fail since end of November-December.<u></u><u></u></p>
<p class="MsoNormal">The MachO tests fail since about the beginning of December.<u></u><u></u></p>
<p class="MsoNormal">The Polly test fails since a few days ago.<u></u><u></u></p>
<p class="MsoNormal">(see below for more info)<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">I’m using the following cmake cmd-line:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal" style="margin-left:36pt">cmake -GNinja %ROOT%/llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_LIBXML2=OFF -DCMAKE_C_COMPILER="%VS2019%/bin/HostX64/x64/cl.EXE" -DCMAKE_CXX_COMPILER="%VS2019%/bin/HostX64/x64/cl.EXE"
 -DCMAKE_LINKER="%VS2019%/bin/HostX64/x64/link.EXE" -DLLVM_ENABLE_PROJECTS="llvm;clang;lld;clang-tools-extra;compiler-rt;mlir;polly" -DLLVM_ENABLE_PDB=ON -DLLVM_POLLY_LINK_INTO_TOOLS=ON<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">These tests fail with Clang 9.0.1:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal" style="margin-left:36pt">Failing Tests (3):<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">    Clang Tools :: clang-tidy/checkers/cert-mem57-cpp-cpp17.cpp<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">    Clang Tools :: clang-tidy/checkers/performance-noexcept-move-constructor-fix.cpp<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">    Polly :: ScopInfo/memset_null.ll<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt"><u></u> <u></u></p>
<p class="MsoNormal" style="margin-left:36pt">  Expected Passes    : 57727<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">  Expected Failures  : 283<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">  Unsupported Tests  : 1911<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">  Unexpected Failures: 3<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt"><u></u> <u></u></p>
<p class="MsoNormal" style="margin-left:36pt">1 warning(s) in tests<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">I’m using the following cmake cmd-line:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal" style="margin-left:36pt">cmake -GNinja %ROOT%/llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_LIBXML2=OFF -DCMAKE_C_COMPILER="%LLVM%/bin/clang-cl.EXE" -DCMAKE_CXX_COMPILER="%LLVM%/bin/clang-cl.EXE"
 -DCMAKE_LINKER="%LLVM%/bin/lld-link.EXE" -DLLVM_ENABLE_PROJECTS="llvm;clang;lld;clang-tools-extra;compiler-rt;mlir;polly" -DLLVM_ENABLE_PDB=ON -DLLVM_POLLY_LINK_INTO_TOOLS=ON -DLLVM_ENABLE_LLD=ON<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Thanks in advance!<u></u><u></u></p>
<p class="MsoNormal">Alex.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="2" width="100%" align="center">
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">The clang-tidy cert-mem57 tests seem to be related to varying messages (warning|error) being emitted.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">All three MachO/gen-dwarf test are crashing at about the same place:<br>
<br>
<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">Stack dump:<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">0.      Program arguments: d:\llvm-project\buildninjarelmsvc\bin\llvm-dwarfdump.exe -all D:\llvm-project\buildninjaRelMSVC\test\MC\MachO\Output\gen-dwarf.s.tmp<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">#0 0x00007ff6c125dfb8 llvm::DWARFCompileUnit::dump(class llvm::raw_ostream &, struct llvm::DIDumpOptions) D:\llvm-project\llvm\lib\DebugInfo\DWARF\DWARFCompileUnit.cpp:23:0<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">#1 0x00007ff6c1236e18 <lambda_25ce692e137c1a998cd3557ebf29fa33>::operator() D:\llvm-project\llvm\lib\DebugInfo\DWARF\DWARFContext.cpp:367:0<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">#2 0x00007ff6c123968b llvm::DWARFContext::dump(class llvm::raw_ostream &, struct llvm::DIDumpOptions, class std::array<class llvm::Optional<unsigned __int64>, 28>) D:\llvm-project\llvm\lib\DebugInfo\DWARF\DWARFContext.cpp:372:0<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">#3 0x00007ff6c12197f8 dumpObjectFile D:\llvm-project\llvm\tools\llvm-dwarfdump\llvm-dwarfdump.cpp:448:0<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">#4 0x00007ff6c1218486 std::_Func_impl_no_alloc<bool (__cdecl *)(class llvm::object::ObjectFile &, class llvm::DWARFContext &, class llvm::Twine, class llvm::raw_ostream &), bool, class llvm::object::ObjectFile
 &, class llvm::DWARFContext &, class llvm::Twine, class llvm::raw_ostream &>::_Do_call(class llvm::object::ObjectFile &, class llvm::DWARFContext &, class llvm::Twine &&, class llvm::raw_ostream &) C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\include\functional:927:0<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">#5 0x00007ff6c121c519 handleBuffer D:\llvm-project\llvm\tools\llvm-dwarfdump\llvm-dwarfdump.cpp:495:0<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">#6 0x00007ff6c121d16a handleFile D:\llvm-project\llvm\tools\llvm-dwarfdump\llvm-dwarfdump.cpp:528:0<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">#7 0x00007ff6c121eb87 main D:\llvm-project\llvm\tools\llvm-dwarfdump\llvm-dwarfdump.cpp:643:0<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">#8 0x00007ff6c16b6420 __scrt_common_main_seh d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288:0<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">#9 0x00007ffb52557bd4 (C:\WINDOWS\System32\KERNEL32.DLL+0x17bd4)<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">#10 0x00007ffb5278ced1 (C:\WINDOWS\SYSTEM32\ntdll.dll+0x6ced1)<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt"><u></u> <u></u></p>
<p class="MsoNormal" style="margin-left:36pt">error: command failed with exit status: 3221225477<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Polly :: ScopInfo/memset_null.ll fails because the second opt fails:<br>
<br>
<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">D:\llvm-project>buildninjarelmsvc\bin\opt  -polly-process-unprofitable  -polly-remarks-minimal  -polly-use-llvm-names  -polly-import-jscop-dir=D:\llvm-project\polly\test\ScopInfo  -polly-codegen-verify  -polly-allow-modref-calls
 -polly-scops -analyze < D:\llvm-project\polly\test\ScopInfo\memset_null.ll<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">Printing analysis 'Polly - Create polyhedral description of Scops' for region: 'for.cond5.preheader.us221 => for.end68' in function 'test':<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">Invalid Scop!<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">Printing analysis 'Polly - Create polyhedral description of Scops' for region: 'entry => for.end68' in function 'test':<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">Invalid Scop!<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">Printing analysis 'Polly - Create polyhedral description of Scops' for region: 'entry => <Function Return>' in function 'test':<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:36pt">Invalid Scop!<u></u><u></u></p>
</div>
</div>

_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>
</blockquote></div>