Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3531 commits
Select commit Hold shift + click to select a range
0f07c02
C++: cite [class.access.general]/6 where access is judged at the name
tautschnig Oct 27, 2026
7bfec24
C++: a call converted on demand gets the callee's deduced return type
tautschnig Oct 27, 2026
1abcedd
C++: library specializations without a definition use the primary tem…
tautschnig Oct 27, 2026
bce4094
C++: constant evaluation of a call statement whose value is discarded
tautschnig Oct 27, 2026
a500ce2
C++: a hidden friend template's declared types see the class's parame…
tautschnig Oct 27, 2026
ce9ab73
cpp20_range_adaptor_closure_invoked_through_invoke_impl: what is know…
tautschnig Oct 27, 2026
5171f21
Notes for round 202
tautschnig Oct 27, 2026
0e1007b
C++: class template argument deduction for alias templates
tautschnig Oct 27, 2026
eaaea15
goto-conversion: destroy an initializer_list variable's backing array
tautschnig Oct 27, 2026
044fbe0
cpp20_range_adaptor_closure_invoked_through_invoke_impl: a faithful r…
tautschnig Oct 27, 2026
9bcdd85
C++: libstdc++'s std::_Destroy keeps its header body
tautschnig Oct 28, 2026
cee87a2
goto-conversion: an initializer_list backing array is a temporary
tautschnig Oct 28, 2026
fb3c2d9
C++: model std::uncaught_exception and std::uncaught_exceptions
tautschnig Oct 28, 2026
a2a1778
C++: define and construct the standard stream objects
tautschnig Oct 28, 2026
d7b4ba0
goto-conversion: copy a throw's operand before stack unwinding
tautschnig Oct 28, 2026
b40fbf9
KNOWNBUG: a manipulator template inserted into two stream specializat…
tautschnig Oct 28, 2026
e07faa2
remove_cpp_exceptions: a destructor run by stack unwinding runs fully
tautschnig Oct 28, 2026
3dc5942
Notes for round 203
tautschnig Oct 28, 2026
27479ca
KNOWNBUG: the exception object is not copy-constructed
tautschnig Oct 28, 2026
ba9f2a4
KNOWNBUG: integer extraction from std::cin
tautschnig Oct 28, 2026
eaccb12
KNOWNBUG: a destructor exiting via an exception during unwinding
tautschnig Oct 28, 2026
0c3e184
KNOWNBUG: a write to std::cout cannot fail
tautschnig Oct 28, 2026
bd1caf4
KNOWNBUG: standard stream objects with the MSVC STL
tautschnig Oct 28, 2026
4d092f6
C++: call std::terminate when exception handling is abandoned
tautschnig Oct 28, 2026
4351189
KNOWNBUG: implicit and computed exception specifications
tautschnig Oct 28, 2026
4f8afa4
C++: a write to a standard stream may fail
tautschnig Oct 28, 2026
0926da8
C++: initialize the exception object through its constructor
tautschnig Oct 28, 2026
b60ccc8
KNOWNBUG: the exception object is never destroyed
tautschnig Oct 28, 2026
abadd51
Notes for round 204
tautschnig Oct 28, 2026
d18e2be
remove_cpp_exceptions: clear the exception before a catch(...) body
tautschnig Oct 28, 2026
8456367
C++: implicit exception specifications of destructors and deallocation
tautschnig Oct 28, 2026
3f3e518
C++: partial ordering of function templates with parameter packs
tautschnig Oct 28, 2026
97245c0
C++: a variable template specialization is an lvalue
tautschnig Oct 28, 2026
98c2c61
C++: the address of a constexpr variable
tautschnig Oct 28, 2026
cacec69
KNOWNBUG: auto variable template with a parenthesized initializer
tautschnig Oct 28, 2026
ce92de9
C++: evaluate noexcept(expression)
tautschnig Oct 28, 2026
388525f
KNOWNBUG: is_nothrow_constructible with constructor arguments
tautschnig Oct 28, 2026
2d3b42b
KNOWNBUG: implicit constructors' exception specification
tautschnig Oct 28, 2026
1b142b4
C++: a member's noexcept-specifier is a complete-class context
tautschnig Oct 28, 2026
6848d06
Notes for round 205
tautschnig Oct 28, 2026
bc7b686
KNOWNBUG: prvalue aggregate with a base class
tautschnig Oct 29, 2026
9d6f07c
C++: the lifetime of the exception object
tautschnig Oct 29, 2026
913844c
KNOWNBUG: call result through a pack in a static member template
tautschnig Oct 29, 2026
60ddb33
Notes for round 206
tautschnig Oct 29, 2026
fe3ff67
C++: a function template name as an operand of an overloaded operator
tautschnig Oct 29, 2026
afdaeb7
C++: a braced prvalue of an aggregate with a base with data members
tautschnig Oct 29, 2026
8e21259
C++: the "C" locale's num_get facet (libstdc++)
tautschnig Oct 29, 2026
ec66793
cpp20_call_result_through_pack_in_static_member_template: narrowed di…
tautschnig Oct 29, 2026
c596601
Notes for round 207
tautschnig Oct 29, 2026
aa334cf
C++ front-end: keep pack expansions of other packs in a template body
tautschnig Oct 29, 2026
61a7128
C++ front-end: exception specifications of implicit constructors
tautschnig Oct 29, 2026
da47c28
KNOWNBUG: implicit move constructor declared only for move-only members
tautschnig Oct 29, 2026
99f140a
C++ front-end: construction vtables for nested base subobjects
tautschnig Oct 29, 2026
395c9ce
KNOWNBUGs: classes with a repeated polymorphic base
tautschnig Oct 29, 2026
906d823
C++ front-end: a variable template specialization instantiated again
tautschnig Oct 29, 2026
7a1acd1
C++ front-end: dynamic initialization of instantiated variables
tautschnig Oct 29, 2026
af53a4a
C++ front-end: member noexcept-specifiers that name later members
tautschnig Oct 29, 2026
08f679b
KNOWNBUG: member noexcept-specifier naming a later member, class temp…
tautschnig Oct 29, 2026
f1e8e9e
Notes for round 208
tautschnig Oct 29, 2026
aaec495
C++ front-end: thunks are not overload candidates
tautschnig Oct 30, 2026
d2f81b4
C++ front-end: the table of a repeated base subobject
tautschnig Oct 30, 2026
a344d25
C++ front-end: noexcept-specifiers of class template members when needed
tautschnig Oct 30, 2026
2d60338
C++ front-end: implicit move constructors for classes with movable me…
tautschnig Oct 30, 2026
cc1f3ca
C++ front-end: dynamic_cast to a pointer to void
tautschnig Oct 30, 2026
49850b9
C++: delete through a pointer to a polymorphic base deallocates the o…
tautschnig Oct 30, 2026
cbc5602
KNOWNBUG: overrider reached through a virtual base's table in a deriv…
tautschnig Oct 30, 2026
8424920
Notes for round 209
tautschnig Oct 30, 2026
3618005
C++ front-end: no implicit move constructor for a deleted member move
tautschnig Oct 30, 2026
18c316c
KNOWNBUGs: gaps found auditing the known limitations
tautschnig Oct 30, 2026
4c081e6
KNOWNBUGs: <chrono> and <format> body drops with libstdc++ 16.2.0
tautschnig Oct 30, 2026
f5bba99
KNOWNBUG: integer insertion into a stream with the MSVC STL
tautschnig Oct 30, 2026
079ecca
Notes for round 209: audit of known gaps
tautschnig Oct 30, 2026
e6e39a2
C++: delete with an operand with side effects deallocates the object
tautschnig Oct 30, 2026
38ccb88
C++ front-end: is_nothrow_constructible of a reference binding
tautschnig Oct 30, 2026
983b08a
C++ front-end: function pointer conversions and noexcept
tautschnig Oct 30, 2026
5980a89
C library: keep the contracts library under the string literal limit
tautschnig Oct 30, 2026
5e46060
C++ front-end: vcall offsets for thunks entered through a virtual base
tautschnig Oct 30, 2026
c462bc1
C++ front-end: constant evaluation of calls on local objects
tautschnig Oct 30, 2026
193fa7e
C++ front-end: designated initializers for members of class type
tautschnig Oct 30, 2026
7568c87
C++: terminate and set_terminate of the MSVC runtime
tautschnig Oct 30, 2026
6022401
cbmc-cpp: tags for the tests that fail with the MSVC STL
tautschnig Oct 30, 2026
213859c
KNOWNBUG: istringstream from a string and an allocator with the MSVC STL
tautschnig Oct 30, 2026
0ad2b61
C++ front-end: constant evaluation of __builtin_memcmp
tautschnig Oct 30, 2026
0299273
Notes for round 210: CI of d5afeb79ad and round 209's KNOWNBUGs
tautschnig Oct 30, 2026
ccbf9fe
C++ front end: correct N5008 citations in comments
tautschnig Nov 1, 2026
f4c64b1
Regression tests: correct N5008 citations
tautschnig Nov 1, 2026
e3cc6e7
Documentation: correct N5008 citations and section numbers
tautschnig Nov 1, 2026
54bebc6
Notes: correct N5008 citations
tautschnig Nov 1, 2026
a2f9c55
Notes for round 211: audit of the N5008 citations
tautschnig Nov 1, 2026
7c1ed80
C++ front end: drop two includes that include-what-you-use flags
tautschnig Nov 2, 2026
768bcdf
C library: record why malloc sets __CPROVER_new_object, and its cost
tautschnig Nov 2, 2026
ec9190a
C++ front end: default arguments of a base constructor before the flag
tautschnig Nov 2, 2026
e1b750f
C++ front end: dynamic_cast of an operand with side effects
tautschnig Nov 2, 2026
822e898
C++: models of std::exception_ptr
tautschnig Nov 2, 2026
55b1482
Notes for round 212: CI jobs, the MSVC istringstream, exception_ptr
tautschnig Nov 2, 2026
64b01ba
C++ front end: fold expressions in alias templates
tautschnig Nov 2, 2026
f0d4f1a
C++ front end: a recursion that keeps an argument is not runaway
tautschnig Nov 2, 2026
9642a44
C++ front end: Clang's __builtin_invoke
tautschnig Nov 2, 2026
b9192d8
C++ front end: noexcept of a class template member not evaluated early
tautschnig Nov 2, 2026
d3c62bc
C++ front end: comma expressions and __builtin_strlen in constexpr calls
tautschnig Nov 3, 2026
1fa563f
C++ front end: constexpr objects whose initializers were converted
tautschnig Nov 3, 2026
d9c2b04
KNOWNBUG: string_view comparison in a constant expression with libc++
tautschnig Nov 3, 2026
47a9d3a
C++ front end: destructor names of classes with function type arguments
tautschnig Nov 3, 2026
0796c4a
Field sensitivity: read a union through its widest member at any offset
tautschnig Nov 3, 2026
e405d65
C++ front end: a one-class pack expanded in a member's function type
tautschnig Nov 3, 2026
ead80fa
C++ front end: parenthesized aggregate initialization of a union
tautschnig Nov 3, 2026
15cdfd4
C++ front end: assigning an empty class object stores nothing
tautschnig Nov 3, 2026
3ea228e
C++ front end: zero-sized empty [[no_unique_address]] members
tautschnig Nov 3, 2026
2145140
C++ front end: [[no_unique_address]] placement, destructors, FUTURE t…
tautschnig Nov 3, 2026
50b813c
Simplify relations of pointers to distinct objects to false
tautschnig Nov 3, 2026
71d47ac
C library: models of strtol_l, strtoul_l, strtoll_l and strtoull_l
tautschnig Nov 3, 2026
4f2f6d8
C++ front end: models of libc++'s integer extraction (num_get)
tautschnig Nov 3, 2026
d41746f
C library: exact integer conversions in the model of vsnprintf
tautschnig Nov 3, 2026
8db3d6b
C library: localeconv returns the "C" locale's values
tautschnig Nov 3, 2026
d8040a0
C library: model of uselocale
tautschnig Nov 3, 2026
6b98b10
C++ front end: models of libc++'s integer insertion (num_put)
tautschnig Nov 3, 2026
5cef985
C++ front end: models of the MSVC runtime's manipulators and locale info
tautschnig Nov 3, 2026
b744f52
Documentation: escape `#nua_type' in a doc comment
tautschnig Nov 3, 2026
62d46fc
Regression test: union_byte_array_holding_function_pointer is no-new-smt
tautschnig Nov 3, 2026
f11d718
C++ front end: classes whose only member is an empty [[no_unique_addr…
tautschnig Nov 3, 2026
3b837bd
Notes: round 213
tautschnig Nov 3, 2026
bdf1ed9
Simplify an integer cast to a pointer and read back as that integer
tautschnig Nov 3, 2026
f39f841
C++ front end: the MSVC STL's locale-name copies succeed; MSVC stream…
tautschnig Nov 3, 2026
51e0515
C++ front end: constexpr class arguments copied by a copy constructor
tautschnig Nov 3, 2026
fba25b5
C++ front end: model of libc++'s num_get stage 2 for integers
tautschnig Nov 3, 2026
d59e4c6
Notes: round 214
tautschnig Nov 4, 2026
648c2fa
CI: the GCC 16 cbmc-cpp job excludes msvc-stl tests
tautschnig Nov 4, 2026
74a69a5
Regression: the locale_t library tests are unix-only
tautschnig Nov 4, 2026
a09bbb8
Simplifier: read back an integer cast to a pointer only as its own type
tautschnig Nov 4, 2026
98d4342
Symex: pass a struct argument to a parameter of a layout-compatible type
tautschnig Nov 4, 2026
1589a39
Regression: [[no_unique_address]] layout tests are itanium-abi
tautschnig Nov 4, 2026
8c234e3
Linking: rename a conflicting typedef with a $link suffix
tautschnig Nov 4, 2026
253ce93
C++ front end: models of the MSVC runtime's _Getctype and _Mbrtowc
tautschnig Nov 4, 2026
7bba18f
C front end: Darwin's underscore asm label names the function itself
tautschnig Nov 4, 2026
f67bae6
Regression: cpp11_stringstream_integer_insertion_msvc needs --object-…
tautschnig Nov 4, 2026
9e25d1e
Notes: round 215
tautschnig Nov 4, 2026
bfd3401
Regression: MSVC stream tests with the VS 2022 STL
tautschnig Nov 4, 2026
9d4bea1
Regression: clang-format the two new tests' sources
tautschnig Nov 4, 2026
e7a15b0
Regression: _strftime declares the function it calls on macOS too
tautschnig Nov 4, 2026
fad9b3c
Notes: round 216
tautschnig Nov 4, 2026
dfd9c85
C++ front end: the MSVC runtime's exception copy succeeds
tautschnig Nov 4, 2026
e3112c5
Notes: round 217
tautschnig Nov 4, 2026
12dee67
C++ front end: array and function operands of a conditional expression
tautschnig Nov 4, 2026
9f3be3b
Regression: clang-format cpp11_msvc_exception_copy_of_copy
tautschnig Nov 4, 2026
9f90aa9
Notes: round 217, conditional expressions
tautschnig Nov 4, 2026
c33b153
Regression: a read that symex cannot resolve after a callee's malloc
tautschnig Nov 5, 2026
9f9dcbf
Print __CPROVER_fma before its rounding mode is added; dump-c include…
tautschnig Nov 5, 2026
79b789e
Calls whose linked definition returns a floating-point value as int
tautschnig Nov 5, 2026
c81ffda
Regression: descs of ten CORE tests still read as KNOWNBUG
tautschnig Nov 5, 2026
35c9d61
Regression: explain the coroutine KNOWNBUG
tautschnig Nov 5, 2026
009fce6
C library models preprocessed on another host: --dump-c-library-models
tautschnig Nov 5, 2026
861ce91
Notes: round 218
tautschnig Nov 5, 2026
c458181
Regression: C++11 to C++26 language support census, 66 probes
tautschnig Nov 5, 2026
30f7c24
Regression: tests of C++26's larger features
tautschnig Nov 5, 2026
265291b
Regression: modules probe of the support census (KNOWNBUG)
tautschnig Nov 5, 2026
5dc43ae
Notes: round 219
tautschnig Nov 5, 2026
a11cb41
Regression: an unevaluated static_assert, and GCC 16's saturating_add
tautschnig Nov 5, 2026
bed492f
C++ front end: closure members of class type are constructed
tautschnig Nov 5, 2026
b31a9cd
C++ front end: models of std::thread's start, join and detach
tautschnig Nov 5, 2026
282ff32
C++ front end: report coroutines as unsupported
tautschnig Nov 5, 2026
0907430
C++ front end: class template argument deduction with std::vector's g…
tautschnig Nov 5, 2026
b26296c
C++ front end: both branches of if consteval
tautschnig Nov 5, 2026
093f784
C++ front end: a defaulted operator<=> declares operator==
tautschnig Nov 5, 2026
9423008
Regression: cpp17_probe_std_variant needs libstdc++ 12
tautschnig Nov 5, 2026
3f4b82d
Notes: round 220
tautschnig Nov 5, 2026
e55a40b
Regression: partial specialization with an empty nested pack (KNOWNBUG)
tautschnig Nov 5, 2026
e9f204a
C++ front end: partial specializations with an empty nested pack
tautschnig Nov 5, 2026
8f106ed
C++ front end: pack expansions in a subscript
tautschnig Nov 5, 2026
f544793
C++ front end: built-in operators beat a converting non-member
tautschnig Nov 5, 2026
abfef6f
C front end: preprocess C++26 with -std=gnu++2c on GCC 14 and later
tautschnig Nov 5, 2026
dfc7a39
C++ front end: check C++26 contract assertions
tautschnig Nov 5, 2026
0357162
C++ front end: a structured binding declaration as a condition
tautschnig Nov 5, 2026
89c97b2
C++ front end: friend-type-specifier lists and pack expansions
tautschnig Nov 5, 2026
56b83e8
C++ front end: models of <debugging>
tautschnig Nov 5, 2026
0c1b1fe
C++ front end: constant evaluation of throw and try
tautschnig Nov 5, 2026
55da2f3
C++ front end: constant evaluation of placement new
tautschnig Nov 5, 2026
6533106
C++ front end: models for std::print and system_error
tautschnig Nov 5, 2026
e66478f
Notes: round 221
tautschnig Nov 6, 2026
34e83eb
Format with clang-format 18.1.8
tautschnig Nov 6, 2026
0e63f45
Doxygen: markup that doxygen 1.15 accepts
tautschnig Nov 6, 2026
58f2922
Notes: round 222
tautschnig Nov 6, 2026
c3fae99
C library models: file names any file system accepts
tautschnig Nov 6, 2026
7016e44
Regression: cpp11_partial_specialization_trailing_pack_empty without …
tautschnig Nov 6, 2026
711fa7a
Regression: cbmc-library-models leaves no directory behind
tautschnig Nov 6, 2026
ec0fe09
C++ front end: a cast from a pointer to a const array keeps constness
tautschnig Nov 6, 2026
b320456
Regression: cpp26_saturating_arithmetic_gcc16 with either names
tautschnig Nov 6, 2026
9d8d22d
C library models: doc comment doxygen 1.15 accepts
tautschnig Nov 6, 2026
6f0b186
C++ front end: models of libstdc++'s __throw_X helpers
tautschnig Nov 7, 2026
84a5cd8
clang-format: Standard c++20
tautschnig Nov 7, 2026
e80580f
Notes: round 223
tautschnig Nov 7, 2026
464cdb3
Check C++26 postconditions of class and reference results
tautschnig Nov 7, 2026
308dfbc
Notes: round 224
tautschnig Nov 7, 2026
485685e
link_to_library: no linking for a function without library symbols
tautschnig Nov 9, 2026
883a9c0
Notes: round 225
tautschnig Nov 9, 2026
455f4b6
C++ front end: reuse alias and variable template instances
tautschnig Nov 9, 2026
1bbb11b
C++ front end: rescan only changed values for held-back bodies
tautschnig Nov 9, 2026
1f440f8
Notes: round 226
tautschnig Nov 9, 2026
762804c
C library: memcpy/memmove preconditions without a constant `0 ||'
tautschnig Nov 9, 2026
e073228
Notes: round 227
tautschnig Nov 9, 2026
38ec620
C library: malloc records __CPROVER_new_object only for C++ programs
tautschnig Nov 9, 2026
815179f
goto_check_c: no guards from constant operands of ||, && and ?:
tautschnig Nov 9, 2026
ce86b48
C++ front end: rescan only changed bodies for deferred members
tautschnig Nov 10, 2026
62803b6
Notes: round 228
tautschnig Nov 10, 2026
0898891
Notes: round 229, and a script listing what is not upstreamed yet
tautschnig Nov 10, 2026
8c7b0b7
Unit test: the simplifier folds the difference of a pointer and itself
tautschnig Nov 10, 2026
252d9c9
Remove the GCC 16 -Warray-bounds pragmas again
tautschnig Nov 10, 2026
b25bf1f
gcc_builtin_library_functions: test only functions with a model on de…
tautschnig Nov 10, 2026
da1f26f
C library: no models of __builtin_memcmp, __builtin_strcmp, __builtin…
tautschnig Nov 10, 2026
806dcb0
Math library models: add missing *BSD variants, cleanup
tautschnig Jul 4, 2025
d2e5a8d
C library: no models of __builtin_isfinite{,f,l}
tautschnig Nov 10, 2026
fd276fb
C++ front end: constant evaluation of calls with arguments for the el…
tautschnig Nov 10, 2026
534f197
C++ parser: __builtin_va_arg
tautschnig Nov 10, 2026
8eeae6f
C++ front end: a class returned by value has its destructor instantiated
tautschnig Nov 11, 2026
3077475
C++ front end: out-of-class destructors of nested classes of templates
tautschnig Nov 11, 2026
079c184
C++ front end: a conversion to a bit-field type has that type
tautschnig Nov 11, 2026
70d7eb0
Keep a class's destructor with the class; no stubs for missing functions
tautschnig Nov 11, 2026
a114e1c
Solvers: no casts for equalities of operands of different types
tautschnig Nov 11, 2026
e8f7005
fatal_assertions: a called function is in the goto program
tautschnig Nov 11, 2026
85ebe57
goto conversion: a static assertion that reaches it holds again
tautschnig Nov 11, 2026
bbf255f
Notes: round 230
tautschnig Nov 11, 2026
a97a417
va_start: the variadic arguments follow the last named parameter
tautschnig Nov 11, 2026
36c8cd5
Goto conversion: the floating-point comparison macros are relations
tautschnig Nov 11, 2026
f2cf0ce
C++ front end: a constexpr object with a deduced class type is an object
tautschnig Nov 11, 2026
a7a2174
C++ front end: constexpr functions are recorded as such, not as macros
tautschnig Nov 11, 2026
46e1669
Parameters of a function without a body have no identifiers
tautschnig Nov 11, 2026
8bcd5fe
C++ front end: no library model for members of a function's local cla…
tautschnig Nov 11, 2026
f908aaf
Remove fallbacks that no program reaches
tautschnig Nov 11, 2026
3252448
builtin_functions.cpp: no symbol_table_base.h
tautschnig Nov 11, 2026
957210d
Notes: round 231
tautschnig Nov 11, 2026
a7a9d4b
C++ front end: unnamed template parameters shadow nothing
tautschnig Nov 11, 2026
52d1061
C++ front end: no int lowering of three-way comparisons
tautschnig Nov 11, 2026
c23ed1f
C++ front end: libstdc++'s __throw_X throws when X is not declared
tautschnig Nov 11, 2026
362fe62
C++ front end: probing a callee's parameter types does not odr-use it
tautschnig Nov 11, 2026
052d410
C++ front end: __is_nothrow_invocable checks that the call cannot throw
tautschnig Nov 11, 2026
f7de0ca
C++ parser: _Float16 for the macOS target, not the macOS host
tautschnig Nov 11, 2026
40f0866
C++ front end: remove the system-header suppressions no program reaches
tautschnig Nov 11, 2026
93a1d59
Notes: round 232
tautschnig Nov 11, 2026
f669e3f
C++ front end: the underlying type of an unscoped enum without enum-base
tautschnig Nov 11, 2026
531f0ed
C++ front end: a friend declaration does not instantiate the class
tautschnig Nov 11, 2026
2a1979f
C++ front end: the constraints of an alias template are checked
tautschnig Nov 11, 2026
b74a412
C++ front end: `m({...})' for an aggregate member is not `m(...)'
tautschnig Nov 11, 2026
e6d4510
C++ front end: a designated-initializer-list binds a reference
tautschnig Nov 11, 2026
6fa9a68
C++ front end: default arguments of instantiated member templates
tautschnig Nov 11, 2026
a3ac16e
expr2cpp: a C++ lambda-expression is not a mathematical lambda
tautschnig Nov 12, 2026
a8a2105
C++ front end: a failed static_assert in an instantiation is an error
tautschnig Nov 12, 2026
783faa2
C++ front end: direct-initialization by a converting constructor temp…
tautschnig Nov 12, 2026
a8fd285
C library: models of wcslen, wmem* and wcsto{l,ul,ll,ull}
tautschnig Nov 12, 2026
ff83618
C++ front end: libc++'s sto* of a wstring
tautschnig Nov 12, 2026
378c371
enum_promotion_type: comments that Doxygen reads as intended
tautschnig Nov 12, 2026
721d63e
Notes: round 233
tautschnig Nov 12, 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
2 changes: 1 addition & 1 deletion .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ SpacesInCStyleCastParentheses: 'false'
SpacesInContainerLiterals: 'false'
SpacesInParentheses: 'false'
SpacesInSquareBrackets: 'false'
Standard: c++17
Standard: c++20
TabWidth: '2'
UseTab: Never
---
Expand Down
1 change: 1 addition & 0 deletions .clang-format-ignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ jbmc/src/miniz/miniz.cpp
jbmc/src/miniz/miniz.h
src/cprover/wcwidth.c
unit/catch/catch.hpp
.kiro
213 changes: 199 additions & 14 deletions .github/workflows/pull-request-checks.yaml

