Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 0 additions & 141 deletions .github/workflows/CI-mingw.yml

This file was deleted.

54 changes: 40 additions & 14 deletions .github/workflows/CI-unixish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:

strategy:
matrix:
os: [ubuntu-22.04, ubuntu-22.04-arm, ubuntu-24.04, ubuntu-24.04-arm, macos-14, macos-15, macos-15-intel, macos-26, macos-26-intel]
os: [ubuntu-24.04]
compiler: [clang++]
include:
- os: ubuntu-22.04
Expand All @@ -32,13 +32,13 @@ jobs:
# the man-db trigger causes package installations to stall for several minutes at times. so just drop the package.
# see https://github.com/actions/runner/issues/4030
- name: Remove man-db package on ubuntu
if: matrix.os == 'ubuntu-24.04'
if: startsWith(matrix.os, 'ubuntu-24.04')
run: |
sudo apt-get update
sudo apt-get remove man-db

- name: Install missing software on ubuntu
if: matrix.os == 'ubuntu-24.04'
if: startsWith(matrix.os, 'ubuntu-24.04')
run: |
sudo apt-get update
sudo apt-get install valgrind
Expand Down Expand Up @@ -109,7 +109,7 @@ jobs:
(cd cmake.output && ./testrunner)

- name: Run valgrind
if: matrix.os == 'ubuntu-24.04'
if: startsWith(matrix.os, 'ubuntu-24.04')
run: |
make clean
make -j$(nproc) CXXOPTS="-O1"
Expand All @@ -118,27 +118,27 @@ jobs:
VALGRIND_TOOL=memcheck ./selfcheck.sh

- name: Run with libstdc++ debug mode
if: matrix.os == 'ubuntu-24.04' && matrix.compiler == 'g++'
if: startsWith(matrix.os, 'ubuntu-24.04') && matrix.compiler == 'g++'
run: |
make clean
make -j$(nproc) test selfcheck CXXOPTS="-Werror -g3 -D_GLIBCXX_DEBUG"

- name: Run with libc++ hardening mode
if: matrix.os == 'ubuntu-24.04' && matrix.compiler == 'clang++'
if: startsWith(matrix.os, 'ubuntu-24.04') && matrix.compiler == 'clang++'
run: |
make clean
make -j$(nproc) test selfcheck CXXOPTS="-Werror -stdlib=libc++ -g3 -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_DEBUG" LDOPTS="-lc++"

- name: Run AddressSanitizer
if: matrix.os == 'ubuntu-24.04' || matrix.os == 'macos-26'
if: startsWith(matrix.os, 'ubuntu-24.04') || startsWith(matrix.os, 'macos-26')
run: |
make clean
make -j$(nproc) test selfcheck CXXOPTS="-Werror -O2 -g3 -fsanitize=address" LDOPTS="-fsanitize=address"
env:
ASAN_OPTIONS: detect_stack_use_after_return=1

- name: Run UndefinedBehaviorSanitizer
if: matrix.os == 'ubuntu-24.04' || matrix.os == 'macos-26'
if: startsWith(matrix.os, 'ubuntu-24.04') || startsWith(matrix.os, 'macos-26')
run: |
make clean
make -j$(nproc) test selfcheck CXXOPTS="-Werror -O2 -g3 -fsanitize=undefined -fno-sanitize=signed-integer-overflow" LDOPTS="-fsanitize=undefined -fno-sanitize=signed-integer-overflow"
Expand All @@ -147,22 +147,45 @@ jobs:

# TODO: requires instrumented libc++
- name: Run MemorySanitizer
if: false && matrix.os == 'ubuntu-24.04' && matrix.compiler == 'clang++'
if: false && startsWith(matrix.os, 'ubuntu-24.04') && matrix.compiler == 'clang++'
run: |
make clean
make -j$(nproc) test selfcheck CXXOPTS="-Werror -O2 -g3 -stdlib=libc++ -fsanitize=memory" LDOPTS="-lc++ -fsanitize=memory"

- name: Run callgrind
if: matrix.os == 'ubuntu-24.04'
if: startsWith(matrix.os, 'ubuntu-24.04')
run: |
wget https://github.com/danmar/simplecpp/archive/refs/tags/1.5.1.tar.gz
tar xvf 1.5.1.tar.gz
rm -f 1.5.1.tar.gz

# O2 - start
make clean
make -j$(nproc) CXXOPTS="-O2 -g3" simplecpp
VALGRIND_TOOL=callgrind SIMPLECPP_PATH=simplecpp-1.5.1 ./selfcheck.sh >callgrind.log || (cat callgrind.log && false)
cat callgrind.log
VALGRIND_TOOL=callgrind SIMPLECPP_PATH=simplecpp-1.5.1 ./selfcheck.sh >callgrind_o2.log || (cat callgrind_o2.log && false)
cat callgrind_o2.log
# O2 - end

# O3 - start
make clean
make -j$(nproc) CXXOPTS="-O3 -g3" simplecpp
VALGRIND_TOOL=callgrind SIMPLECPP_PATH=simplecpp-1.5.1 ./selfcheck.sh >callgrind_o3.log || (cat callgrind_o3.log && false)
cat callgrind_o3.log
# O3 - end

# O2+LTO - start
make clean
make -j$(nproc) CXXOPTS="-O2 -g3 -flto" LDOPTS="-flto" simplecpp
VALGRIND_TOOL=callgrind SIMPLECPP_PATH=simplecpp-1.5.1 ./selfcheck.sh >callgrind_o2_lto.log || (cat callgrind_o2_lto.log && false)
cat callgrind_o2_lto.log
# O2+LTO - end

# O3+LTO - start
make clean
make -j$(nproc) CXXOPTS="-O2 -g3 -flto" LDOPTS="-flto" simplecpp
VALGRIND_TOOL=callgrind SIMPLECPP_PATH=simplecpp-1.5.1 ./selfcheck.sh >callgrind_o3_lto.log || (cat callgrind_o3_lto.log && false)
cat callgrind_o3_lto.log
# O3+LTO - end

# PGO - start
make clean
Expand All @@ -179,6 +202,9 @@ jobs:
cat callgrind_pgo.log
# PGO - end

# TODO: PGO+O3
# TODO: PGO+LTO

for f in callgrind.out.*;
do
callgrind_annotate --auto=no $f > $f.annotated.log
Expand All @@ -187,8 +213,8 @@ jobs:
rm -rf simplecpp-1.5.1

- uses: actions/upload-artifact@v4
if: matrix.os == 'ubuntu-24.04'
if: startsWith(matrix.os, 'ubuntu-24.04')
with:
name: Callgrind Output - ${{ matrix.compiler }}
name: Callgrind Output - ${{ matrix.os }} - ${{ matrix.compiler }}
path: |
./callgrind.*
82 changes: 0 additions & 82 deletions .github/workflows/CI-windows.yml

This file was deleted.

Loading
Loading