linux-sparse.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* (no subject)
@ 2026-11-09 20:31 Bart Van Assche
  2026-11-09 20:31 ` [PATCH 01/73] Makefile: Pass '--' to rm in clean target to handle dash-prefixed files Bart Van Assche
                   ` (72 more replies)
  0 siblings, 73 replies; 74+ messages in thread
From: Bart Van Assche @ 2026-11-09 20:31 UTC (permalink / raw)
  To: linux-sparse; +Cc: Linus Torvalds

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


^ permalink raw reply	[flat|nested] 74+ messages in thread

end of thread, other threads:[~2026-11-09 20:34 UTC | newest]

Thread overview: 74+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-09 20:31 Bart Van Assche
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).