[llvm-bugs] [Bug 42843] New: Clang 9.0.0 rc1 Wrong generation of constexpr symbol causes bootstrapping to fail

via llvm-bugs llvm-bugs at lists.llvm.org
Wed Jul 31 06:45:22 PDT 2019


https://bugs.llvm.org/show_bug.cgi?id=42843

            Bug ID: 42843
           Summary: Clang 9.0.0 rc1 Wrong generation of constexpr symbol
                    causes bootstrapping to fail
           Product: clang
           Version: 9.0
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: -New Bugs
          Assignee: unassignedclangbugs at nondot.org
          Reporter: ipvb at qq.com
                CC: htmldeveloper at gmail.com, llvm-bugs at lists.llvm.org,
                    neeilans at live.com, richard-llvm at metafoo.co.uk

I used Visual Studio 16.2 as the build environment for clang and downloaded the
pre-compiled http://prereleases.llvm.org/9.0.0/rc1/LLVM-9.0.0-rc1-win64.exe
using 7z to extract to the appropriate directory. Then use it to build the llvm
release/9.x branch and get the following error:

lld-link: error: duplicate symbol: bool const std::_Is_integral<bool> in
utils\TableGen\CMakeFiles\llvm-tblgen.dir\AsmMatcherEmitter.cpp.obj and in
utils\TableGen\CMakeFiles\llvm-tblgen.dir\AsmWriterEmitter.cpp.obj

msvc version: 14.22.27905


I built llvm 9.0 successfully using clang-cl 8.0.1 + Visual Studio 16.2.

cmake args:

```bat
cmake -GNinja "F:/Clangbuilder/out/release_9.x/llvm" -DCMAKE_BUILD_TYPE=Release
-DLLVM_ENABLE_ASSERTIONS=OFF -DCMAKE_INSTALL_UCRT_LIBRARIES=ON
-DLLVM_TARGETS_TO_BUILD="X86;AArch64;ARM"
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="RISCV;WebAssembly"
-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt;lld;lldb;libcxx"
-DLLVM_FORCE_BUILD_RUNTIME=ON -DLIBCXX_ENABLE_SHARED=YES
-DLIBCXX_ENABLE_STATIC=YES -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=NO
-DLIBCXX_HAS_WIN32_THREAD_API=ON -DLIBCXX_STANDARD_VER="c++17"
-DCMAKE_INSTALL_PREFIX="F:/Clangbuilder/bin/utils/llvm"
-DLLDB_RELOCATABLE_PYTHON=1 -DLLDB_DISABLE_PYTHON=1
-DCMAKE_C_COMPILER="F:/Clangbuilder/bin/utils/LLVM-9.0.0-rc1-win64/bin/clang-cl.exe"
-DCMAKE_CXX_COMPILER="F:/Clangbuilder/bin/utils/LLVM-9.0.0-rc1-win64/bin/clang-cl.exe"
-DCMAKE_CXX_FLAGS="-fms-compatibility-version=19.22 -m64  "
-DCMAKE_C_FLAGS="-fms-compatibility-version=19.22 -m64 " -DLLVM_ENABLE_LTO=Thin
-DCMAKE_LINKER="F:/Clangbuilder/bin/utils/LLVM-9.0.0-rc1-win64/bin/lld-link.exe"
-DCMAKE_AR="F:/Clangbuilder/bin/utils/LLVM-9.0.0-rc1-win64/bin/llvm-lib.exe"
-DCMAKE_RANLIB="F:/Clangbuilder/bin/utils/LLVM-9.0.0-rc1-win64/bin/llvm-ranlib.exe"

```

I found that this may be related to the fact that clang does not eliminate the
constexpr symbol.


Test two files

typea.cc:

```c++
#include <cstdio>
#include <type_traits>

bool typetest2() {
  int n = 0;

  return std::is_integral<int>::value;
}

int main() {
  /* code */
  return 0;
}

```
typeb.cc:

```c++
#include <type_traits>

bool typetest() {
  int n = 0;

  return std::is_integral<int>::value;
}
```

compile: clang-cl typea.cc typeb.cc -std:c++N

clang-cl 8.0.1 -std:c++14 and -std:c++17 build success, link success
clang-cl 9.0.0 rc1 -std:c++14 build success. link failed: error LNK2005
clang-cl 9.0.0 rc1 -std:c++17 build success. link success.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20190731/4df2074f/attachment-0001.html>


More information about the llvm-bugs mailing list