[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