Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
468 commits
Select commit Hold shift + click to select a range
15539c0
Promote numeric and sort libc++ tests using C++17 mode
tautschnig Apr 14, 2026
eaf68d0
Add KNOWNBUG test for constexpr static member template substitution
tautschnig Apr 14, 2026
a1dbe2d
Substitute non-type template parameters in constexpr static member in…
tautschnig Apr 14, 2026
69841f9
Add KNOWNBUG test for constexpr static member in static_assert
tautschnig Apr 14, 2026
1378d58
Evaluate constexpr static member initializers with C++ type-checker
tautschnig Apr 14, 2026
d879641
Add KNOWNBUG test for libc++ std::ratio template parameter substitution
tautschnig Apr 14, 2026
82616b8
Add KNOWNBUG test for self-referential typedef in template with const…
tautschnig Apr 14, 2026
044f3d2
Update KNOWNBUG description with refined root cause
tautschnig Apr 14, 2026
6c86d7e
Add force_elaborate flag to fix constexpr member evaluation during te…
tautschnig Apr 14, 2026
26335d7
Remove workarounds from std::move and std::function tests, mark KNOWNBUG
tautschnig Apr 14, 2026
e896192
Elaborate target type before constructor lookup in implicit conversion
tautschnig Apr 14, 2026
5f845cb
Parse and evaluate requires clause expressions during template specia…
tautschnig Apr 14, 2026
fde3f17
C++20 concept subsumption for function template overload resolution
tautschnig Apr 14, 2026
e1dd6f1
Evaluate requires clauses with built-in type traits during specializa…
tautschnig Apr 14, 2026
e2808e7
Evaluate concept constraints during function template overload resolu…
tautschnig Apr 15, 2026
558122d
Set parser mode to CLANG when --stdlib libc++ is used
tautschnig Apr 15, 2026
f2f788c
Parse and evaluate compound requirements in requires-expressions
tautschnig Apr 15, 2026
5404767
Replace sort KNOWNBUG test with focused deduction failure test
tautschnig Apr 15, 2026
220d7bc
Enable Clang built-in type traits for C++20 libc++ mode
tautschnig Apr 15, 2026
02c67ad
Remove stale cpp20_sort_cpp20_libcxx test directory
tautschnig Apr 15, 2026
b1a40ae
Demote failing libc++ tests to KNOWNBUG
tautschnig Apr 16, 2026
555ed99
Add type predicate evaluation infrastructure for libc++ type traits
tautschnig Apr 16, 2026
a1fa312
Enable type predicate keywords for all C++ versions with libc++
tautschnig Apr 16, 2026
10bcd94
Add minimal KNOWNBUG tests for remaining libc++ root causes
tautschnig Apr 16, 2026
702a15d
Simplify comma expressions in non-type template arguments
tautschnig Apr 16, 2026
c4412cb
Catch errors during force-elaboration of empty template instances
tautschnig Apr 16, 2026
dcfbff8
Improve template parameter substitution for SFINAE patterns
tautschnig Apr 16, 2026
1a57b53
Defer make_constant for template-dependent static member initializers
tautschnig Apr 16, 2026
4a2f5e9
Fix SFINAE for member function templates with qualified parameter types
tautschnig Apr 17, 2026
29a1639
Enable __remove_reference_t for all C++ versions with Clang preprocessor
tautschnig Apr 17, 2026
81952ab
Promote cpp11_libcxx_array from KNOWNBUG to CORE
tautschnig Apr 17, 2026
a404ef1
Revert "Enable __remove_reference_t for all C++ versions with Clang p…
tautschnig Apr 17, 2026
51be62b
Force-elaborate empty template class instances during scope resolution
tautschnig Apr 17, 2026
7c172e2
Parse and evaluate concept type requirements in requires-expressions
tautschnig Apr 17, 2026
256898a
Add regression tests for C++20 concept evaluation features
tautschnig Apr 17, 2026
105316f
Fix noexcept expression handling and template template parameter reso…
tautschnig Apr 17, 2026
184c70e
Fix template template parameter resolution, elaboration, and concept …
tautschnig Apr 20, 2026
995c75b
Fix concept-constrained specialization matching in elaborate_class_te…
tautschnig Apr 20, 2026
af7d43d
Support nested template aliases as template template arguments
tautschnig Apr 20, 2026
340faa9
Remove try/catch that silently swallowed template elaboration errors
tautschnig Apr 21, 2026
7a1755e
Promote 4 C++20 KNOWNBUG tests to CORE
tautschnig Apr 21, 2026
f43c5fb
Promote 3 more KNOWNBUG tests to CORE
tautschnig Apr 21, 2026
f7caf6d
Evaluate simple and compound requirements in concept bodies
tautschnig Apr 21, 2026
18e8464
Implement [temp.deduct.funcaddr] for function template address deduction
tautschnig Apr 21, 2026
52a5b46
Add KNOWNBUG tests for libc++-20 (LLVM 20) compatibility
tautschnig Apr 21, 2026
51a225e
Add KNOWNBUG test for concepts ordering on GCC 14.2+
tautschnig Apr 21, 2026
df9d26b
Support lambda attributes, __builtin_convertvector, and __builtin_red…
tautschnig Apr 21, 2026
596bdb7
Add try/catch around [temp.deduct.funcaddr] recursive call
tautschnig Apr 21, 2026
ac61d3e
Parse 'requires requires { ... }' on lambda trailing requires clause
tautschnig Apr 21, 2026
e3023f1
Update KNOWNBUG descriptions with investigation findings
tautschnig Apr 21, 2026
dd1ad4e
Promote cpp20_concepts_ordering_gcc14 to CORE
tautschnig Apr 22, 2026
d575485
Promote last 2 KNOWNBUG tests to CORE
tautschnig Apr 22, 2026
9206977
Add KNOWNBUG tests for initializer_list and endl with libc++-20
tautschnig Apr 22, 2026
9e61aae
Fix incomplete type initialization and [temp.deduct.funcaddr] robustness
tautschnig Apr 22, 2026
42e667a
Handle forward-declared template instantiations in template arg deduc…
tautschnig Apr 22, 2026
e416e80
Add focused KNOWNBUG tests for libc++-20 template deduction issues
tautschnig Apr 22, 2026
4be2a2d
Update KNOWNBUG descriptions with precise root cause analysis
tautschnig Apr 22, 2026
5c8fc4a
Merge 3 libc++-20 endl KNOWNBUG tests into 1, add preprocessed CORE test
tautschnig Apr 22, 2026
96d5ed3
Remove invalid preprocessed test (cpp11_libcxx20_endl_pp)
tautschnig Apr 22, 2026
1168a6e
Fix _Float128 typedef parsing and add preprocessed libc++-20 test
tautschnig Apr 22, 2026
e39598d
Remove invalid preprocessed test, update KNOWNBUG description
tautschnig Apr 22, 2026
44210ab
Add host-reproducible preprocessed test for libc++-20 endl failure
tautschnig Apr 22, 2026
26c67af
Fix std::endl template argument deduction with libc++-20
tautschnig Apr 22, 2026
5b30201
Remove preprocessed libc++-20 endl test
tautschnig Apr 23, 2026
9ca1c98
Propagate template metadata to forward-declared instantiations
tautschnig Apr 23, 2026
868696d
Remove leftover debug code from elaborate_class_template
tautschnig Apr 23, 2026
d4bb36b
Add C++ standard section references to template code
tautschnig Apr 23, 2026
13c18b8
Fix scanner rule ordering for gcc-14 type trait builtins
tautschnig Apr 23, 2026
bbca0a4
Evaluate requires-clause constraints during specialization matching
tautschnig Apr 23, 2026
219bfff
Include type-predicate IDs in constrained specialization identifiers
tautschnig Apr 23, 2026
f642196
Fix scanner rule ordering for gcc-14 type trait builtins
tautschnig Apr 23, 2026
804217b
Fall back to nondet initialization when no constructor is found
tautschnig Apr 23, 2026
346db5e
Support uninitialized declarations in if-with-initializer
tautschnig Apr 23, 2026
acfe6cd
Declare __builtin_{add,sub,mul}_overflow in C++ mode
tautschnig Apr 23, 2026
d2cb1a1
Handle variadic pack arguments in partial specialization typechecking
tautschnig Apr 23, 2026
19de945
Add KNOWNBUG tests for GCC 16 and libc++-20 failures
tautschnig Apr 24, 2026
2edc09d
Default to C++14 when using CLANG/MSVC preprocessor
tautschnig Apr 24, 2026
49410d8
Skip extern template for free functions, add --depth for GCC 16 list
tautschnig Apr 24, 2026
674a15f
Handle C++11 attributes on function parameters and fix scoped attributes
tautschnig Apr 24, 2026
2e7c3eb
Enable __remove_reference_t for libc++ in all C++ modes
tautschnig Apr 25, 2026
ad823ef
Add CORE test for decltype return type with SFINAE, update KNOWNBUG d…
tautschnig Apr 25, 2026
2b0f6fb
Add __decay Clang builtin type trait to scanner
tautschnig Apr 25, 2026
dca4d17
Accept CONVERSION ERROR for libc++ algorithm tests on host
tautschnig Apr 25, 2026
41caaab
Use instantiation scope for SFINAE default parameter evaluation
tautschnig Apr 26, 2026
704478a
Retry default non-type template args in instantiation scope
tautschnig Apr 26, 2026
3bb9619
Promote libc++-20 algorithm KNOWNBUG tests to CORE
tautschnig Apr 26, 2026
c3dcd19
Update gcc16_list_pushback KNOWNBUG with precise root cause
tautschnig Apr 26, 2026
c5a20ff
Update GCC 16 KNOWNBUG descriptions with precise root cause
tautschnig Apr 26, 2026
452c62e
Implement [dcl.init.list] p3: unwrap brace-init for non-aggregates
tautschnig Apr 26, 2026
204a77d
Fix implicit copy constructor with move constructors, add reference b…
tautschnig Apr 27, 2026
45b50bb
Add regression tests, tighten test descs, update standard coverage
tautschnig Apr 27, 2026
32110f7
[temp.point] Prefer template definition over forward declaration
tautschnig Apr 27, 2026
63a876f
Restructure STANDARD_COVERAGE.md, add template definition preference
tautschnig Apr 27, 2026
8274816
Comprehensive STANDARD_COVERAGE.md with full audit
tautschnig Apr 27, 2026
2df5aef
STANDARD_COVERAGE.md: add conversions, attributes, function names, re…
tautschnig Apr 27, 2026
04fab0f
Fix duplicate code, static variable, and misleading comment
tautschnig Apr 27, 2026
2a5b53e
Clear failed function bodies properly, remove goto_convert workaround
tautschnig Apr 27, 2026
fda46d3
Apply clang-format-15 to all changed files
tautschnig Apr 27, 2026
86d53f9
Fix CI: clang-format, cpplint, missing override, include order
tautschnig Apr 27, 2026
22b0bf0
Fix CI: revert dstring.h, rename cdecl, remove unused irep ID, format
tautschnig Apr 27, 2026
35b8670
Fix remaining CI: rename cdecl in all files, remove unused include
tautschnig Apr 27, 2026
14fa216
Mark 4 regression/cpp tests as KNOWNBUG
tautschnig Apr 27, 2026
e3e81b5
Revert KNOWNBUG markers: all 4 regression/cpp tests pass
tautschnig Apr 27, 2026
cbecbaa
Remove unsafe resolve_scope cache, fix variable template partial spec
tautschnig Apr 27, 2026
b5975fe
Fix 6 GCC 16 test failures: vtable lookup, empty type, test flags
tautschnig Apr 28, 2026
f706d9e
Fix CI: remove unused include, guard C++11 additions, GCC version guards
tautschnig Apr 28, 2026
1c3dc46
Fix CI: respect explicit C++ standard, guard C++11 additions
tautschnig Apr 28, 2026
7c39240
Fix CI: ARM sort guard, libcxx20 tag, clang-format
tautschnig Apr 28, 2026
a7ff2c7
Tag gcc16 tests as gcc-only (they use GCC 16 preprocessed .ii files)
tautschnig Apr 28, 2026
03d36e4
Fix __and_/__or_ with 3+ args, fixing C++20 swap resolution
tautschnig Apr 28, 2026
5a3f1f8
Fix union_tag crash in function call argument processing
tautschnig Apr 28, 2026
b5bbc83
Remove linkage spec error suppression, fix tag-name lookup
tautschnig Apr 28, 2026
3824ac8
Apply clang-format
tautschnig Apr 28, 2026
70dda93
Add per-test memory limit via CBMC_TEST_MEMLIMIT
tautschnig Apr 28, 2026
4a5fdf2
Fix macOS failures, restore error count in linkage spec
tautschnig Apr 28, 2026
35ac933
Promote Address_of_Method1 and Vector1 from KNOWNBUG to CORE
tautschnig Apr 28, 2026
eebca7a
Fix VS and macOS CI: revert STL1/STL2, expand MSVC artifacts
tautschnig Apr 28, 2026
661dc0d
Handle enum-as-struct-tag in follow_tag and expr2cpp
tautschnig Apr 28, 2026
f409ced
Fix filesystem crash: skip nil array sizes, handle nil this_expr
tautschnig Apr 29, 2026
d9e97e2
Fix iostream extern, stl1 crash, filesystem array: 20/22 MSVC headers…
tautschnig Apr 29, 2026
bd40c23
Promote STL1 and STL2 from KNOWNBUG to CORE
tautschnig Apr 29, 2026
894e427
Expand MSVC artifacts for all 23 failing tests, promote STL1/STL2
tautschnig Apr 29, 2026
7b3950b
Fix 7 MSVC CI failures: increase memlimit, fix test patterns
tautschnig Apr 29, 2026
a7d0619
Add type info to binary relation validate error message
tautschnig Apr 29, 2026
1a83c59
Handle Clang _Nonnull/_Nullable in C++ mode, add validate diagnostics
tautschnig Apr 29, 2026
e0abb8e
Fix equality type mismatch crash, handle _Nonnull in C++
tautschnig Apr 29, 2026
ff1f1ef
Elaborate class template after id_map scope entry in resolver
tautschnig Apr 29, 2026
dcd3c26
Skip re-typechecking resolved struct_tag types in template args
tautschnig Apr 29, 2026
bd88c52
Enable destructibility intrinsics in all C++ modes, add MSVC builtins
tautschnig Apr 29, 2026
3cb45a1
Skip re-elaboration of non-empty template class instances
tautschnig Apr 29, 2026
6370182
Remove empty-type args from template_args after pack substitution
tautschnig Apr 30, 2026
ce382d3
Skip re-elaboration of fully-elaborated template instances, guard loo…
tautschnig Apr 30, 2026
9f8ae61
Enable destructibility intrinsics in all C++ modes, add MSVC builtins
tautschnig Apr 30, 2026
7dc8bf9
Add constexpr function evaluator for non-type template arguments
tautschnig Apr 30, 2026
731a811
Expand pack parameters in base class template arguments
tautschnig Apr 30, 2026
45ce1dd
Evaluate constexpr function calls in variable template values
tautschnig Apr 30, 2026
6ce0426
Prefer resolved return types over auto in overload disambiguation
tautschnig Apr 30, 2026
b8bcd95
Handle reference parameters in constexpr evaluator
tautschnig Apr 30, 2026
d72c91d
Remove trailing empty_typet args from template arguments
tautschnig Apr 30, 2026
46c6a0b
Fix empty pack expansion and cache constexpr variable template values
tautschnig Apr 30, 2026
ec3efe9
Keep resolved return type when redeclared with unresolved auto
tautschnig Apr 30, 2026
3102326
Fix auto return type redeclaration and if-constexpr error handling
tautschnig Apr 30, 2026
d5b8604
Replace null_message_handler with error count save/restore in SFINAE
tautschnig Apr 30, 2026
931caa3
Handle return statement in expression context
tautschnig Apr 30, 2026
90a5f1b
Handle constexpr reference returns and template alias SFINAE
tautschnig Apr 30, 2026
c4bfc94
Don't defer method bodies for template class instances
tautschnig May 1, 2026
4b8dd97
Fix constexpr evaluation of reference parameters and method body defe…
tautschnig May 1, 2026
4ed0de9
Fix auto/decltype return type check for function redeclaration
tautschnig May 1, 2026
d25e5cd
Make scope-not-found a silent SFINAE failure
tautschnig May 1, 2026
e3bd307
SFINAE improvements: scope-not-found, partial spec null_handler
tautschnig May 1, 2026
41c279e
Suppress eager elaboration during partial specialization matching
tautschnig May 1, 2026
9215fd1
Re-check symbol completeness before instantiation
tautschnig May 2, 2026
9521046
Catch member template failures during class body processing
tautschnig May 3, 2026
f9c2eda
Skip static_assert(false) in template bodies
tautschnig May 3, 2026
21b97fa
Treat non-class template alias as SFINAE failure
tautschnig May 3, 2026
2d8da98
Preserve class type when template args present and no fargs
tautschnig May 4, 2026
13359a4
Catch member function template type-checking failures
tautschnig May 4, 2026
bb34c42
Catch initializer_list constructor failure and fall back to unpacking
tautschnig May 4, 2026
a47e592
Catch type conversion failure in function template declaration
tautschnig May 4, 2026
41127b1
Silent throw for qualified lookup failure (SFINAE)
tautschnig May 4, 2026
be15344
Resolve cpp_name types and catch instantiation failures in GFTA
tautschnig May 4, 2026
6f582bf
Resolve cpp_names, add template constructors, fix variadic pack expan…
tautschnig May 4, 2026
7c68e97
Merge remote-tracking branch 'origin/develop' into cpp11-parser-rewor…
tautschnig May 8, 2026
ab8d021
Include cv-qualifiers in template_suffix for struct/union_tag args
tautschnig May 8, 2026
f165c56
Preserve cv-qualifier attributes from merged_type subtypes
tautschnig May 8, 2026
ec31d36
Deduce T as lvalue-ref-to-A for forwarding reference + lvalue arg
tautschnig May 8, 2026
65c09e0
Remove duplicate include in cpp_typecheck_template.cpp
tautschnig May 9, 2026
fcd7552
Declare __builtin_operator_new/delete Clang intrinsics
tautschnig May 9, 2026
730a510
Fix cpplint and clang-format CI failures
tautschnig May 9, 2026
be467fb
symex: preserve to_member on address_of through address_arithmetic
tautschnig May 9, 2026
4c835a3
Add -std=c++11 flag to is_assignable_builtin test
tautschnig May 9, 2026
f22da60
cbmc: defer version banner until after --preprocess short-circuit
tautschnig May 9, 2026
9ab9588
Drop gcc-only from cpp11_vector_size: passes on macOS libc++ now
tautschnig May 9, 2026
3667221
Add C++ standard conformance tests, update STANDARD_COVERAGE
tautschnig May 9, 2026
b097af3
library_check: exclude tests.log from regression/cbmc-library scan
tautschnig May 9, 2026
0dce01a
More C++ standard conformance tests + document KNOWNBUGs
tautschnig May 9, 2026
ac830e7
More conformance tests; document array-new KNOWNBUG
tautschnig May 9, 2026
bd209b4
c_typecheck_initializer: handle empty brace-init of scalar type
tautschnig May 10, 2026
df336f3
goto-conversion: expand array new/delete constructor+destructor loops
tautschnig May 10, 2026
b12307a
Re-tag cpp11_vector_size as gcc-only: my previous verification was wrong
tautschnig May 10, 2026
0d88575
STANDARD_COVERAGE: reflect fixes to scalar T{} and array new/delete
tautschnig May 10, 2026
71852e3
Add CI_KNOWN_FAILURES.md: track pre-existing CI failures on this branch
tautschnig May 10, 2026
b10e77f
cpp_typecheck: value-init of array member via T() emits per-element
tautschnig May 10, 2026
c5765cb
CI_KNOWN_FAILURES: drop include-what-you-use section
tautschnig May 10, 2026
311dd6e
cpp_typecheck: reinterpret_cast<T&>(x) + &reference both work
tautschnig May 10, 2026
e255c90
ansi-c: declare Clang __c11_atomic_* intrinsics
tautschnig May 10, 2026
f4272bc
CI_KNOWN_FAILURES: document resolved items and refined next-steps
tautschnig May 10, 2026
56c3e2d
Add regression test for Clang __c11_atomic_* intrinsic declarations
tautschnig May 10, 2026
b4f40b5
cpp_scope: remove suppress_cache_invalidation — fixes stale-lookup bug
tautschnig May 10, 2026
e750320
CI_KNOWN_FAILURES: document suppress_cache_invalidation fix
tautschnig May 10, 2026
368b07d
cpp_instantiate_template: treat unassigned template args as silent SF…
tautschnig May 10, 2026
aadaa90
clang-format: reflow arguments per clang-format-15
tautschnig May 10, 2026
97f5d81
cpp_typecheck_compound_body: per-member catch during template instant…
tautschnig May 10, 2026
cb21213
CI_KNOWN_FAILURES: update with recent fixes and narrowed remaining work
tautschnig May 10, 2026
4571433
Regression: isolated reproducers for MSVC/macOS template instantiatio…
tautschnig May 11, 2026
1b8f202
CI_KNOWN_FAILURES: add Phase 1 diagnosis for MSVC atomic_flag::_Storage
tautschnig May 11, 2026
f388585
cpp_typecheck_compound_body: keep unresolved class-template cpp_name …
tautschnig May 11, 2026
d3414d7
CI_KNOWN_FAILURES: note that f3885853bb lands fix for MSVC atomic_fla…
tautschnig May 11, 2026
f06caf2
CI_KNOWN_FAILURES: Phase 2 diagnosis for macOS basic_string + MSVC _R…
tautschnig May 11, 2026
3f1d94d
cpp_instantiate_template: restrict empty-pack short-name removal to l…
tautschnig May 11, 2026
92bda8d
CI_KNOWN_FAILURES: record fix for MSVC _Construct_in_place pack short…
tautschnig May 11, 2026
f070895
cpp_typecheck_return: handle multi-element braced return to non-POD c…
tautschnig May 11, 2026
a6bfbcc
CI_KNOWN_FAILURES: record MSVC _Construct_in_place and _Try_emplace f…
tautschnig May 11, 2026
491b2d5
cpp_typecheck_resolve: derived-to-base template argument deduction pe…
tautschnig May 11, 2026
f86f7d6
CI_KNOWN_FAILURES: record derived-to-base deduction fix
tautschnig May 11, 2026
8ff1dfd
Add KNOWNBUG regression tests for libstdc++ SFINAE error leak
tautschnig May 11, 2026
ddaa06d
CI_KNOWN_FAILURES: record SFINAE-leak KNOWNBUG tests
tautschnig May 11, 2026
e7080a0
cpp_typecheck: absorb SFINAE substitution failures silently per [temp…
tautschnig May 11, 2026
60ed2a8
CI_KNOWN_FAILURES: record SFINAE-leak fix and updated preprocessed-he…
tautschnig May 11, 2026
09c06ba
Add DOGFOODING.md tracking goto-cc on CBMC's own source tree
tautschnig May 11, 2026
424da3c
alignment: add cycle guard to prevent stack overflow on cyclic type g…
tautschnig May 11, 2026
87d4097
disambiguate_template_classes: apply class-inheritance dominance rule
tautschnig May 11, 2026
bb36504
Dog-food: harden invariants and add goto-cc dog-food harness
tautschnig May 11, 2026
4648a54
Add check-dogfood-goto-cc CI job and update DOGFOODING.md
tautschnig May 11, 2026
6b09016
Dog-food: more robustness + cleaner error messages
tautschnig May 11, 2026
6bf9385
DOGFOODING.md: record expanded-sample stats (0 crashes across all 117…
tautschnig May 11, 2026
9cbd9da
implicit_typecast: char[N] -> basic_string fallback
tautschnig May 12, 2026
9537b6b
cpp_typecheck_using: base-class walk + pragmatic skip for class-membe…
tautschnig May 12, 2026
a760f05
Silence diagnostics leaking from system-header function bodies / defa…
tautschnig May 12, 2026
fd309f5
DOGFOODING.md: record char[N]->string, using-decl, and __stoa-leak fixes
tautschnig May 12, 2026
5e7efee
Destructor-synthesis: fall back to components list + skip cv-qualifie…
tautschnig May 12, 2026
7a9154a
Silent fallbacks for uninitialised constexpr symbols and nil template…
tautschnig May 12, 2026
56c27ea
cpp_typecheck_enum_type: accept bare `enum class X;` forward declaration
tautschnig May 12, 2026
c8f322f
clang-format: whitespace alignment in enum forward-decl branch
tautschnig May 12, 2026
01507a3
resolve: silently discard template-only no-match per [temp.deduct]/8
tautschnig May 12, 2026
cf8be98
cpp11_deduct_funcaddr: update KNOWNBUG after P1-tail silent-throw
tautschnig May 12, 2026
b37b68b
cpp17 apply/tuple libcxx KNOWNBUGs: tighten expected-when-fixed regex
tautschnig May 12, 2026
e88ca8a
DOGFOODING.md: record template-only no-match fix progress
tautschnig May 12, 2026
d612fe6
typecheck_side_effect_function_call: implement [temp.deduct.funcaddr]
tautschnig May 12, 2026
df5f5d9
cpp_typecheck_declaration: guard empty declarator-name sub on trailin…
tautschnig May 12, 2026
3b79553
clang-format touchups on P2 and P3b fixes
tautschnig May 12, 2026
102d67b
DOGFOODING.md: record P2 (funcaddr) + P3b (SIGSEGV) fixes
tautschnig May 12, 2026
fc2a2c6
CI_KNOWN_FAILURES.md: mark cpp11_future_header SIGSEGV as fixed
tautschnig May 12, 2026
2e8e74f
typecheck_compound_body: skip self-referential common_type_t<duration…
tautschnig May 13, 2026
702df7c
clang-format touchup on P3a fix
tautschnig May 13, 2026
16218c0
Docs: record P3a (cpp14_chrono_basic) fix
tautschnig May 13, 2026
09e5625
resolve_template_alias: break mutual-recursion cycles via active-set …
tautschnig May 13, 2026
103a1a5
Docs: record filesystem stack-overflow fix (09e5625681)
tautschnig May 13, 2026
18e1334
doc: architectural review of the C++ front end
tautschnig May 13, 2026
7160102
cpp: introduce sfinae_contextt RAII guard per [temp.deduct]/8
tautschnig May 13, 2026
2d0e466
resolve_template_alias: document why cycle-break stays minimal
tautschnig May 13, 2026
9202e11
doc: update C++ front-end review with short-term outcomes
tautschnig May 13, 2026
f38f2b6
cpp: convert three more errors_before save/restore sites to sfinae_co…
tautschnig May 13, 2026
a437aac
cpp_typecheck_compound_body: generalize self-ref guard beyond duration
tautschnig May 13, 2026
a5a4b9f
cpp_typecheck: extract deduce_function_address_args_from_target helper
tautschnig May 13, 2026
355de51
doc: record lazy-elaboration learning from 2026-05-13 attempt
tautschnig May 13, 2026
bf79ab8
clang-format touchup on deduce_function_address_args_from_target
tautschnig May 13, 2026
f4cbae8
doc: three detailed architectural plans (lazy elab, target-type, PR d…
tautschnig May 13, 2026
be480e9
c_typecheck_initializer: gate empty-brace value-init on language
tautschnig May 14, 2026
5c741ea
cpp_typecheck: address two cpplint findings flagged on PR push
tautschnig May 14, 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
  •  
  •  
  •  
150 changes: 136 additions & 14 deletions .github/workflows/pull-request-checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ env:
cvc5-version: "1.2.1"
linux-vcpus: 4
windows-vcpus: 4
# Per-test virtual memory limit (KB) for test.pl.
# CI runners have ~10 GB RAM; with 4 parallel jobs, each test
# gets ~2.5 GB. This prevents OOM kills from masking real failures.
CBMC_TEST_MEMLIMIT: 2500000

jobs:
# This job takes approximately 15 to 40 minutes
Expand All @@ -24,7 +28,7 @@ jobs:
DEBIAN_FRONTEND: noninteractive
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -yq gcc gdb g++ maven jq flex bison libxml2-utils ccache cmake z3
sudo apt-get install --no-install-recommends -yq gcc gdb g++ maven jq flex bison libxml2-utils ccache cmake z3 clang libc++-dev libc++abi-dev
- name: Confirm z3 solver is available and log the version installed
run: z3 --version
- name: Download cvc-5 from the releases page and make sure it can be deployed
Expand Down Expand Up @@ -109,7 +113,7 @@ jobs:
DEBIAN_FRONTEND: noninteractive
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -yq clang-19 clang++-19 gdb maven jq flex bison libxml2-utils cpanminus ccache z3
sudo apt-get install --no-install-recommends -yq clang-19 clang++-19 gdb maven jq flex bison libxml2-utils cpanminus ccache z3 libc++-dev libc++abi-dev
make -C src minisat2-download cadical-download
cpanm Thread::Pool::Simple
- name: Confirm z3 solver is available and log the version installed
Expand Down Expand Up @@ -181,7 +185,7 @@ jobs:
DEBIAN_FRONTEND: noninteractive
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -yq clang-19 clang++-19 gdb maven jq flex bison libxml2-utils cpanminus ccache z3
sudo apt-get install --no-install-recommends -yq clang-19 clang++-19 gdb maven jq flex bison libxml2-utils cpanminus ccache z3 libc++-dev libc++abi-dev
make -C src minisat2-download
cpanm Thread::Pool::Simple
- name: Confirm z3 solver is available and log the version installed
Expand Down Expand Up @@ -222,7 +226,7 @@ jobs:
DEBIAN_FRONTEND: noninteractive
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc gdb g++ maven flex bison libxml2-utils dpkg-dev ccache doxygen graphviz z3
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc gdb g++ maven flex bison libxml2-utils dpkg-dev ccache doxygen graphviz z3 clang libc++-dev libc++abi-dev
- name: Confirm z3 solver is available and log the version installed
run: z3 --version
- name: Download cvc-5 from the releases page and make sure it can be deployed
Expand Down Expand Up @@ -299,7 +303,7 @@ jobs:
DEBIAN_FRONTEND: noninteractive
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -yq clang clang-14 gdb maven jq flex bison libxml2-utils cpanminus ccache z3
sudo apt-get install --no-install-recommends -yq clang clang-14 gdb maven jq flex bison libxml2-utils cpanminus ccache z3 libc++-dev libc++abi-dev
make -C src minisat2-download cadical-download
cpanm Thread::Pool::Simple
- name: Confirm z3 solver is available and log the version installed
Expand Down Expand Up @@ -368,7 +372,7 @@ jobs:
DEBIAN_FRONTEND: noninteractive
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc gdb g++ maven flex bison libxml2-utils dpkg-dev ccache doxygen graphviz z3
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc gdb g++ maven flex bison libxml2-utils dpkg-dev ccache doxygen graphviz z3 clang libc++-dev libc++abi-dev
- name: Confirm z3 solver is available and log the version installed
run: z3 --version
- name: Download cvc-5 from the releases page and make sure it can be deployed
Expand Down Expand Up @@ -422,7 +426,7 @@ jobs:
DEBIAN_FRONTEND: noninteractive
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc-14 gdb g++-14 maven flex bison libxml2-utils dpkg-dev ccache doxygen z3
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc-14 gdb g++-14 maven flex bison libxml2-utils dpkg-dev ccache doxygen z3 clang libc++-dev libc++abi-dev
# Update symlinks so that any use of gcc (including our regression
# tests) will use GCC 14.
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 110 \
Expand Down Expand Up @@ -475,7 +479,7 @@ jobs:
DEBIAN_FRONTEND: noninteractive
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc gdb g++ maven flex bison libxml2-utils dpkg-dev ccache doxygen graphviz z3
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc gdb g++ maven flex bison libxml2-utils dpkg-dev ccache doxygen graphviz z3 clang libc++-dev libc++abi-dev
- name: Confirm z3 solver is available and log the version installed
run: z3 --version
- name: Download cvc-5 from the releases page and make sure it can be deployed
Expand Down Expand Up @@ -529,7 +533,7 @@ jobs:
DEBIAN_FRONTEND: noninteractive
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc gdb g++ maven flex bison libxml2-utils ccache doxygen z3 g++-multilib
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc gdb g++ maven flex bison libxml2-utils ccache doxygen z3 g++-multilib clang libc++-dev libc++abi-dev
- name: Confirm z3 solver is available and log the version installed
run: z3 --version
- name: Download cvc-5 from the releases page and make sure it can be deployed
Expand Down Expand Up @@ -576,7 +580,7 @@ jobs:
DEBIAN_FRONTEND: noninteractive
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc g++ maven flex bison libxml2-utils ccache z3
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc g++ maven flex bison libxml2-utils ccache z3 clang libc++-dev libc++abi-dev
- name: Prepare ccache
uses: actions/cache@v5
with:
Expand Down Expand Up @@ -623,7 +627,7 @@ jobs:
DEBIAN_FRONTEND: noninteractive
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc g++ maven flex bison libxml2-utils ccache z3
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc g++ maven flex bison libxml2-utils ccache z3 clang libc++-dev libc++abi-dev
- name: Prepare ccache
uses: actions/cache@v5
with:
Expand Down Expand Up @@ -698,6 +702,31 @@ jobs:
./unit_tests "[z3]"
- name: Run JBMC unit tests
run: cd jbmc/unit; ./unit_tests
- name: Preprocess libc++ headers for debugging
if: always()
run: |
mkdir -p macos-preprocessed
cbmc=src/cbmc/cbmc
for hdr in vector iterator; do
echo "#include <$hdr>" > pp_$hdr.cpp
echo "int main() {}" >> pp_$hdr.cpp
$cbmc --cpp11 --preprocess pp_$hdr.cpp > macos-preprocessed/$hdr.ii 2>/dev/null || true
done
# Preprocess failing test programs
for t in Address_of_Method1 Vector1 STL1 STL2 cpp11_vector_size cpp17_any_basic cpp20_coroutine_types; do
src="regression/cbmc-cpp/$t/main.cpp"
if [ -f "$src" ]; then
flags=$(sed -n '3p' "regression/cbmc-cpp/$t/test.desc")
$cbmc $flags --preprocess "$src" > "macos-preprocessed/test_$t.ii" 2>/dev/null || true
fi
done
- name: Upload preprocessed headers
if: always()
uses: actions/upload-artifact@v4
with:
name: macos-preprocessed-headers
path: macos-preprocessed/
retention-days: 7
- name: Run regression tests
run: |
export PATH=$PATH:`pwd`/src/solvers
Expand Down Expand Up @@ -826,10 +855,55 @@ jobs:
- name: Print ccache stats
run: clcache -s
- uses: ilammy/msvc-dev-cmd@v1
- name: Test cbmc
- name: Preprocess MSVC headers for debugging
if: always()
run: |
New-Item -ItemType Directory -Force -Path msvc-preprocessed
$cbmc = "build\bin\Release\cbmc.exe"
foreach ($hdr in @("tuple", "string_view", "variant", "any", "string", "map", "optional", "vector", "list", "set", "thread", "mutex", "filesystem", "chrono", "valarray", "iostream", "memory", "functional")) {
$src = "#include <$hdr>`nint main() {}"
$src | Set-Content "pp_$hdr.cpp"
& $cbmc --cpp17 --preprocess "pp_$hdr.cpp" 2>$null | Set-Content "msvc-preprocessed\$hdr.ii"
}
foreach ($hdr in @("array", "numeric")) {
$src = "#include <$hdr>`nint main() {}"
$src | Set-Content "pp_${hdr}_20.cpp"
& $cbmc --cpp20 --preprocess "pp_${hdr}_20.cpp" 2>$null | Set-Content "msvc-preprocessed\${hdr}_cpp20.ii"
}
# Preprocess all cbmc-cpp test programs that fail on MSVC
$tests = @(
"STL1", "STL2", "Vector1",
"cpp11_condition_variable_header", "cpp11_future_header",
"cpp11_map_insert", "cpp11_map_verify", "cpp11_set_insert",
"cpp11_shared_ptr", "cpp11_vector_front_body",
"cpp11_vector_probe", "cpp11_vector_push_back",
"cpp11_vector_pushback", "cpp11_vector_verify",
"cpp14_chrono_basic", "cpp17_filesystem_basic",
"cpp17_filesystem_path_ops", "cpp17_mutex_basic",
"cpp17_numeric_basic", "cpp17_shared_ptr",
"cpp17_string_view", "cpp17_string_view_basic",
"cpp17_thread_basic", "cpp17_valarray_basic",
"cpp17_vector_basic", "cpp20_iostream_basic"
)
foreach ($t in $tests) {
$src = "regression\cbmc-cpp\$t\main.cpp"
if (Test-Path $src) {
$flags = (Get-Content "regression\cbmc-cpp\$t\test.desc" | Select-Object -Index 2).Trim()
& $cbmc $flags.Split(" ") --preprocess $src 2>$null | Set-Content "msvc-preprocessed\test_$t.ii"
}
}
- name: Upload preprocessed headers
if: always()
uses: actions/upload-artifact@v4
with:
name: msvc-preprocessed-headers
path: msvc-preprocessed/
retention-days: 7
- name: Run tests
run: |
Set-Location build
ctest -V -L CORE -C Release . -j${{env.windows-vcpus}}
$env:CBMC_TEST_MEMLIMIT = "3000000"
ctest -V -L CORE -C Release . -j${{env.windows-vcpus}} --timeout 600

# This job takes approximately 65 to 84 minutes
check-vs-2022-make-build-and-test:
Expand Down Expand Up @@ -928,7 +1002,9 @@ jobs:
make CXX=clcache BUILD_ENV=MSVC -C unit test TAGS="[z3]"
make CXX=clcache BUILD_ENV=MSVC -C jbmc/unit test
- name: Run CBMC regression tests
run: make CXX=clcache BUILD_ENV=MSVC -j${{env.windows-vcpus}} -C regression test-parallel-jobs
run: |
$env:CBMC_TEST_MEMLIMIT = "3000000"
make CXX=clcache BUILD_ENV=MSVC -j${{env.windows-vcpus}} -C regression test-parallel-jobs

# This job takes approximately 7 to 32 minutes
windows-msi-package:
Expand Down Expand Up @@ -1002,6 +1078,52 @@ jobs:
echo "msi_installer=build/$msi_name" >> $env:GITHUB_OUTPUT
echo "msi_name=$msi_name" >> $env:GITHUB_OUTPUT

# This job takes approximately 10 to 15 minutes
check-dogfood-goto-cc:
# Compile a curated sample of CBMC's own .cpp files with
# goto-cc itself ("dog-fooding"): the baseline is expected to
# produce clean goto binaries. New entries are added to the
# baseline as the underlying front-end bugs are fixed. The
# expanded sample is reported for visibility but does not
# fail the job.
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- name: Fetch dependencies
env:
DEBIAN_FRONTEND: noninteractive
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc g++ flex bison libxml2-utils ccache python3
- name: Prepare ccache
uses: actions/cache@v5
with:
save-always: true
path: .ccache
key: ${{ runner.os }}-24.04-dogfood-${{ github.ref }}-${{ github.sha }}-PR
restore-keys: |
${{ runner.os }}-24.04-dogfood-${{ github.ref }}
${{ runner.os }}-24.04-dogfood
- name: ccache environment
run: |
echo "CCACHE_BASEDIR=$PWD" >> $GITHUB_ENV
echo "CCACHE_DIR=$PWD/.ccache" >> $GITHUB_ENV
- name: Configure using CMake
run: cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_EXPORT_COMPILE_COMMANDS=1
- name: Zero ccache stats and limit in size
run: ccache -z --max-size=500M
- name: Build goto-cc
run: ninja -C build -j${{env.linux-vcpus}} goto-cc
- name: Print ccache stats
run: ccache -s
- name: Run dog-food harness on baseline (gate)
run: ./scripts/dogfood_goto_cc.sh --baseline
- name: Run dog-food harness on extended sample (report only)
continue-on-error: true
run: ./scripts/dogfood_goto_cc.sh

# This job takes approximately 2 to 3 minutes
check-string-table:
runs-on: ubuntu-latest
Expand Down
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ formal verification of C and C++ programs.
### What CBMC Does
- Bounded model checking for C/C++ programs
- Supports C89, C99, most of C11, C17, C23
- Supports C++98, C++03, C++11, C++14, and C++17
- Supports most compiler extensions from gcc and Visual Studio
- Verifies array bounds, pointer safety, exceptions, and user-specified
assertions
Expand Down
Loading
Loading