Large diffs are not rendered by default.

16,522 changes: 16,522 additions & 0 deletions .kiro/decltype_tuple_apply_findings.md

Large diffs are not rendered by default.

23 changes: 23 additions & 0 deletions .kiro/reductions/da1_and_helper_23line.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
extern "C" void __CPROVER_assert(bool, const char *);
template <bool> using __enable_if_t = int;
template <int __v> struct integral_constant {
static const int value = __v;
};
template <class...> using __expand_to_true = integral_constant<true>;
template <class... _Pred>
__expand_to_true<__enable_if_t<_Pred::value>...> __and_helper(int);
template <class> integral_constant<false> __and_helper(...);
template <class... _Pred> using _And = decltype(__and_helper<_Pred...>(0));
template <class, class = void>
struct _HasToAddress : integral_constant<false> {};
template <class _Pointer>
struct _HasToAddress<_Pointer, decltype(to_address(_Pointer()))>;
template <class> struct _IsFancyPointer {
static const bool value = _HasToAddress<int>::value;
};
template <class _Pointer> void __to_address(_Pointer);
template <class _Pointer>
auto to_address(_Pointer __p) -> decltype(__to_address(__p));
int main() {
__CPROVER_assert(_And<_IsFancyPointer<int>>::value, "conjunction holds");
}
108 changes: 108 additions & 0 deletions .kiro/reductions/fh1_layer5_108lines.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
template <int __v> struct integral_constant {
static const int value = __v;
};
struct __apply_cv_impl {
template <class _Up> using __apply = _Up;
};
template <class, class _Up> using __apply_cv_t = __apply_cv_impl::__apply<_Up>;
template <class _Fp, class...> decltype(_Fp()()) __invoke(_Fp, ...);
template <unsigned long...> struct __tuple_indices {};
template <class _IdxType, _IdxType... _Values> struct __integer_sequence {
template <long> using __to_tuple_indices = __tuple_indices<_Values...>;
};
template <long _Ep, long _Sp>
using __make_indices_imp =
__make_integer_seq<__integer_sequence, long,
_Ep - _Sp>::template __to_tuple_indices<_Sp>;
template <class _Tp, _Tp...> struct integer_sequence;
template <long... _Ip>
using index_sequence = integer_sequence<unsigned long, _Ip...>;
template <class _Tp, _Tp _Ep>
using __make_integer_sequence = __make_integer_seq<integer_sequence, _Tp, _Ep>;
template <class _Tp, _Tp _Np>
using make_integer_sequence = __make_integer_sequence<_Tp, _Np>;
template <long _Np>
using make_index_sequence = make_integer_sequence<unsigned long, _Np>;
template <class... _Tp>
using index_sequence_for = make_index_sequence<sizeof...(_Tp)>;
template <class...> class tuple;
template <int _Ep, long _Sp = 0> struct __make_tuple_indices {
typedef __make_indices_imp<_Ep, _Sp> type;
};
template <class...> struct __tuple_types {};
template <class> struct tuple_size;
template <class... _Tp>
struct tuple_size<tuple<_Tp...>> : integral_constant<sizeof...(_Tp)> {};
template <class, class> struct __make_tuple_types_flat;
template <template <class...> class _Tuple, class... _Types, long... _Idx>
struct __make_tuple_types_flat<_Tuple<_Types...>, __tuple_indices<_Idx...>> {
template <class _Tp>
using __apply_quals =
__tuple_types<__apply_cv_t<_Tp, __type_pack_element<_Idx, _Types...>>...>;
};
template <class _Tp, long _Ep = tuple_size<_Tp>::value, long _Sp = 0>
struct __make_tuple_types {
using type =
__make_tuple_types_flat<_Tp, typename __make_tuple_indices<_Ep, _Sp>::
type>::template __apply_quals<_Tp>;
};
template <class _Hp> struct __tuple_leaf {
_Hp __value_;
};
template <class...> struct __tuple_impl;
template <long... _Indx, class... _Tp>
struct __tuple_impl<__tuple_indices<_Indx...>, _Tp...> : __tuple_leaf<_Tp>... {
template <unsigned long... _Uf, class... _Tf, class... _Up>
__tuple_impl(__tuple_indices<_Uf...>, __tuple_types<_Tf...>,
__tuple_indices<>, __tuple_types<>, _Up... __u)
: __tuple_leaf<_Tf>(__u)... {}
};
template <class... _Tp> struct tuple {
__tuple_impl<typename __make_tuple_indices<sizeof...(_Tp)>::type, _Tp...>
__base_;
template <class... _Up>
tuple(_Up... __u)
: __base_(typename __make_tuple_indices<sizeof...(_Up)>::type(),
typename __make_tuple_types<tuple>::type(),
typename __make_tuple_indices<sizeof...(_Tp),
sizeof...(_Up)>::type(),
typename __make_tuple_types<tuple, sizeof...(_Tp),
sizeof...(_Up)>::type(),
__u...) {}
};
template <class _Tp> constexpr long tuple_size_v = tuple_size<_Tp>::value;
template <class...> struct __perfect_forward_impl;
template <class _Op, long... _Idx, class... _BoundArgs>
struct __perfect_forward_impl<_Op, index_sequence<_Idx...>, _BoundArgs...> {
tuple<_BoundArgs...> __bound_args_;
template <class... _Args>
__perfect_forward_impl(_Args... __bound_args)
: __bound_args_(__bound_args...) {}
template <class...> auto operator()() -> decltype(_Op());
};
template <class _Op, class... _Args>
using __perfect_forward =
__perfect_forward_impl<_Op, index_sequence_for<>, _Args...>;
template <long _NBound, class = make_index_sequence<_NBound>>
struct __bind_back_op;
template <long _NBound, long... _Ip>
struct __bind_back_op<_NBound, index_sequence<_Ip...>> {};
template <class _Fn, class _BoundArgs>
struct __bind_back_t
: __perfect_forward<__bind_back_op<tuple_size_v<_BoundArgs>>, _Fn,
_BoundArgs> {
using __perfect_forward<__bind_back_op<tuple_size_v<_BoundArgs>>, _Fn,
_BoundArgs>::__perfect_forward;
};
template <class _Fn, class... _Args> auto __bind_back(_Fn __f, _Args...) {
return __bind_back_t<_Fn, tuple<_Args...>>(__f, 0);
}
struct {
auto operator()(int __n) { return __bind_back(this, __n); }
} take;
int main_arr;
int main() {
auto c = take(3);
auto r = __invoke(c, main_arr);
(void)r;
}
113 changes: 113 additions & 0 deletions .kiro/reductions/fk1_layer8_113lines.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
template <int __v> struct integral_constant {
static const int value = __v;
};
struct __apply_cv_impl {
template <class _Up> using __apply = _Up;
};
template <class, class _Up> using __apply_cv_t = __apply_cv_impl::__apply<_Up>;
template <class _Fp> decltype(_Fp()()) __invoke(_Fp);
template <class> using invoke_result_t = int;
invoke_result_t<void> invoke(void());
template <unsigned long...> struct __tuple_indices {};
template <class _IdxType, _IdxType... _Values> struct __integer_sequence {
template <long> using __to_tuple_indices = __tuple_indices<_Values...>;
};
template <long _Ep, long _Sp>
using __make_indices_imp =
__make_integer_seq<__integer_sequence, long,
_Ep - _Sp>::template __to_tuple_indices<_Sp>;
template <class _Tp, _Tp...> struct integer_sequence;
template <long... _Ip>
using index_sequence = integer_sequence<unsigned long, _Ip...>;
template <class _Tp, _Tp _Ep>
using __make_integer_sequence = __make_integer_seq<integer_sequence, _Tp, _Ep>;
template <class _Tp, _Tp _Np>
using make_integer_sequence = __make_integer_sequence<_Tp, _Np>;
template <long _Np>
using make_index_sequence = make_integer_sequence<unsigned long, _Np>;
template <class... _Tp>
using index_sequence_for = make_index_sequence<sizeof...(_Tp)>;
template <class...> class tuple;
template <int _Ep, long _Sp = 0> struct __make_tuple_indices {
typedef __make_indices_imp<_Ep, _Sp> type;
};
template <class...> struct __tuple_types {};
template <class> struct tuple_size;
template <class... _Tp>
struct tuple_size<tuple<_Tp...>> : integral_constant<sizeof...(_Tp)> {};
template <class, class> struct __make_tuple_types_flat;
template <template <class...> class _Tuple, class... _Types, long... _Idx>
struct __make_tuple_types_flat<_Tuple<_Types...>, __tuple_indices<_Idx...>> {
template <class _Tp>
using __apply_quals =
__tuple_types<__apply_cv_t<_Tp, __type_pack_element<_Idx, _Types...>>...>;
};
template <class _Tp, long _Ep = tuple_size<_Tp>::value, long _Sp = 0>
struct __make_tuple_types {
using type =
__make_tuple_types_flat<_Tp, typename __make_tuple_indices<_Ep, _Sp>::
type>::template __apply_quals<_Tp>;
};
template <class _Hp> struct __tuple_leaf {
_Hp __value_;
};
template <class...> struct __tuple_impl;
template <long... _Indx, class... _Tp>
struct __tuple_impl<__tuple_indices<_Indx...>, _Tp...> : __tuple_leaf<_Tp>... {
template <unsigned long... _Uf, class... _Tf, class... _Up>
__tuple_impl(__tuple_indices<_Uf...>, __tuple_types<_Tf...>,
__tuple_indices<>, __tuple_types<>, _Up... __u)
: __tuple_leaf<_Tf>(__u)... {}
};
template <class... _Tp> struct tuple {
__tuple_impl<typename __make_tuple_indices<sizeof...(_Tp)>::type, _Tp...>
__base_;
template <class... _Up>
tuple(_Up... __u)
: __base_(typename __make_tuple_indices<sizeof...(_Up)>::type(),
typename __make_tuple_types<tuple>::type(),
typename __make_tuple_indices<sizeof...(_Tp),
sizeof...(_Up)>::type(),
typename __make_tuple_types<tuple, sizeof...(_Tp),
sizeof...(_Up)>::type(),
__u...) {}
};
template <int> void get();
template <class _Tp> constexpr long tuple_size_v = tuple_size<_Tp>::value;
template <class...> struct __perfect_forward_impl;
template <class _Op, long... _Idx, class... _BoundArgs>
struct __perfect_forward_impl<_Op, index_sequence<_Idx...>, _BoundArgs...> {
tuple<_BoundArgs...> __bound_args_;
template <class... _Args>
__perfect_forward_impl(_Args... __bound_args)
: __bound_args_(__bound_args...) {}
template <class...> auto operator()() -> decltype(_Op()(get<_Idx>...));
};
template <class _Op, class... _Args>
using __perfect_forward =
__perfect_forward_impl<_Op, index_sequence_for<_Args...>, _Args...>;
template <long _NBound, class = make_index_sequence<_NBound>>
struct __bind_back_op;
template <long _NBound, long... _Ip>
struct __bind_back_op<_NBound, index_sequence<_Ip...>> {
template <class _Fn, class _BoundArgs>
auto operator()(_Fn __f, _BoundArgs) -> decltype(invoke(__f));
};
template <class _Fn, class _BoundArgs>
struct __bind_back_t
: __perfect_forward<__bind_back_op<tuple_size_v<_BoundArgs>>, _Fn,
_BoundArgs> {
using __perfect_forward<__bind_back_op<tuple_size_v<_BoundArgs>>, _Fn,
_BoundArgs>::__perfect_forward;
};
template <class _Fn, class... _Args> auto __bind_back(_Fn __f, _Args...) {
return __bind_back_t<_Fn, tuple<_Args...>>(__f, 0);
}
struct {
auto operator()(int __n) { return __bind_back(this, __n); }
} take;
int main() {
auto c = take(3);
auto r = __invoke(c);
(void)r;
}
14 changes: 14 additions & 0 deletions .kiro/reductions/lambda_decltype_cvs1_531b.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
template <int __v> struct integral_constant {
static const int value = __v;
};
template <bool, class> using __enable_if_t = int;
using ::wprintf __attribute__((__using_if_exists__));
template <class> struct basic_string {
int __r_;
basic_string(basic_string &&)
: __r_([](basic_string __s) -> decltype(__s) {}) {}
template <__enable_if_t<integral_constant<false>::value, int> = 0>
basic_string(char *);
};
basic_string Trans_NS_literals___throw_invalid_type_format_error___trans_tmp_2 =
basic_string<char>("");
33 changes: 33 additions & 0 deletions .kiro/reductions/ranges_pipe_itc_cvr1_1382b.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
template <int __v> struct integral_constant {
static const int value = __v;
};
namespace std {
template <class _Tp, _Tp...> struct integer_sequence;
template <long... _Ip> using index_sequence = integer_sequence<long, _Ip...>;
template <class _Tp, _Tp _Ep>
using __make_integer_sequence = __make_integer_seq<integer_sequence, _Tp, _Ep>;
template <class _Tp, _Tp _Np>
using make_integer_sequence = __make_integer_sequence<_Tp, _Np>;
template <long _Np>
using make_index_sequence = make_integer_sequence<long, _Np>;
template <class...> struct tuple {};
template <class> struct tuple_size;
template <class... _Tp>
struct tuple_size<tuple<_Tp...>> : integral_constant<sizeof...(_Tp)> {};
template <class _Tp> long tuple_size_v = tuple_size<_Tp>::value;
template <class> struct __perfect_forward_impl;
template <class... _Args>
using __perfect_forward = __perfect_forward_impl<_Args...>;
template <long _NBound, class = make_index_sequence<_NBound>>
struct __bind_back_op;
template <long _NBound, long... _Ip>
struct __bind_back_op<_NBound, index_sequence<_Ip...>>;
template <class, class _BoundArgs>
struct __bind_back_t
: __perfect_forward<__bind_back_op<tuple_size_v<_BoundArgs>>> {};
template <class _Fn> void __bind_back(_Fn, int) { __bind_back_t<_Fn, tuple<>>; }
int operator0___n;
struct {
auto operator0() { __bind_back(this, operator0___n); }
} take;
} // namespace std
Loading
Loading