[all-commits] [llvm/llvm-project] 5cafc1: [clang][ssaf] Implement Entity Linker CLI and patc...

Aviral Goel via All-commits all-commits at lists.llvm.org
Mon Mar 9 11:32:44 PDT 2026


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 5cafc12f06ea93045aaf4da6850b87323bccb30c
      https://github.com/llvm/llvm-project/commit/5cafc12f06ea93045aaf4da6850b87323bccb30c
  Author: Aviral Goel <aviralg at users.noreply.github.com>
  Date:   2026-03-09 (Mon, 09 Mar 2026)

  Changed paths:
    M clang/include/clang/Analysis/Scalable/EntityLinker/EntityLinker.h
    M clang/include/clang/Analysis/Scalable/EntityLinker/EntitySummaryEncoding.h
    M clang/include/clang/Analysis/Scalable/Serialization/JSONFormat.h
    M clang/include/clang/Analysis/Scalable/Serialization/SerializationFormat.h
    M clang/include/clang/Analysis/Scalable/Support/ErrorBuilder.h
    M clang/lib/Analysis/Scalable/CMakeLists.txt
    M clang/lib/Analysis/Scalable/EntityLinker/EntityLinker.cpp
    A clang/lib/Analysis/Scalable/Serialization/JSONFormat/JSONEntitySummaryEncoding.cpp
    A clang/lib/Analysis/Scalable/Serialization/JSONFormat/JSONEntitySummaryEncoding.h
    M clang/lib/Analysis/Scalable/Serialization/JSONFormat/JSONFormatImpl.cpp
    M clang/lib/Analysis/Scalable/Serialization/JSONFormat/JSONFormatImpl.h
    A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-1.json
    A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-2.json
    A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-badext.txt
    A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-empty.json
    A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-invalid-entity-id-multikey.json
    A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-invalid-entity-id-ref.json
    A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-invalid-entity-id-value.json
    A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-malformed.json
    A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-missing-fields.json
    A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-noext
    A clang/test/Analysis/Scalable/ssaf-linker/Outputs/lu-1+2.json
    A clang/test/Analysis/Scalable/ssaf-linker/Outputs/lu-1.json
    A clang/test/Analysis/Scalable/ssaf-linker/Outputs/lu-2.json
    A clang/test/Analysis/Scalable/ssaf-linker/Outputs/lu-empty.json
    A clang/test/Analysis/Scalable/ssaf-linker/cli.test
    A clang/test/Analysis/Scalable/ssaf-linker/help.test
    A clang/test/Analysis/Scalable/ssaf-linker/io.test
    A clang/test/Analysis/Scalable/ssaf-linker/linking-errors.test
    A clang/test/Analysis/Scalable/ssaf-linker/linking.test
    A clang/test/Analysis/Scalable/ssaf-linker/time.test
    A clang/test/Analysis/Scalable/ssaf-linker/validation-errors-permissions.test
    A clang/test/Analysis/Scalable/ssaf-linker/validation-errors.test
    A clang/test/Analysis/Scalable/ssaf-linker/verbose.test
    A clang/test/Analysis/Scalable/ssaf-linker/version.test
    M clang/test/CMakeLists.txt
    M clang/test/lit.cfg.py
    M clang/tools/CMakeLists.txt
    A clang/tools/ssaf-linker/CMakeLists.txt
    A clang/tools/ssaf-linker/SSAFLinker.cpp
    M clang/unittests/Analysis/Scalable/EntityLinkerTest.cpp
    M clang/unittests/Analysis/Scalable/Registries/SerializationFormatRegistryTest.cpp
    M clang/unittests/Analysis/Scalable/Serialization/JSONFormatTest/JSONFormatTest.cpp
    M clang/unittests/Analysis/Scalable/Serialization/JSONFormatTest/LUSummaryTest.cpp
    M clang/unittests/Analysis/Scalable/Serialization/JSONFormatTest/TUSummaryTest.cpp

  Log Message:
  -----------
  [clang][ssaf] Implement Entity Linker CLI and patching for JSON Format

This PR implements Entity ID patching for the JSON serialization format
and introduces `ssaf-linker`, a command-line tool that drives the
`EntityLinker`.

1. Entity ID references inside summary blobs use the sentinel
representation `{"@": <uint64>}`. Patching walks the JSON value tree
recursively, recognizes sentinels, and rewrites their indices using the
`EntityResolutionTable` provided by the linker.
2. An object with an `@` key but extra keys `(size != 1)`, an `@` value
that is not a valid `uint64`, and an entity ID not present in the
resolution table, lead to patching errors.
3. `JSONFormat::EntityIdConverter` is replaced with two `function_ref`
typedefs to eliminate the wrapper class.
4.`ssaf-linker` is implemented in `clang/tools/ssaf-linker/` and gets
built at `bin/ssaf-linker`.
5. lit tests check CLI, verbose output, timing output, validation
errors, I/O errors, linking errors, and successful linking.

rdar://162570931



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list