Skip to content

Enable more UBSan checks #979

Enable more UBSan checks

Enable more UBSan checks #979

Workflow file for this run

---
name: msvc-build
on: [push]
permissions: { }
jobs:
build:
runs-on: windows-2022
strategy:
fail-fast: false
matrix:
include:
- name: MSVC Debug
preset: "msvc-debug"
- name: MSVC Release
preset: "msvc-release"
- name: MSVC Debug w/ ASan
preset: "msvc-debug-asan"
- name: MSVC Release w/ ASan
preset: "msvc-release-asan"
- name: MSVC LLVM Debug
preset: "msvc-llvm-debug"
- name: MSVC LLVM Release
preset: "msvc-llvm-release"
- name: MSVC Debug without AVX2
preset: "msvc-debug-no-avx2"
# MSVC static analysis false positive regression in 17.11:
# optimistic_lock.hpp(171) : warning C26493: Don't use C-style casts
# (type.4).
# - name: MSVC Static Analysis Debug
# preset: "msvc-static-analysis-debug"
# - name: MSVC Static Analysis Release
# preset: "msvc-static-analysis-release"
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install Boost
uses: MarkusJx/install-boost@v2.4.5
id: install-boost
with:
boost_version: 1.78.0
platform_version: 2019
toolset: msvc
cache: false
- name: Setup command line tools
uses: ilammy/msvc-dev-cmd@v1
with:
toolset: 14.42
- name: Configure CMake
run: |
# Ensure that we use clang-cl from MSVC, not LLVM
$env:path = $env:path -split ';' -notmatch 'C:\\Program Files\\LLVM\\bin' -join ';'
cmake --preset "${{ matrix.preset }}"
env:
BOOST_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }}
- name: Build
run: |
cmake --build --preset "${{ matrix.preset }}"
$SARIF_SRC = "${{github.workspace}}\build\${{matrix.preset}}\msvc.sarif"
$SARIF_DST = "${{github.workspace}}\build\$($env:matrix.preset)\msvc-${{matrix.preset}}.sarif"
Move-Item -Path $SARIF_SRC -Destination $SARIF_DST -ErrorAction SilentlyContinue
- name: Upload SARIF as an Artifact
uses: actions/upload-artifact@v4
with:
name: sarif-file
path: "${{github.workspace}}\\build\\${{matrix.preset}}\\msvc-${{matrix.preset}}.sarif"
if: >
always()
&& (matrix.preset == 'msvc-static-analysis-release'
|| matrix.preset == 'msvc-static-analysis-debug')
- name: Correctness test
run: ctest -V --preset "${{ matrix.preset }}"
if: >
(matrix.preset != 'msvc-static-analysis-release')
&& (matrix.preset != 'msvc-static-analysis-debug')
- name: Benchmark correctness test
run: |
$Env:P = "${{ matrix.preset }}"
cmake --build --preset "$env:P" --target quick_benchmarks
if: >
(matrix.preset != 'msvc-static-analysis-release')
&& (matrix.preset != 'msvc-static-analysis-debug')