Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
159 commits
Select commit Hold shift + click to select a range
d727d3c
CI: run semantic tests with optimizer on for 200 runs as well (#99)
cdrappi Jan 16, 2026
40f634b
Test Ver[762]: add KnownStorage tests that should fail with the optim…
cdrappi Jan 16, 2026
d9f79f5
Fix Ver[762]: KnownStorage may drop revert (#97)
cdrappi Jan 16, 2026
a66067d
Optimizer bug: in UnusedStorageEliminator, CSTORE is indeed a storage…
cdrappi Jan 16, 2026
7667afc
CI (zellic-audit): run semantic tests with optimizer on for 200 runs …
cdrappi Jan 16, 2026
bca3310
Fix: in UnusedStorageEliminator, CSTORE is indeed a valid storage wri…
cdrappi Jan 16, 2026
dd83ecc
Test: GasMeter should know CLOAD/CSTORE's fix gas costs (#109)
cdrappi Jan 16, 2026
9165989
Fix: GasMeter should handle CLOAD/CSTORE operations (#104)
cdrappi Jan 16, 2026
15ddfef
Failing tests: CSE applies across confidential domain to remove sload…
cdrappi Jan 20, 2026
88bb1dc
Fix: CSE applies across confidential domain to remove sload from a pr…
cdrappi Jan 20, 2026
5c75476
fix: GenericStorageItem::setToZero should check all shielded types (#…
cdrappi Jan 20, 2026
12b94de
fix: `saddress[]` should not be implicitly convertible to `address[]`…
cdrappi Jan 21, 2026
44c01f2
fix(tstore): transient s-types should use tstore/tload (#124)
cdrappi Jan 21, 2026
8cea3d1
fix: --via-ir pipeline should support ShieldedFixedBytes (#125)
cdrappi Jan 21, 2026
2ca6dd6
test: add tests for shielded types return visibility
samlaf Jan 20, 2026
a00661d
fix(visibility): prevent returning any shielded type in public/extern…
samlaf Jan 20, 2026
a3d8da8
test: fix semantic tests
samlaf Jan 21, 2026
1a08226
test: add comprehensive tests for literal-to-shielded warnings
cdrappi Jan 21, 2026
0e2c342
fix: comprehensive literal-to-shielded warning detection
cdrappi Jan 21, 2026
1ef32a1
test: add failing test for shielded array deletion
cdrappi Jan 22, 2026
4e35d34
fix: ArrayUtils::clearArray should use CSTORE for shielded arrays
cdrappi Jan 22, 2026
6c1bb1a
test: add tests for shielded types return visibility
samlaf Jan 20, 2026
b30f6b5
test: fix semantic tests
samlaf Jan 21, 2026
fd48956
fix(visibility): prevent returning any shielded type in public/extern…
samlaf Jan 20, 2026
4cfbda5
test: update tests that check disallowing implicit conversion of sadd…
cdrappi Jan 22, 2026
0912dbb
test: add regression tests for shielded array storage operations
cdrappi Jan 22, 2026
8f80457
fix: use cstore/cload for shielded array storage operations
cdrappi Jan 22, 2026
231dc55
fix: `saddress[]` should not be implicitly convertible to `address[]`…
cdrappi Jan 21, 2026
f020e1f
test: update tests that check disallowing implicit conversion of sadd…
cdrappi Jan 22, 2026
e8a7e4d
test(semantic): update the storage tests to reflect new semantics
samlaf Jan 22, 2026
fdd788d
test: we're now allowed to cload from public storage
cdrappi Jan 23, 2026
49a2330
test: add comprehensive tests for shielded delete operations
cdrappi Jan 22, 2026
4c6708f
fix: use CSTORE for all shielded delete operations
cdrappi Jan 22, 2026
c55e60e
test: update sstore then cload test expectations to reflect new seman…
cdrappi Jan 26, 2026
99ae5ec
test: add yul, syntax & semantic tests for timestamp_seconds/timestam…
cdrappi Jan 26, 2026
05f3c98
fix: --via-ir pipeline should support magic block.timestamp_ms and .t…
cdrappi Jan 26, 2026
09a15ad
test: add EVM version gate test for timestampms instruction
cdrappi Jan 26, 2026
3d15507
fix: gate TIMESTAMPMS opcode to Mercury-compatible VMs
cdrappi Jan 26, 2026
8a2c390
ci(speedup): cache more steps in the solidity build (#140)
cdrappi Jan 26, 2026
61c27e9
feat(analysis): add shielded storage opcode semantics to type-checker…
samlaf Jan 26, 2026
8a3ceca
ci(speedup): only reconfigure cmake if something has changed (#143)
cdrappi Jan 27, 2026
9a9374c
test: expect evm version gating for block.timestamp_ms at the Solidit…
cdrappi Jan 26, 2026
dc937a7
fix: gate block.timestamp_ms and block.timestamp_seconds in TypeChecker
cdrappi Jan 26, 2026
a6dc900
test: add SMT test for block.timestamp_seconds aliasing bug
cdrappi Jan 27, 2026
59a4195
fix: alias block.timestamp_seconds to block.timestamp in SMT model
cdrappi Jan 27, 2026
2fca444
ci: don't run CI on PRs to seismic branch in the zellic-audit branch
cdrappi Jan 27, 2026
1d571aa
ci: don't run CI on PRs to seismic branch for now (#147)
cdrappi Jan 27, 2026
6c84c4a
ci: remove double apt-get; print ccache stats (#145)
cdrappi Jan 27, 2026
ad883e1
feat(analysis): add shielded storage opcode semantics to type-checker…
samlaf Jan 26, 2026
bf5a8b8
delete cstore->cload sem test (is now syntax test)
samlaf Jan 27, 2026
8fb3c2a
fix(optimiser): cstore shouldn't be eliminated when followed by sstor…
cdrappi Jan 27, 2026
9127708
fix(optimiser): cstore shouldn't be eliminated when followed by sstor…
cdrappi Jan 27, 2026
bbf49fa
fix(yul-optimiser): dont hoist sloads since they can revert (#151)
samlaf Feb 2, 2026
a3f4287
fix(evmasm-optimiser): mark sload as having effects (#148)
samlaf Feb 3, 2026
798e2fd
fix(yul-optimiser): dont hoist sloads since they can revert (#151)
samlaf Feb 2, 2026
5f21e45
fix(evmasm-optimiser): mark sload as having effects (#148)
samlaf Feb 3, 2026
62bccfa
test(yul): add tests for timestampms identifier reservation
cdrappi Feb 3, 2026
bc34366
fix(yul): add timestampms to reserved identifier exceptions for pre-M…
cdrappi Feb 3, 2026
5bc3ba7
test(codegen): add tests for string literal to sbytes conversion
cdrappi Feb 3, 2026
0c8d7a2
fix(codegen): support string literal to ShieldedFixedBytes conversion
cdrappi Feb 3, 2026
37d3bd7
test(types): add tests for disallowed saddress member access
cdrappi Feb 3, 2026
7d5cccc
fix(types): restrict saddress members to code and codehash only
cdrappi Feb 3, 2026
96d705f
test(analysis): add tests for shielded literal array warnings
cdrappi Feb 3, 2026
4690875
fix(analysis): detect shielded literals in array literal initializers
cdrappi Feb 3, 2026
473efad
test(codegen): add tests for UDT wrapping shielded primitives
cdrappi Feb 3, 2026
5fbd4d4
fix(codegen): support shielded primitives in user-defined types
cdrappi Feb 3, 2026
e49c827
test(codegen): add regression tests for shielded storage bugs
cdrappi Feb 3, 2026
38a7e6c
fix(codegen): complete shielded storage opcode fixes for VER-771
cdrappi Feb 3, 2026
b52b98e
ci(cache): run github actions with smarter cache so builds go faster
cdrappi Feb 3, 2026
f85a66a
test: add regression tests for shielded array storage operations
cdrappi Jan 22, 2026
5354fc5
test(codegen): add regression tests for shielded storage bugs
cdrappi Feb 3, 2026
85f62ae
fix: use cstore/cload for shielded array storage operations
cdrappi Jan 22, 2026
7e6593e
fix(codegen): complete shielded storage opcode fixes for VER-771
cdrappi Feb 3, 2026
7562634
test(codegen): add tests for transient shielded storage opcodes
cdrappi Feb 3, 2026
0f6b1d1
fix(codegen): use TSTORE/TLOAD for transient shielded value types
cdrappi Feb 3, 2026
9b784db
test(types): add regression tests for UDVT shielded mapping keys
cdrappi Feb 4, 2026
ee520ff
fix(types): reject shielded UDVTs as mapping keys
cdrappi Feb 4, 2026
a792c66
test(types): add tests for shielded rational shift and exp result types
cdrappi Feb 4, 2026
c6dc6aa
fix(types): return shielded types for rational shift/exp with shielde…
cdrappi Feb 4, 2026
4b9c6d4
test(codegen): add tests for shielded integer cleanup in unchecked mode
cdrappi Feb 4, 2026
83f6b84
fix(codegen): include ShieldedInteger in unchecked arithmetic cleanup
cdrappi Feb 4, 2026
b11374a
test(types): add tests for shielded type comparisons returning sbool
cdrappi Feb 4, 2026
ea660cd
fix(types): return sbool for shielded type comparisons
cdrappi Feb 4, 2026
a12f2c0
test(analysis): add syntax tests for shielded types in ABI encoding
cdrappi Feb 5, 2026
77c871e
fix(analysis): reject shielded types in ABI encoding and decoding
cdrappi Feb 5, 2026
d4ca185
test(types): add regression tests for UDVT shielded mapping keys
cdrappi Feb 5, 2026
3a3fbf9
test(codegen): add regression tests for address/saddress to enum conv…
cdrappi Feb 5, 2026
6847fe7
fix(codegen): correct enum conversion guard for address/saddress types
cdrappi Feb 5, 2026
959c4a3
test(codegen): add regression tests for bytes/string push bug
cdrappi Feb 5, 2026
488dff1
test(analysis): add syntax tests for shielded arithmetic info leaks
cdrappi Feb 5, 2026
35d3929
fix(analysis): warn about shielded integer arithmetic info leaks
cdrappi Feb 5, 2026
dac7f68
test(codegen): add syntax test for byte array helpers with non-shield…
cdrappi Feb 5, 2026
f94ad1d
fix(codegen): check base type instead of array category for shielded …
cdrappi Feb 5, 2026
21372ec
Test: GasMeter should know CLOAD/CSTORE's fix gas costs (#109)
cdrappi Jan 16, 2026
c86f222
Fix: GasMeter should handle CLOAD/CSTORE operations (#104)
cdrappi Jan 16, 2026
d136c7f
test(types): add tests for disallowed saddress member access
cdrappi Feb 3, 2026
b9668c6
fix(types): restrict saddress members to code and codehash only
cdrappi Feb 3, 2026
2e255bf
test(analysis): add syntax tests for shielded control flow warnings
cdrappi Feb 5, 2026
d091136
fix(analysis): warn about shielded types in control flow conditions
cdrappi Feb 5, 2026
6396e27
test(codegen): add tests for string literal to sbytes conversion
cdrappi Feb 3, 2026
30b6450
fix(codegen): support string literal to ShieldedFixedBytes conversion
cdrappi Feb 3, 2026
48c11bf
test(analysis): add syntax tests for implicit string literal to sbytesN
cdrappi Feb 5, 2026
469a0c1
fix(types): reject implicit string literal conversion to sbytesN
cdrappi Feb 5, 2026
491cec4
test(codegen): add syntax test for byte array helpers with non-shield…
cdrappi Feb 5, 2026
545ed83
fix(codegen): check base type instead of array category for shielded …
cdrappi Feb 5, 2026
5bde633
test(analysis): add syntax tests for shielded types in ABI encoding
cdrappi Feb 5, 2026
3c90140
fix(analysis): reject shielded types in ABI encoding and decoding
cdrappi Feb 5, 2026
a671413
fix(codegen): incorrect store/load instruction when copying (unimplem…
cdrappi Feb 6, 2026
1199286
test(codegen): add regression tests for struct delete with mixed shie…
cdrappi Feb 6, 2026
f6e0052
fix(codegen): use sstore for sub-32-byte fields in struct delete clear
cdrappi Feb 6, 2026
b9d9867
test(analysis): add regression tests for mismatched privacy opcodes
cdrappi Feb 6, 2026
6f3e914
test(ir): disable tests that require --via-ir
cdrappi Feb 6, 2026
c7ba41a
ci(ir): use --skip-via-ir for semantic tests until via-ir is re-enabled
cdrappi Feb 6, 2026
a5f4047
chore(ir): disable compiling with --via-ir pipeline until we fully su…
cdrappi Feb 6, 2026
70b588d
test(ir): disable tests that require --via-ir
cdrappi Feb 6, 2026
fe61bfe
ci(ir): use --skip-via-ir for semantic tests until via-ir is re-enabled
cdrappi Feb 6, 2026
e4f327d
chore(ir): disable compiling with --via-ir pipeline until we fully su…
cdrappi Feb 6, 2026
d28f4a5
test(types): expect suint length for dynamic shielded arrays
cdrappi Feb 6, 2026
8780350
fix(types): use cload/cstore for dynamic shielded array length
cdrappi Feb 6, 2026
fa9ee13
test(types): expect suint length for dynamic shielded arrays
cdrappi Feb 6, 2026
80b21a5
fix(types): use cload/cstore for dynamic shielded array length
cdrappi Feb 6, 2026
eec6ccb
docs(shielded): add SHIELDED_TYPES.md documenting privacy edge cases
cdrappi Feb 10, 2026
0984020
test(analysis): expect msg.value to shielded type warning
cdrappi Feb 11, 2026
a3fa286
fix(analysis): warn when msg.value is assigned to shielded type
cdrappi Feb 11, 2026
cbeb743
test(analysis): expect dynamic shielded array length upper-bound warning
cdrappi Feb 11, 2026
a671110
fix(analysis): warn about dynamic shielded array length upper-bound
cdrappi Feb 11, 2026
f27b8fb
chore(types): document isByteArrayOrString non-shielded assumption
cdrappi Feb 11, 2026
75e8903
test(analysis): expect shielded transient storage rejection
cdrappi Feb 11, 2026
72ef883
fix(analysis): reject shielded types with transient storage
cdrappi Feb 11, 2026
9020bc2
test(analysis): expect shielded literal leak warnings in non-declarat…
cdrappi Feb 12, 2026
bc72713
fix(analysis): warn on shielded literal conversions in all contexts
cdrappi Feb 12, 2026
7d0b91f
test(analysis): expect shielded leak warnings for constant exprs
cdrappi Feb 13, 2026
11971ec
fix(analysis): warn on constant expressions cast to shielded types
cdrappi Feb 13, 2026
4b3ab63
test(analysis): expect shielded literal leak warnings in non-declarat…
cdrappi Feb 13, 2026
41c9237
fix(analysis): warn on shielded literal conversions in all contexts
cdrappi Feb 13, 2026
580a46d
test(types): update existing tests for sbytes dynamic byte array
cdrappi Feb 13, 2026
503a960
test(types): add sbytes dynamic shielded byte array tests
cdrappi Feb 13, 2026
4523255
fix(codegen): implement sbytes and fix cstore/cload codegen bugs
cdrappi Feb 13, 2026
f905490
docs(types): document sbytes dynamic shielded bytes support
cdrappi Feb 13, 2026
4510920
test(types): update existing tests for sbytes dynamic byte array
cdrappi Feb 13, 2026
9fd78c5
test(types): add sbytes dynamic shielded byte array tests
cdrappi Feb 13, 2026
040d93d
fix(codegen): implement sbytes and fix cstore/cload codegen bugs
cdrappi Feb 13, 2026
5392766
docs(types): document sbytes dynamic shielded bytes support
cdrappi Feb 13, 2026
1e2189e
ci(semantic-tests): add via-IR test runs with --unsafe-via-ir
cdrappi Feb 14, 2026
b2a0417
test(via-ir): update test configuration for via-IR compatibility
cdrappi Feb 14, 2026
268086b
test(via-ir): add regression tests with compileViaYul:also
cdrappi Feb 14, 2026
292af69
fix(via-ir): complete shielded type support for via-IR pipeline
cdrappi Feb 14, 2026
848e611
ci(semantic-tests): add via-IR test runs with --unsafe-via-ir
cdrappi Feb 14, 2026
a2480c2
test(via-ir): update test configuration for via-IR compatibility
cdrappi Feb 14, 2026
46942cf
test(via-ir): add regression tests with compileViaYul:also
cdrappi Feb 14, 2026
4a228e7
fix(via-ir): complete shielded type support for via-IR pipeline
cdrappi Feb 14, 2026
4a3962c
test(types): add EVM version validation tests for shielded types
cdrappi Feb 15, 2026
b35d358
fix(codegen): add EVM version validation for shielded types
cdrappi Feb 15, 2026
19f5b62
test(langutil): add EVM version default consistency test
cdrappi Feb 16, 2026
0fc7ee3
fix(langutil): use single source of truth for default EVM version
cdrappi Feb 16, 2026
a24f7ad
test(yul-optimizer): add cstore/cload optimizer tests
cdrappi Feb 16, 2026
fa63127
fix(yul-optimizer): wire cstore/cload as canonical storage in libyul
cdrappi Feb 16, 2026
35532ba
Merge veridise-audit into merge-audits-2
cdrappi Feb 16, 2026
12a1607
Merge zellic-audit into merge-audits-2
cdrappi Feb 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
157 changes: 124 additions & 33 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
# CI workflow for seismic-solidity
name: Tests

on:
push:
branches:
- seismic
- merge-audits-2
pull_request:
branches:
- seismic
- merge-audits-2

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
Expand All @@ -22,60 +25,148 @@ jobs:
timeout-minutes: 120
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
# TODO: move lower after works
- name: Clone seismic-revm repo
run: |
git clone https://github.com/SeismicSystems/seismic-revm.git /tmp/seismic-revm
echo "SEISMIC_REVM_PATH=/tmp/seismic-revm" >> $GITHUB_ENV
echo "seismic-revm cloned to: /tmp/seismic-revm"
- uses: Swatinem/rust-cache@v2

# Restore build cache (based on target branch for PRs, current branch for pushes)
- name: Restore build cache
uses: actions/cache/restore@v4
with:
shared-key: "semantic-test-cache"
workspaces: /tmp/seismic-revm
- name: Build seismic-revm
run: |
cd $SEISMIC_REVM_PATH
cargo build -p revme
echo "SEISMIC_REVME_EXEC=$SEISMIC_REVM_PATH/target/debug/revme" >> $GITHUB_ENV
- name: Install & configure ccache
path: build
key: build-${{ runner.os }}-${{ github.base_ref || github.ref_name }}

# Combined dependency installation (saves ~15-20s by avoiding duplicate apt-get update)
- name: Install dependencies & ccache
run: |
set -euo pipefail
sudo apt-get update
sudo apt-get install -y ccache
ccache --set-config=cache_dir=$HOME/.ccache
ccache --set-config=max_size=1G
sudo apt-get install -y ccache build-essential python3 python3-pip zlib1g-dev libboost-all-dev libssl-dev
mkdir -p ~/.ccache
ccache --show-config | grep cache_dir

- name: Restore ccache
uses: actions/cache@v4
uses: actions/cache/restore@v4
with:
path: ~/.ccache
key: ccache-${{ hashFiles('**/CMakeLists.txt') }}
restore-keys: ccache-
key: ccache-${{ runner.os }}-${{ github.base_ref || github.ref_name }}

- name: Install dependencies
# Configure ccache AFTER restore to ensure settings aren't overwritten
- name: Configure ccache
run: |
sudo apt-get update
sudo apt-get install -y build-essential python3 python3-pip zlib1g-dev libboost-all-dev libssl-dev
ccache --set-config=cache_dir=$HOME/.ccache
ccache --set-config=max_size=2G
# CRITICAL: hash_dir=false allows cache hits even when build paths differ between CI runs
ccache --set-config=hash_dir=false
ccache --set-config=base_dir=$GITHUB_WORKSPACE

- name: Build ssolc
run: |
set -euo pipefail
echo "Building with $(nproc) parallel jobs"
echo "=== ccache stats BEFORE build ==="
ccache -s
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug \
-DPEDANTIC=OFF \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
# Only run cmake configure if CMakeCache.txt doesn't exist.
# cmake --build will automatically re-run cmake if CMakeLists.txt changed.
if [ ! -f CMakeCache.txt ]; then
echo "No CMakeCache.txt found, running cmake configure..."
cmake .. -DCMAKE_BUILD_TYPE=Debug \
-DPEDANTIC=OFF \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
else
echo "CMakeCache.txt exists, skipping configure step"
fi
cmake --build . --config Debug -j $(nproc)
echo "=== ccache stats AFTER build ==="
ccache -s
- name: Run soltest
run: ./scripts/soltest.sh
- name: Run semantic tests

# TODO: Remove the hardcoded commit checkout once we merge the --skip-via-ir flag into the seismic branch of seismic-revm
- name: Clone seismic-revm repo
run: |
git clone https://github.com/SeismicSystems/seismic-revm.git /tmp/seismic-revm
cd /tmp/seismic-revm
git checkout e962e2174e097e69284cf9cbbbf7bc15e5d718cf
echo "SEISMIC_REVM_PATH=/tmp/seismic-revm" >> $GITHUB_ENV
echo "seismic-revm cloned to: /tmp/seismic-revm"
- uses: Swatinem/rust-cache@v2
with:
shared-key: "semantic-test-cache"
workspaces: /tmp/seismic-revm
- name: Build seismic-revm
run: |
cd $SEISMIC_REVM_PATH
cargo build -p revme
echo "SEISMIC_REVME_EXEC=$SEISMIC_REVM_PATH/target/debug/revme" >> $GITHUB_ENV

- name: Setup semantic test environment
run: |
set -euo pipefail
SSOLC_EXEC="$GITHUB_WORKSPACE/build/solc/solc"
[ -x "$SSOLC_EXEC" ] || { echo "Error: solc not found at $SSOLC_EXEC"; exit 1; }
[ -x "$SEISMIC_REVME_EXEC" ] || { echo "Error: revme executable not found at $SEISMIC_REVME_EXEC"; exit 1; }
SEMANTIC_TESTS_DIR="$GITHUB_WORKSPACE/test/libsolidity/semanticTests"
RUST_LOG=info RUST_BACKTRACE=1 $SEISMIC_REVME_EXEC semantics --keep-going -s "$SSOLC_EXEC" -t "$SEMANTIC_TESTS_DIR" 2>&1
echo "SSOLC_EXEC=$SSOLC_EXEC" >> $GITHUB_ENV
echo "SEMANTIC_TESTS_DIR=$GITHUB_WORKSPACE/test/libsolidity/semanticTests" >> $GITHUB_ENV

# Create a bash function for running semantic tests and export it
cat >> $GITHUB_ENV << 'SCRIPT_EOF'
RUN_SEMANTIC_TESTS<<EOF
run_semantic_tests() {
RUST_LOG=info \
RUST_BACKTRACE=1 \
$SEISMIC_REVME_EXEC semantics \
--keep-going \
-s "$SSOLC_EXEC" \
-t "$SEMANTIC_TESTS_DIR" \
--unsafe-via-ir \
"$@" \
2>&1
}
EOF
SCRIPT_EOF
- name: Run semantic tests (no optimizer, no IR)
run: |
set -euo pipefail
eval "$RUN_SEMANTIC_TESTS"
run_semantic_tests
- name: Run semantic tests (with optimizer, no IR)
run: |
set -euo pipefail
eval "$RUN_SEMANTIC_TESTS"
run_semantic_tests --optimize --optimizer-runs 200
- name: Run semantic tests (no optimizer, --via-ir)
run: |
set -euo pipefail
eval "$RUN_SEMANTIC_TESTS"
run_semantic_tests --via-ir
- name: Run semantic tests (with optimizer, --via-ir)
run: |
set -euo pipefail
eval "$RUN_SEMANTIC_TESTS"
run_semantic_tests --via-ir --optimize --optimizer-runs 200

# Save caches only on push to target branches (after PR merge)
# Delete old caches first since GitHub caches are immutable
- name: Delete old caches
if: github.event_name == 'push'
env:
GH_TOKEN: ${{ github.token }}
run: |
gh cache delete "build-${{ runner.os }}-${{ github.ref_name }}" --repo ${{ github.repository }} || true
gh cache delete "ccache-${{ runner.os }}-${{ github.ref_name }}" --repo ${{ github.repository }} || true

- name: Save build cache
if: github.event_name == 'push'
uses: actions/cache/save@v4
with:
path: build
key: build-${{ runner.os }}-${{ github.ref_name }}

- name: Save ccache
if: github.event_name == 'push'
uses: actions/cache/save@v4
with:
path: ~/.ccache
key: ccache-${{ runner.os }}-${{ github.ref_name }}
Loading