Use the new libc++ hardened mode instead of the deprecated safe mode.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
For potential future reference: this was reported by @dblaikie and @cjdb on https://reviews.llvm.org/D154997. The following command:
CC=clang CXX=clang++ cmake -G Ninja -DLLVM_ENABLE_WERROR=true -DLIBCXX_ENABLE_WERROR=true -DLLVM_BUILD_EXAMPLES=true -DCMAKE_BUILD_TYPE=Debug -DLLVM_ENABLE_ASSERTIONS=true -DLLVM_USE_SPLIT_DWARF=true -DLLVM_OPTIMIZED_TABLEGEN=true -DLLVM_ENABLE_LLD=true -DLLVM_ENABLE_PROJECTS='llvm;clang;clang-tools-extra;lld;lldb;cross-project-tests' -DLLVM_ENABLE_RUNTIMES='libcxxabi;libcxx;compiler-rt' -DLLDB_ENABLE_PYTHON=On ~/dev/llvm/src/llvm ninja check-all
was triggering the warning about _LIBCPP_ENABLE_ASSERTIONS being deprecated, which becomes an error due to -Werror. I verified locally that with this patch, the command now succeeds. The behavior is unchanged because using _LIBCPP_ENABLE_ASSERTIONS now enables the hardened mode instead.
Comment Actions
The CI failure appears unrelated:
_bk;t=1690424766404******************** TEST 'Clang :: AST/Interp/literals.cpp' FAILED ******************** _bk;t=1690424766404Script: _bk;t=1690424766404-- _bk;t=1690424766404: 'RUN: at line 1'; c:\ws\w3\llvm-project\premerge-checks\build\bin\clang.exe -cc1 -internal-isystem c:\ws\w3\llvm-project\premerge-checks\build\lib\clang\18\include -nostdsysteminc -fexperimental-new-constant-interpreter -fms-extensions -std=c++11 -verify C:\ws\w3\llvm-project\premerge-checks\clang\test\AST\Interp\literals.cpp _bk;t=1690424766404: 'RUN: at line 2'; c:\ws\w3\llvm-project\premerge-checks\build\bin\clang.exe -cc1 -internal-isystem c:\ws\w3\llvm-project\premerge-checks\build\lib\clang\18\include -nostdsysteminc -fexperimental-new-constant-interpreter -fms-extensions -std=c++20 -verify C:\ws\w3\llvm-project\premerge-checks\clang\test\AST\Interp\literals.cpp _bk;t=1690424766404: 'RUN: at line 3'; c:\ws\w3\llvm-project\premerge-checks\build\bin\clang.exe -cc1 -internal-isystem c:\ws\w3\llvm-project\premerge-checks\build\lib\clang\18\include -nostdsysteminc -std=c++11 -fms-extensions -verify=ref C:\ws\w3\llvm-project\premerge-checks\clang\test\AST\Interp\literals.cpp _bk;t=1690424766404: 'RUN: at line 4'; c:\ws\w3\llvm-project\premerge-checks\build\bin\clang.exe -cc1 -internal-isystem c:\ws\w3\llvm-project\premerge-checks\build\lib\clang\18\include -nostdsysteminc -std=c++20 -fms-extensions -verify=ref C:\ws\w3\llvm-project\premerge-checks\clang\test\AST\Interp\literals.cpp _bk;t=1690424766404-- _bk;t=1690424766404Exit Code: 1 _bk;t=1690424766404 _bk;t=1690424766404Command Output (stdout): _bk;t=1690424766404-- _bk;t=1690424766404$ ":" "RUN: at line 1" _bk;t=1690424768343$ "c:\ws\w3\llvm-project\premerge-checks\build\bin\clang.exe" "-cc1" "-internal-isystem" "c:\ws\w3\llvm-project\premerge-checks\build\lib\clang\18\include" "-nostdsysteminc" "-fexperimental-new-constant-interpreter" "-fms-extensions" "-std=c++11" "-verify" "C:\ws\w3\llvm-project\premerge-checks\clang\test\AST\Interp\literals.cpp" _bk;t=1690424768347# command stderr: _bk;t=1690424768347error: 'warning' diagnostics seen but not expected: _bk;t=1690424768347 File C:\ws\w3\llvm-project\premerge-checks\clang\test\AST\Interp\literals.cpp Line 946: cast to smaller integer type 'long' from 'char *' _bk;t=16904247683471 error generated. _bk;t=1690424768347 _bk;t=1690424768347error: command failed with exit status: 1
I will go ahead and merge this patch.