[all-commits] [llvm/llvm-project] 672fb2: [clang][dataflow] Add new `join` API and replace e...

Yitzhak Mandelbaum via All-commits all-commits at lists.llvm.org
Tue Feb 6 12:39:07 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 672fb27b267edc5dec4939b0295c8eebcdc57467
      https://github.com/llvm/llvm-project/commit/672fb27b267edc5dec4939b0295c8eebcdc57467
  Author: Yitzhak Mandelbaum <ymand at users.noreply.github.com>
  Date:   2024-02-06 (Tue, 06 Feb 2024)

  Changed paths:
    M clang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h
    M clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp
    M clang/unittests/Analysis/FlowSensitive/SignAnalysisTest.cpp
    M clang/unittests/Analysis/FlowSensitive/TypeErasedDataflowAnalysisTest.cpp

  Log Message:
  -----------
  [clang][dataflow] Add new `join` API and replace existing `merge` implementations. (#80361)

This patch adds a new interface for the join operation, now properly
called `join`. Originally, the framework offered a single `merge`
operation, which could serve either as a join or a widening. In
practice, though we found this conflation didn't work for non-trivial
anlyses, and split of the widening operation (`widen`). This change
completes the transition by introducing a proper `join` with strict join
semantics.

In the process, it drops an odd (and often misused) aspect of `merge`
wherein callees could implictly instruct the framework to drop the
current entry by returning `false`. This features was never used
correctly in analyses and doesn't belong in a join operation, so it is
omitted.

---------

Co-authored-by: Dmitri Gribenko <gribozavr at gmail.com>
Co-authored-by: martinboehme <mboehme at google.com>




More information about the All-commits mailing list