From: Bart Van Assche <bvanassche@acm.org>
To: linux-sparse@vger.kernel.org
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Subject:
Date: Mon, 9 Nov 2026 12:31:46 -0800 [thread overview]
Message-ID: <20261109203259.362845-1-bvanassche@acm.org> (raw)
From ddb88c610711c6494c57b2a9df205b2acf9b3cbc Mon Sep 17 00:00:00 2001
From: Bart Van Assche <bvanassche@acm.org>
Date: Mon, 9 Nov 2026 12:27:28 -0800
Subject: [PATCH 00/73] Support more C23 features
Hi,
If nobody objects I will publish this patch series two weeks from now to
the master branch at kernel.org.
The changes fall into five major functional themes:
1. C23 Standard & Preprocessor Support (~25 commits)
Major upgrade adding comprehensive ISO C23 and GNU C23 standard features:
* Preprocessor directives & macros:
- Add #elifdef and #elifndef.
- Add __has_include and __has_include_next.
- Add #embed directive and __has_embed.
- Add __has_c_attribute.
- Add __VA_OPT__ for variadic macro expansion.
* C23 Language Features:
- Keywords & Constants: bool, true, false, nullptr / nullptr_t,
static_assert, alignas, alignof, thread_local, typeof_unqual, and
u8 character constants / string literals.
- Types & Syntax:
* Support _BitInt(N).
* Support standard [[]] attribute syntax.
* Support fixed-underlying-type enumerations (enum foo : int).
* Support constexpr object specifiers and auto type inference.
* Support digit separators in numeric literals (e.g. 1'000'000).
* Support empty initializer braces ({}).
* Support storage-class specifiers in compound literals.
- Functions & Statements:
* Support labels before declarations and at block ends.
* Support unnamed parameters in function definitions.
* Support variadic functions without named parameters (void f(...)).
* Treat empty parameter list () as (void) and reject K&R functions.
* Options:
- Add -std=c23, -std=c2x, and -std=gnu23.
2. Linux Kernel Compatibility, Builtins & Attributes (~10 commits)
Enable Sparse to parse modern Linux kernel code and headers cleanly:
* Support __attribute__((cleanup(...))):
- Integrate with linearize and -Wcontext to track lock/unlock semantics
with scope-based resource management (RAII / guard() / scoped_guard()).
* Builtin Functions:
- Add __builtin_has_attribute().
- Add __builtin_infer_alloc_token() as a size_t integer constant.
- Add kernel builtins (__builtin_object_size, __builtin_counted_by_ref,
__builtin_get_counted_by).
- Suppress evaluation of __builtin_clz(0) and __builtin_ctz(0).
* Attributes & Types:
- Support __attribute__((packed)) and machine mode attributes on enums.
- Accept conditional expressions with only one void side.
- Ignore top-level non-array address space in compare_types().
- Support long token and string expansions dynamically.
- Undefine conflicting bitness macros when parsing -m flags on x86.
3. Bitwise Types & Conditional Context (Linus Torvalds Series, ~7 commits)
Incorporate and harden Linus Torvalds's patch series:
* Context tracking:
- Add conditional context increment model (context(0, -1)) for trylock
functions, with multi-attribute call handling and check_context()
definition validation.
* Bitwise Types (SYM_RESTRICT):
- Simplify signed constants early (-5, +5, ~0) during type evaluation.
- Allow all-bits-set (~0, -1) as valid bitwise constants alongside 0.
- Allow ordered comparisons (<, <=, >, >=) between unsigned restricted
types and unrestricted constants (0, ~0).
- Keep unrestricted constants unrestricted across regular and __force
casts.
- Preserve MOD_SPECIFIER on bitwise types to retain MOD_UNSIGNED on
bitwise typedefs.
4. Hardening, Memory Safety & Bug Fixes (~30 commits)
Eliminate crashes, undefined behavior, and potential overflows:
* Allocators & Tokenizer:
- Harden slab allocation bounds, zeroing checks, and mmap fallbacks.
- Support 4096-byte identifiers and fix string escape bounds.
* Parser & AST:
- Guard against recursive symbols in c2xml.
- Harden warning and format string buffers in lib.c.
- Fix attribute propagation, enum overflow, and AST column counting.
* Evaluation, Inlining & Optimization:
- Fix pointer arithmetic, incomplete types, and qualifiers in
evaluate.c.
- Fix generic expression duplication in inline.c and VLA bound copying.
- Guard against LLONG_MIN overflow on negation in simplify.c.
- Fix instruction traversal order in memops.c and skip mixed-size SSA.
- Fix dead store elimination (DSE) and asm operands in linearize/flow.
- Cast pointers to uintptr_t before relational comparisons in cse.c.
* Backends & Tools:
- Use LLVMCreateBuilderForModule() for LLVM 24+.
- Support arbitrary struct member counts and operand types in
sparse-llvm.
- Fix buffer bounds and unsigned comparisons in compile-i386.c.
- Fix ctags, dissect, graph, and scheck helper utilities.
5. Tooling & CI Automation (2 commits)
* Add a comprehensive .clang-format configuration file.
* Add GitHub Actions workflow and test script to build the Linux kernel
with Sparse.
Thanks,
Bart.
Bart Van Assche (66):
Makefile: Pass '--' to rm in clean target to handle dash-prefixed
files
sparse-llvm: Use LLVMCreateBuilderForModule() with LLVM 24 and later
typeof_unqual: Strip qualifiers and address space from types and
arrays
bitfield: Pack consecutive _Bool bitfields into byte containers
allocate: Harden slab allocation bounds, zeroing, and mmap checks
tokenize: Support 4096-byte identifiers and fix escape bounds
pre-process: Fix macro expansion and include directive handling
options, lib: Harden warning buffers and command-line option parsing
builtin: Fix atomic builtin type checking and object_size bounds
parse, show-parse: Fix attribute propagation, enum overflow, and
bounds
target-openrisc: Set target_openrisc.mach to MACH_OPENRISC
evaluate: Fix pointer arithmetic, incomplete types, and qualifiers
expand: Fix static initializer folding and floating-point casts
inline: Copy union cast types and VLA bounds when inlining
linearize, flow: Fix asm operands, switch case bounds, and DSE
memops, ssa: Walk parent insns in reverse and skip mixed-size SSA
simplify: Prevent overflow on LLONG_MIN negation and fix
simplifications
sparse: Gate context failure warning on Wcontext and catch underflow
ast-model: Return AST_N_COLUMNS and inspect child nodes lazily
c2xml: Guard against recursive symbols and free xmlGetProp() string
compile-i386: Fix buffer bounds, unsigned '<=' codegen, and null
checks
ctags: Fix line comparison order and handle SYM_RESTRICT and SYM_LABEL
dissect: Unwrap array element type via base_type()
example: Fix show_op() rotating buffer dimensions
graph: Check PSEUDO_SYM before dereferencing insn->func->sym
scheck: Fix slice() upper bit index calculation
sparse-llvm: Support arbitrary struct member counts and fix operand
types
inline: Duplicate generic expressions instead of evaluating them
lib: Avoid mutating fmt before va_start() in warning()
cse, canon: Cast pointers to uintptr_t before relational comparison
clang-format: Add .clang-format configuration file
options: Add support for -std=c23, -std=c2x and -std=gnu23
preprocessor: Add support for #elifdef and #elifndef
preprocessor: Add support for __has_include and __has_include_next
c23: Add support for static_assert, alignas, alignof, thread_local
c23: Add support for bool, true, and false keywords
c23: Add support for nullptr and nullptr_t
c23: Add support for digit separators in numeric literals
c23: Support unnamed parameters in function definitions
c23: Support variadic functions without named parameters
c23: Support labels before declarations and at block ends
c23: Support auto type inference
c23: Support constexpr object specifier
c23: Support enumerations with fixed underlying types
c23: Support standard [[]] attribute syntax
preprocessor: Add support for __has_c_attribute
c23: Support empty initializer braces {}
preprocessor: Add support for __has_embed
preprocessor: Add support for #embed directive
c23: Add support for u8 character constants and string literals
preprocessor: Add support for __VA_OPT__
c23: Treat empty parameter list () as (void) and reject K&R functions
c23: Support storage-class specifiers in compound literals
c23: Add support for _BitInt(N)
enum: Support machine mode attributes on enumeration types
enum: Support __attribute__((packed)) on enumeration types
expand: Ignore top-level non-array address space in compare_types()
builtin: Support __builtin_infer_alloc_token() as a size_t ICE
builtin: Add support for Linux kernel compiler builtins
builtin: Add support for __builtin_has_attribute()
cleanup: Support __attribute__((cleanup(...))) in linearize and
-Wcontext
builtin: Do not evaluate __builtin_clz(0) and __builtin_ctz(0)
pre-process: Support long token and string expansions dynamically
x86: Undefine conflicting bitness macros when parsing -m flags
evaluate: Accept conditional expressions with only one void side
ci: Add Linux kernel GitHub Actions workflow and build script
Linus Torvalds (7):
context: Add "conditional context increment" model
expand: Simplify signed constants early
bitwise: Allow all-bits-set as a restricted value
bitwise: Allow restricted ordered compares with unrestricted values
bitwise: Keep unrestricted values unrestricted after a cast
bitwise: Don't remove MOD_SPECIFIER from 'bitwise' types
bitwise: Allow both regular casts and forced casts for restricted
values
.clang-format | 125 ++
.../build-linux-kernel-with-sparse.yml | 28 +
Documentation/types.rst | 2 +-
Makefile | 2 +-
allocate.c | 45 +-
allocate.h | 1 +
ast-inspect.c | 1 +
ast-model.c | 9 +-
builtin.c | 249 ++-
c2xml.c | 55 +-
char.c | 146 +-
ci/build-linux-kernel-with-sparse.sh | 23 +
compat/mmap-blob.c | 4 +-
compile-i386.c | 76 +-
cse.c | 17 +-
ctags.c | 4 +-
dissect.c | 6 +-
evaluate.c | 918 ++++++++-
example.c | 2 +-
expand.c | 696 ++++++-
expand.h | 3 +
expression.c | 482 ++++-
expression.h | 14 +-
flow.c | 3 +
gcc-attr-list.h | 2 -
graph.c | 33 +-
ident-list.h | 33 +-
inline.c | 343 +++-
lib.c | 30 +-
linearize.c | 624 +++++-
linearize.h | 6 +-
memops.c | 4 +-
options.c | 84 +-
options.h | 2 +
parse.c | 1620 ++++++++++++---
parse.h | 5 +
pre-process.c | 1824 +++++++++++++++--
predefine.c | 8 +
scheck.c | 3 +-
show-parse.c | 128 +-
simplify.c | 230 ++-
simplify.h | 1 +
sparse-llvm.c | 183 +-
sparse.c | 207 +-
ssa.c | 6 +
storage.c | 5 +-
symbol.c | 314 ++-
symbol.h | 150 +-
target-openrisc.c | 2 +-
token.h | 13 +-
tokenize.c | 242 ++-
validation/arch/x86-bitness-override.c | 17 +
validation/arch/x86-bitness-undef.c | 16 +
validation/atomic-builtins-const.c | 67 +
validation/atomic-builtins-types.c | 47 +
validation/attr_in_parameter.c | 2 +
.../backend/c23-compound-literal-storage.c | 27 +
validation/backend/c23-empty-init.c | 24 +
validation/backend/c23-nullptr.c | 21 +
validation/backend/struct-large-members.c | 83 +
validation/bitfield-bool-layout.c | 9 +-
validation/bitwise-all-bits-and-casts.c | 100 +
validation/builtin-clz-ctz-zero.c | 11 +
validation/builtin-counted-by-ref-err.c | 20 +
validation/builtin-has-attribute-err.c | 19 +
validation/builtin-has-attribute-more.c | 157 ++
validation/builtin-has-attribute-nonstring.c | 35 +
validation/builtin-infer-alloc-token.c | 28 +
validation/builtin-object-size-cycle.c | 44 +
validation/builtins-kernel.c | 73 +
validation/c11-c23-keywords-ident.c | 19 +
validation/c11-va-start-error.c | 20 +
validation/c23-alignof-pedantic.c | 20 +
validation/c23-attributes-error.c | 20 +
validation/c23-attributes-pedantic.c | 10 +
validation/c23-attributes.c | 152 ++
validation/c23-auto-error.c | 71 +
validation/c23-auto.c | 107 +
validation/c23-bitint-error.c | 61 +
validation/c23-bitint-pedantic.c | 13 +
validation/c23-bitint.c | 214 ++
validation/c23-bool-error.c | 23 +
validation/c23-bool.c | 45 +
.../c23-compound-literal-register-addr.c | 17 +
.../c23-compound-literal-storage-error.c | 37 +
.../c23-compound-literal-storage-pedantic.c | 10 +
validation/c23-compound-literal-storage.c | 27 +
validation/c23-constexpr-error.c | 92 +
validation/c23-constexpr-self-init.c | 41 +
validation/c23-constexpr.c | 100 +
validation/c23-digit-separators-error.c | 36 +
validation/c23-digit-separators-pedantic.c | 12 +
validation/c23-digit-separators.c | 29 +
validation/c23-empty-init-error.c | 19 +
validation/c23-empty-init-pedantic.c | 14 +
validation/c23-empty-init.c | 64 +
validation/c23-empty-parameters.c | 29 +
validation/c23-empty-params-error.c | 47 +
validation/c23-enum-type-cast.c | 70 +
validation/c23-enum-type-error.c | 40 +
validation/c23-enum-type.c | 116 ++
validation/c23-keywords-error.c | 48 +
validation/c23-keywords.c | 30 +
validation/c23-knr-error.c | 14 +
validation/c23-labels-error.c | 48 +
validation/c23-labels-gnu.c | 15 +
validation/c23-labels-pedantic.c | 15 +
validation/c23-labels.c | 67 +
validation/c23-nullptr-assign.c | 35 +
validation/c23-nullptr-error.c | 107 +
validation/c23-nullptr.c | 107 +
validation/c23-param-attribute.c | 28 +
validation/c23-stdc-version.c | 11 +
validation/c23-typeof-unqual.c | 113 +
validation/c23-u8-char-error.c | 16 +
validation/c23-u8-char-pedantic.c | 10 +
validation/c23-u8-char-warn.c | 14 +
validation/c23-u8-char.c | 37 +
validation/c23-unnamed-params-error.c | 27 +
validation/c23-unnamed-params-pedantic.c | 12 +
validation/c23-unnamed-params.c | 47 +
validation/c23-va-opt.c | 36 +
validation/c23-variadic-error.c | 41 +
validation/c23-variadic-no-named.c | 47 +
validation/c2xml-recursive-types.c | 15 +
validation/cleanup-context.c | 161 ++
validation/cleanup-errors.c | 77 +
validation/cleanup-inline-loop.c | 31 +
validation/cond-err-expand.c | 9 -
validation/cond-one-void-pedantic.c | 39 +
validation/cond-one-void.c | 47 +
validation/context-fixes.c | 41 +
validation/context.c | 101 +-
validation/enum+mode.c | 26 +-
validation/enum-packed.c | 85 +
validation/eval-expand-inline-fixes.c | 49 +
validation/eval-ptr-incomplete-and-inline.c | 70 +
validation/eval-type-checks.c | 89 +
validation/expand-bitint.c | 49 +
validation/expand-const-and-float.c | 73 +
validation/inline-generic.c | 25 +
validation/linear/bitfield-bool.c | 44 +
validation/linear/c23-nullptr.c | 20 +
validation/linear/c23-unnamed-params.c | 27 +
validation/linear/c23-va-start.c | 22 +
validation/linear/cleanup-control-flow.c | 62 +
validation/linear/cleanup-stmt-expr-asm.c | 48 +
validation/linear/cond-one-void.c | 24 +
validation/linear/control-flow-fixes.c | 44 +
validation/long-string-expansion.c | 30 +
validation/optim/simplify-memops-ssa-fixes.c | 103 +
validation/optim/volatile-dse-and-cfg.c | 53 +
validation/parser-enum-overflow.c | 13 +
validation/parser-type-fixes.c | 93 +
validation/preprocessor/c23-elifdef-error.c | 35 +
validation/preprocessor/c23-elifdef.c | 44 +
validation/preprocessor/c23-embed-error.c | 19 +
validation/preprocessor/c23-embed-pedantic.c | 12 +
validation/preprocessor/c23-embed.c | 72 +
validation/preprocessor/c23-has-c-attribute.c | 60 +
validation/preprocessor/c23-has-embed.c | 69 +
.../preprocessor/c23-has-include-error.c | 18 +
validation/preprocessor/c23-has-include.c | 51 +
validation/preprocessor/c23-va-opt-error.c | 31 +
validation/preprocessor/c23-va-opt.c | 73 +
.../preprocessor/preprocess-crash-fixes.c | 25 +
.../preprocess-errors-and-limits.c | 33 +
validation/struct-packed-aligned-layout.c | 135 ++
validation/types-compatible-address-space.c | 39 +
validation/weak-const-no-fold.c | 15 +
170 files changed, 13517 insertions(+), 1097 deletions(-)
create mode 100644 .clang-format
create mode 100644 .github/workflows/build-linux-kernel-with-sparse.yml
create mode 100755 ci/build-linux-kernel-with-sparse.sh
create mode 100644 validation/arch/x86-bitness-override.c
create mode 100644 validation/arch/x86-bitness-undef.c
create mode 100644 validation/atomic-builtins-const.c
create mode 100644 validation/atomic-builtins-types.c
create mode 100644 validation/backend/c23-compound-literal-storage.c
create mode 100644 validation/backend/c23-empty-init.c
create mode 100644 validation/backend/c23-nullptr.c
create mode 100644 validation/backend/struct-large-members.c
create mode 100644 validation/bitwise-all-bits-and-casts.c
create mode 100644 validation/builtin-clz-ctz-zero.c
create mode 100644 validation/builtin-counted-by-ref-err.c
create mode 100644 validation/builtin-has-attribute-err.c
create mode 100644 validation/builtin-has-attribute-more.c
create mode 100644 validation/builtin-has-attribute-nonstring.c
create mode 100644 validation/builtin-infer-alloc-token.c
create mode 100644 validation/builtin-object-size-cycle.c
create mode 100644 validation/builtins-kernel.c
create mode 100644 validation/c11-c23-keywords-ident.c
create mode 100644 validation/c11-va-start-error.c
create mode 100644 validation/c23-alignof-pedantic.c
create mode 100644 validation/c23-attributes-error.c
create mode 100644 validation/c23-attributes-pedantic.c
create mode 100644 validation/c23-attributes.c
create mode 100644 validation/c23-auto-error.c
create mode 100644 validation/c23-auto.c
create mode 100644 validation/c23-bitint-error.c
create mode 100644 validation/c23-bitint-pedantic.c
create mode 100644 validation/c23-bitint.c
create mode 100644 validation/c23-bool-error.c
create mode 100644 validation/c23-bool.c
create mode 100644 validation/c23-compound-literal-register-addr.c
create mode 100644 validation/c23-compound-literal-storage-error.c
create mode 100644 validation/c23-compound-literal-storage-pedantic.c
create mode 100644 validation/c23-compound-literal-storage.c
create mode 100644 validation/c23-constexpr-error.c
create mode 100644 validation/c23-constexpr-self-init.c
create mode 100644 validation/c23-constexpr.c
create mode 100644 validation/c23-digit-separators-error.c
create mode 100644 validation/c23-digit-separators-pedantic.c
create mode 100644 validation/c23-digit-separators.c
create mode 100644 validation/c23-empty-init-error.c
create mode 100644 validation/c23-empty-init-pedantic.c
create mode 100644 validation/c23-empty-init.c
create mode 100644 validation/c23-empty-parameters.c
create mode 100644 validation/c23-empty-params-error.c
create mode 100644 validation/c23-enum-type-cast.c
create mode 100644 validation/c23-enum-type-error.c
create mode 100644 validation/c23-enum-type.c
create mode 100644 validation/c23-keywords-error.c
create mode 100644 validation/c23-keywords.c
create mode 100644 validation/c23-knr-error.c
create mode 100644 validation/c23-labels-error.c
create mode 100644 validation/c23-labels-gnu.c
create mode 100644 validation/c23-labels-pedantic.c
create mode 100644 validation/c23-labels.c
create mode 100644 validation/c23-nullptr-assign.c
create mode 100644 validation/c23-nullptr-error.c
create mode 100644 validation/c23-nullptr.c
create mode 100644 validation/c23-param-attribute.c
create mode 100644 validation/c23-stdc-version.c
create mode 100644 validation/c23-typeof-unqual.c
create mode 100644 validation/c23-u8-char-error.c
create mode 100644 validation/c23-u8-char-pedantic.c
create mode 100644 validation/c23-u8-char-warn.c
create mode 100644 validation/c23-u8-char.c
create mode 100644 validation/c23-unnamed-params-error.c
create mode 100644 validation/c23-unnamed-params-pedantic.c
create mode 100644 validation/c23-unnamed-params.c
create mode 100644 validation/c23-va-opt.c
create mode 100644 validation/c23-variadic-error.c
create mode 100644 validation/c23-variadic-no-named.c
create mode 100644 validation/c2xml-recursive-types.c
create mode 100644 validation/cleanup-context.c
create mode 100644 validation/cleanup-errors.c
create mode 100644 validation/cleanup-inline-loop.c
create mode 100644 validation/cond-one-void-pedantic.c
create mode 100644 validation/cond-one-void.c
create mode 100644 validation/context-fixes.c
create mode 100644 validation/enum-packed.c
create mode 100644 validation/eval-expand-inline-fixes.c
create mode 100644 validation/eval-ptr-incomplete-and-inline.c
create mode 100644 validation/eval-type-checks.c
create mode 100644 validation/expand-bitint.c
create mode 100644 validation/expand-const-and-float.c
create mode 100644 validation/linear/bitfield-bool.c
create mode 100644 validation/linear/c23-nullptr.c
create mode 100644 validation/linear/c23-unnamed-params.c
create mode 100644 validation/linear/c23-va-start.c
create mode 100644 validation/linear/cleanup-control-flow.c
create mode 100644 validation/linear/cleanup-stmt-expr-asm.c
create mode 100644 validation/linear/cond-one-void.c
create mode 100644 validation/linear/control-flow-fixes.c
create mode 100644 validation/long-string-expansion.c
create mode 100644 validation/optim/simplify-memops-ssa-fixes.c
create mode 100644 validation/optim/volatile-dse-and-cfg.c
create mode 100644 validation/parser-enum-overflow.c
create mode 100644 validation/parser-type-fixes.c
create mode 100644 validation/preprocessor/c23-elifdef-error.c
create mode 100644 validation/preprocessor/c23-elifdef.c
create mode 100644 validation/preprocessor/c23-embed-error.c
create mode 100644 validation/preprocessor/c23-embed-pedantic.c
create mode 100644 validation/preprocessor/c23-embed.c
create mode 100644 validation/preprocessor/c23-has-c-attribute.c
create mode 100644 validation/preprocessor/c23-has-embed.c
create mode 100644 validation/preprocessor/c23-has-include-error.c
create mode 100644 validation/preprocessor/c23-has-include.c
create mode 100644 validation/preprocessor/c23-va-opt-error.c
create mode 100644 validation/preprocessor/c23-va-opt.c
create mode 100644 validation/preprocessor/preprocess-crash-fixes.c
create mode 100644 validation/preprocessor/preprocess-errors-and-limits.c
create mode 100644 validation/struct-packed-aligned-layout.c
create mode 100644 validation/types-compatible-address-space.c
create mode 100644 validation/weak-const-no-fold.c
next reply other threads:[~2026-11-09 20:33 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-09 20:31 Bart Van Assche [this message]
2026-11-09 20:31 ` [PATCH 01/73] Makefile: Pass '--' to rm in clean target to handle dash-prefixed files Bart Van Assche
2026-11-09 20:31 ` [PATCH 02/73] sparse-llvm: Use LLVMCreateBuilderForModule() with LLVM 24 and later Bart Van Assche
2026-11-09 20:31 ` [PATCH 03/73] typeof_unqual: Strip qualifiers and address space from types and arrays Bart Van Assche
2026-11-09 20:31 ` [PATCH 04/73] bitfield: Pack consecutive _Bool bitfields into byte containers Bart Van Assche
2026-11-09 20:31 ` [PATCH 05/73] allocate: Harden slab allocation bounds, zeroing, and mmap checks Bart Van Assche
2026-11-09 20:31 ` [PATCH 06/73] tokenize: Support 4096-byte identifiers and fix escape bounds Bart Van Assche
2026-11-09 20:31 ` [PATCH 07/73] pre-process: Fix macro expansion and include directive handling Bart Van Assche
2026-11-09 20:31 ` [PATCH 08/73] options, lib: Harden warning buffers and command-line option parsing Bart Van Assche
2026-11-09 20:31 ` [PATCH 09/73] builtin: Fix atomic builtin type checking and object_size bounds Bart Van Assche
2026-11-09 20:31 ` [PATCH 10/73] parse, show-parse: Fix attribute propagation, enum overflow, and bounds Bart Van Assche
2026-11-09 20:31 ` [PATCH 11/73] target-openrisc: Set target_openrisc.mach to MACH_OPENRISC Bart Van Assche
2026-11-09 20:31 ` [PATCH 12/73] evaluate: Fix pointer arithmetic, incomplete types, and qualifiers Bart Van Assche
2026-11-09 20:31 ` [PATCH 13/73] expand: Fix static initializer folding and floating-point casts Bart Van Assche
2026-11-09 20:32 ` [PATCH 14/73] inline: Copy union cast types and VLA bounds when inlining Bart Van Assche
2026-11-09 20:32 ` [PATCH 15/73] linearize, flow: Fix asm operands, switch case bounds, and DSE Bart Van Assche
2026-11-09 20:32 ` [PATCH 16/73] memops, ssa: Walk parent insns in reverse and skip mixed-size SSA Bart Van Assche
2026-11-09 20:32 ` [PATCH 17/73] simplify: Prevent overflow on LLONG_MIN negation and fix simplifications Bart Van Assche
2026-11-09 20:32 ` [PATCH 18/73] sparse: Gate context failure warning on Wcontext and catch underflow Bart Van Assche
2026-11-09 20:32 ` [PATCH 19/73] ast-model: Return AST_N_COLUMNS and inspect child nodes lazily Bart Van Assche
2026-11-09 20:32 ` [PATCH 20/73] c2xml: Guard against recursive symbols and free xmlGetProp() string Bart Van Assche
2026-11-09 20:32 ` [PATCH 21/73] compile-i386: Fix buffer bounds, unsigned '<=' codegen, and null checks Bart Van Assche
2026-11-09 20:32 ` [PATCH 22/73] ctags: Fix line comparison order and handle SYM_RESTRICT and SYM_LABEL Bart Van Assche
2026-11-09 20:32 ` [PATCH 23/73] dissect: Unwrap array element type via base_type() Bart Van Assche
2026-11-09 20:32 ` [PATCH 24/73] example: Fix show_op() rotating buffer dimensions Bart Van Assche
2026-11-09 20:32 ` [PATCH 25/73] graph: Check PSEUDO_SYM before dereferencing insn->func->sym Bart Van Assche
2026-11-09 20:32 ` [PATCH 26/73] scheck: Fix slice() upper bit index calculation Bart Van Assche
2026-11-09 20:32 ` [PATCH 27/73] sparse-llvm: Support arbitrary struct member counts and fix operand types Bart Van Assche
2026-11-09 20:32 ` [PATCH 28/73] inline: Duplicate generic expressions instead of evaluating them Bart Van Assche
2026-11-09 20:32 ` [PATCH 29/73] lib: Avoid mutating fmt before va_start() in warning() Bart Van Assche
2026-11-09 20:32 ` [PATCH 30/73] cse, canon: Cast pointers to uintptr_t before relational comparison Bart Van Assche
2026-11-09 20:32 ` [PATCH 31/73] context: Add "conditional context increment" model Bart Van Assche
2026-11-09 20:32 ` [PATCH 32/73] expand: Simplify signed constants early Bart Van Assche
2026-11-09 20:32 ` [PATCH 33/73] bitwise: Allow all-bits-set as a restricted value Bart Van Assche
2026-11-09 20:32 ` [PATCH 34/73] bitwise: Allow restricted ordered compares with unrestricted values Bart Van Assche
2026-11-09 20:32 ` [PATCH 35/73] bitwise: Keep unrestricted values unrestricted after a cast Bart Van Assche
2026-11-09 20:32 ` [PATCH 36/73] bitwise: Don't remove MOD_SPECIFIER from 'bitwise' types Bart Van Assche
2026-11-09 20:32 ` [PATCH 37/73] bitwise: Allow both regular casts and forced casts for restricted values Bart Van Assche
2026-11-09 20:32 ` [PATCH 38/73] clang-format: Add .clang-format configuration file Bart Van Assche
2026-11-09 20:32 ` [PATCH 39/73] options: Add support for -std=c23, -std=c2x and -std=gnu23 Bart Van Assche
2026-11-09 20:32 ` [PATCH 40/73] preprocessor: Add support for #elifdef and #elifndef Bart Van Assche
2026-11-09 20:32 ` [PATCH 41/73] preprocessor: Add support for __has_include and __has_include_next Bart Van Assche
2026-11-09 20:32 ` [PATCH 42/73] c23: Add support for static_assert, alignas, alignof, thread_local Bart Van Assche
2026-11-09 20:32 ` [PATCH 43/73] c23: Add support for bool, true, and false keywords Bart Van Assche
2026-11-09 20:32 ` [PATCH 44/73] c23: Add support for nullptr and nullptr_t Bart Van Assche
2026-11-09 20:32 ` [PATCH 45/73] c23: Add support for digit separators in numeric literals Bart Van Assche
2026-11-09 20:32 ` [PATCH 46/73] c23: Support unnamed parameters in function definitions Bart Van Assche
2026-11-09 20:32 ` [PATCH 47/73] c23: Support variadic functions without named parameters Bart Van Assche
2026-11-09 20:32 ` [PATCH 48/73] c23: Support labels before declarations and at block ends Bart Van Assche
2026-11-09 20:32 ` [PATCH 49/73] c23: Support auto type inference Bart Van Assche
2026-11-09 20:32 ` [PATCH 50/73] c23: Support constexpr object specifier Bart Van Assche
2026-11-09 20:32 ` [PATCH 51/73] c23: Support enumerations with fixed underlying types Bart Van Assche
2026-11-09 20:32 ` [PATCH 52/73] c23: Support standard [[]] attribute syntax Bart Van Assche
2026-11-09 20:32 ` [PATCH 53/73] preprocessor: Add support for __has_c_attribute Bart Van Assche
2026-11-09 20:32 ` [PATCH 54/73] c23: Support empty initializer braces {} Bart Van Assche
2026-11-09 20:32 ` [PATCH 55/73] preprocessor: Add support for __has_embed Bart Van Assche
2026-11-09 20:32 ` [PATCH 56/73] preprocessor: Add support for #embed directive Bart Van Assche
2026-11-09 20:32 ` [PATCH 57/73] c23: Add support for u8 character constants and string literals Bart Van Assche
2026-11-09 20:32 ` [PATCH 58/73] preprocessor: Add support for __VA_OPT__ Bart Van Assche
2026-11-09 20:32 ` [PATCH 59/73] c23: Treat empty parameter list () as (void) and reject K&R functions Bart Van Assche
2026-11-09 20:32 ` [PATCH 60/73] c23: Support storage-class specifiers in compound literals Bart Van Assche
2026-11-09 20:32 ` [PATCH 61/73] c23: Add support for _BitInt(N) Bart Van Assche
2026-11-09 20:32 ` [PATCH 62/73] enum: Support machine mode attributes on enumeration types Bart Van Assche
2026-11-09 20:32 ` [PATCH 63/73] enum: Support __attribute__((packed)) " Bart Van Assche
2026-11-09 20:32 ` [PATCH 64/73] expand: Ignore top-level non-array address space in compare_types() Bart Van Assche
2026-11-09 20:32 ` [PATCH 65/73] builtin: Support __builtin_infer_alloc_token() as a size_t ICE Bart Van Assche
2026-11-09 20:32 ` [PATCH 66/73] builtin: Add support for Linux kernel compiler builtins Bart Van Assche
2026-11-09 20:32 ` [PATCH 67/73] builtin: Add support for __builtin_has_attribute() Bart Van Assche
2026-11-09 20:32 ` [PATCH 68/73] cleanup: Support __attribute__((cleanup(...))) in linearize and -Wcontext Bart Van Assche
2026-11-09 20:32 ` [PATCH 69/73] builtin: Do not evaluate __builtin_clz(0) and __builtin_ctz(0) Bart Van Assche
2026-11-09 20:32 ` [PATCH 70/73] pre-process: Support long token and string expansions dynamically Bart Van Assche
2026-11-09 20:32 ` [PATCH 71/73] x86: Undefine conflicting bitness macros when parsing -m flags Bart Van Assche
2026-11-09 20:32 ` [PATCH 72/73] evaluate: Accept conditional expressions with only one void side Bart Van Assche
2026-11-09 20:32 ` [PATCH 73/73] ci: Add Linux kernel GitHub Actions workflow and build script Bart Van Assche
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261109203259.362845-1-bvanassche@acm.org \
--to=bvanassche@acm.org \
--cc=linux-sparse@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox