Skip to content

Instantly share code, notes, and snippets.

@Endilll
Last active July 9, 2023 14:23
Show Gist options
  • Save Endilll/d36e4080b68d682e2b9fd96980cfb40a to your computer and use it in GitHub Desktop.
Save Endilll/d36e4080b68d682e2b9fd96980cfb40a to your computer and use it in GitHub Desktop.
Table of old Clang builds with assertions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 8845b9b..e27e52e 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -38,7 +38,7 @@ using namespace clang::driver;
using namespace clang;
// Used to set values for "production" clang, for releases.
-#define USE_PRODUCTION_CLANG
+// #define USE_PRODUCTION_CLANG
Driver::Driver(const char *_Name, const char *_Dir,
const char *_DefaultHostTriple,
Table of old Clang builds with assertions
| Clang | GCC | LLVM tests | Clang tests | Libc++ tests | Notes | CMake invocation
|-------|-------|--------------------|-------------------|------------------------------|------------------------------------|--------------
| 2.6 | 4.4.7 | N/A via CMake | 1416 0 0 47 | N/A | patched to enable clang for c++ | `cmake -DCMAKE_C_COMPILER=gcc-4.4 -DCMAKE_CXX_COMPILER=g++-4.4 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -G Ninja -Wno-dev ../llvm`
| 2.7 | 4.4.7 | 4294 23 514 26 | 2072 13 0 18 | N/A | clang++ symlink; 354 fails in LLVM | `cmake -DCMAKE_C_COMPILER=gcc-4.4 -DCMAKE_CXX_COMPILER=g++-4.4 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -G Ninja -Wno-dev ../llvm`
| 2.8 | 4.5.3 | 4562 28 552 95 | 2486 19 0 20 | N/A | clang++ symlink | `cmake -DCMAKE_C_COMPILER=gcc-4.5 -DCMAKE_CXX_COMPILER=g++-4.5 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -G Ninja -Wno-dev ../llvm`
| 2.9 | 4.5.3 | 5262 46 542 0 | 2882 22 0 4 | N/A | | `cmake -DCMAKE_C_COMPILER=gcc-4.6 -DCMAKE_CXX_COMPILER=g++-4.6 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -G Ninja -Wno-dev ../llvm`
| 3.0 | 4.6.4 | 5590 49 13 0 | 3912 25 1 3 | N/A | | `cmake -DCMAKE_C_COMPILER=gcc-4.6 -DCMAKE_CXX_COMPILER=g++-4.6 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -G Ninja -Wno-dev ../llvm`
| 3.1 | 4.6.4 | 5823 51 13 0 | 4536 27 0 3 | N/A | | `cmake -DCMAKE_C_COMPILER=gcc-4.6 -DCMAKE_CXX_COMPILER=g++-4.6 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -G Ninja -Wno-dev ../llvm`
| 3.2 | 4.6.4 | 6781 56 13 0 | 5564 25 2 2 | libc++ doesn't build | | `cmake -DCMAKE_C_COMPILER=gcc-4.6 -DCMAKE_CXX_COMPILER=g++-4.6 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -G Ninja -Wno-dev ../llvm`
| 3.3 | 4.8.5 | 8474 54 100 0 | 6218 22 4 0 | can't find '__main__' module | -lsupc++ required | `cmake -DCMAKE_C_COMPILER=gcc-4.8 -DCMAKE_CXX_COMPILER=g++-4.8 -DCMAKE_CXX_FLAGS="-w -std=c++0x" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -DLIBCXX_CXX_ABI="libsupc++" -DLIBCXX_LIBSUPCXX_INCLUDE_PATHS="/usr/include/c++/4.8;/usr/include/x86_64-linux-gnu/c++/4.8" -G Ninja -Wno-dev ../llvm`
| 3.4 | 4.8.5 | 9232 51 34 0 | 6772 20 5 0 | 4070 0 0 573 | -lsupc++ required | `cmake -DCMAKE_C_COMPILER=gcc-4.8 -DCMAKE_CXX_COMPILER=g++-4.8 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -DLIBCXX_CXX_ABI="libsupc++" -DLIBCXX_LIBSUPCXX_INCLUDE_PATHS="/usr/include/c++/4.8;/usr/include/x86_64-linux-gnu/c++/4.8" -G Ninja -Wno-dev ../llvm`
| 3.5 | 4.9.4 | 11131 90 35 0 | 7492 14 11 0 | 4595 0 0 155 | | `cmake -DCMAKE_C_COMPILER=gcc-4.9 -DCMAKE_CXX_COMPILER=g++-4.9 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -DLIBCXX_CXX_ABI="libsupc++" -DLIBCXX_LIBSUPCXX_INCLUDE_PATHS="/usr/include/c++/4.9;/usr/include/x86_64-linux-gnu/c++/4.9" -G Ninja -Wno-dev ../llvm`
| 3.6 | 4.9.4 | 12138 83 55 0 | 7924 14 13 0 | AttributeError | linker script | `cmake -DCMAKE_C_COMPILER=gcc-4.9 -DCMAKE_CXX_COMPILER=g++-4.9 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -G Ninja -Wno-dev ../llvm`
| 3.7 | 5.5 | 14006 105 65 0 | 8374 14 15 0 | 4785 23 106 13 0 3 | linker script | `cmake -DCMAKE_C_COMPILER=gcc-5 -DCMAKE_CXX_COMPILER=g++-5 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -G Ninja -Wno-dev ../llvm`
| 3.8 | 5.5 | 15353 129 134 0 | 8847 16 17 0 | 4908 14 58 42 0 4 | | `cmake -DCMAKE_C_COMPILER=gcc-5 -DCMAKE_CXX_COMPILER=g++-5 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -G Ninja -Wno-dev ../llvm`
| 3.9 | 6.5 | 17046 128 196 0 | 9597 16 23 0 | 5281 15 62 9 | | `cmake -DCMAKE_C_COMPILER=gcc-6 -DCMAKE_CXX_COMPILER=g++-6 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -G Ninja -Wno-dev ../llvm`
| 4.0 | 6.5 | 18750 150 438 0 | 10313 18 34 0 | 5102 28 596 0 | | `cmake -DCMAKE_C_COMPILER=gcc-6 -DCMAKE_CXX_COMPILER=g++-6 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;compiler-rt" -G Ninja -Wno-dev ../llvm`
| 5.0 | 7.5 | 20904 136 430 0 | 10992 20 43 0 | 5596 13 158 0 | | `cmake -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;compiler-rt" -G Ninja -Wno-dev ../llvm`
| 6.0 | 7.5 | 22609 145 545 0 | 11761 19 48 0 | 5642 14 218 0 | | `cmake -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;compiler-rt" -G Ninja -Wno-dev ../llvm`
| 7.0 | 8.4 | 26199 148 677 0 | 12900 19 56 0 | 5668 21 171 0 | | `cmake -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;compiler-rt" -G Ninja -Wno-dev ../llvm`
| 8.0 | 8.4 | 28597 151 614 0 | 13716 19 63 0 | 5949 36 191 1 | | `cmake -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;compiler-rt" -G Ninja -Wno-dev ../llvm`
| 9.0 | 9.4 | 32030 148 434 0 | 15197 20 60 0 | 6028 36 200 2 | | `cmake -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;compiler-rt;pstl;libunwind" -DLIBCXX_INCLUDE_TESTS=ON -G Ninja -Wno-dev ../llvm`
| 10.0 | 9.4 | 34697 146 455 0 | 16623 21 59 0 | 6097 35 255 0 | | `cmake -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;compiler-rt;pstl;libunwind" -DLIBCXX_INCLUDE_TESTS=ON -G Ninja -Wno-dev ../llvm`
| 11.0 | 9.4 | 37913 155 404 0 | 21309 25 63 0 | 5937 47 404 0 | | `cmake -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;compiler-rt;pstl;libunwind" -DLIBCXX_INCLUDE_TESTS=ON -G Ninja -Wno-dev ../llvm`
| 12.0 | 9.4 | 41327 154 655 0 | 27101 28 69 0 | 6074 47 410 6 | lit invoked using Python 3.9 | `cmake -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;compiler-rt;pstl;libunwind" -DLIBCXX_INCLUDE_TESTS=ON -G Ninja -Wno-dev ../llvm`
| 13.0 | | 43945 160 767 0 | 28237 29 78 0 3 | 6620 51 470 28 | built on Ubuntu 20.04 | `cmake -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;compiler-rt;pstl;libunwind" -DLIBCXX_INCLUDE_TESTS=ON -G Ninja -Wno-dev ../llvm`
| 14.0 | | 46477 163 411 0 | 29767 29 74 0 3 | 6680 37 961 0 | built on Ubuntu 20.04 | `cmake -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;compiler-rt;pstl;libunwind" -DLIBCXX_INCLUDE_TESTS=ON -G Ninja -Wno-dev ../llvm`
| 15.0 | | 48513 163 602 0 7 | 30931 29 81 0 31 | 7238 41 345 0 | built on Ubuntu 20.04 | `cmake -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;compiler-rt;pstl;libunwind" -DLIBCXX_INCLUDE_TESTS=ON -G Ninja -Wno-dev ../llvm`
| 16.0 | | 51518 162 715 0 7 | 33111 28 87 0 31 | 7597 41 412 0 | built on Ubuntu 20.04 | `cmake -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX=install-prefix -DLLVM_BUILD_RUNTIME=ON -DLLVM_ENABLE_PROJECTS="clang;pstl" -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;compiler-rt;libunwind" -DLIBCXX_INCLUDE_TESTS=ON -DLLVM_BUILD_RUNTIMES=ON -G Ninja -Wno-dev ../llvm`
Test results columns:
PASS XFAIL UNSUP FAIL SKIP UXPASS
^^^^ 4th column is the most important
Detailed notes:
354 fails in LLVM:
Many tests expect AT&T asm syntax, so LLVM tests were run with and without patch applied.
built on Ubuntu 20.04:
GCC 9 can't handle constexpr destructors, which are used somewhere in libc++ since 13.
Latest versions of libc++ require glibc 2.24, whereas Xenial is based on 2.23.
clang++ symlink:
2.7 and 2.8 create clang++ as an absolute symlinks. They have to be patched to make them relative.
-lsupc++ required:
Older libc++ tries to link against system libc++abi instead of just-built one.
For this reason it waas configured to link against libsupc++.
Clang 3.3 and 3.4 also doesn't have correct include paths to find libc++ in install prefix.
linker script:
Contents of `install-prefix/lib/libc++.so` is replaced with the following linker script: `INPUT(libc++.so.1 -lc++abi)`
lit invoked using Python 3.9:
On 12, `find_package(Python3)` is not supplied with minimal required version. Xenial defaults to 3.5, but lit relies on f-strings from 3.6.
Solution is to take shell command that Ninja tries to run, adjust the path to 3.9, and run it manually.
patched to enable clang for c++:
In 2.6, Clang C++ frontend was considered of pre-production quality. By default it forwards sources to GCC.
Patch disables the forwarding, because it would be a disservice to people who are interested in Clang 2.6 _today_.
General notes:
Directory layout:
The following symbolic links have been used to replicate period-correct directory layout:
(all) llvm/tools/clang -> clang
(3.2 - 8) llvm/projects/compiler-rt -> compiler-rt
(3.3) clang/runtime/libcxx -> libcxx (delete existing dummy directory)
(3.4 - 8) llvm/projects/libcxx -> libcxx
(3.6 - 8) llvm/projects/libcxxabi -> libcxxabi
(3.7 - 8) llvm/projects/libunwind -> libunwind
Test garbage in old versions:
Tests from old version tend to leave *.pyc files after they are run. They can be cleaned out with the following command: `find llvm clang -name \*.pyc -delete`
Environment:
Ubuntu Server 16.04.7 x86_64 (Xenial)
glibc 2.23-0ubuntu11.3
Cmake 3.22.6
Ninja 1.11.1
gold 1.15 (GNU Binutils for Ubuntu 2.30)
Python 2.7.18, 3.5.2
git 2.7.4
libxml2 2.9.13 (optional, used by c-index tests)
PPAs:
`ubuntu-toolchain-r` (GCC)
`savoury1` (CMake, Ninja, Python)
Ubuntu Server 20.04.6 x86_64 (Focal):
glibc 2.31-0ubuntu9.9
Cmake 3.16.3
Ninja 1.10.0
gold 1.16 (GNU Binutils for Ubuntu 2.34)
Python 3.8.10
git 2.25.1
libxml2 2.9.10+dfsg-5ubuntu0.20.04.6 (optional, used by c-index tests)
Repositories:
apt.llvm.org
diff --git a/llvm/lib/Target/X86/X86MCAsmInfo.cpp b/llvm/lib/Target/X86/X86MCAsmInfo.cpp
index ded9717..b828945 100644
--- a/llvm/lib/Target/X86/X86MCAsmInfo.cpp
+++ b/llvm/lib/Target/X86/X86MCAsmInfo.cpp
@@ -25,7 +25,7 @@ enum AsmWriterFlavorTy {
};
static cl::opt<AsmWriterFlavorTy>
-AsmWriterFlavor("x86-asm-syntax", cl::init(ATT),
+AsmWriterFlavor("x86-asm-syntax", cl::init(Intel),
cl::desc("Choose style of code to emit from X86 backend:"),
cl::values(clEnumValN(ATT, "att", "Emit AT&T-style assembly"),
clEnumValN(Intel, "intel", "Emit Intel-style assembly"),
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment