[all-commits] [llvm/llvm-project] 537bbb: [clang][dataflow] Process terminator condition wit...

martinboehme via All-commits all-commits at lists.llvm.org
Fri Jan 12 00:21:09 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 537bbb4688b021c7eb7045ffd0d5f63087af83c3
      https://github.com/llvm/llvm-project/commit/537bbb4688b021c7eb7045ffd0d5f63087af83c3
  Author: martinboehme <mboehme at google.com>
  Date:   2024-01-12 (Fri, 12 Jan 2024)

  Changed paths:
    M clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp
    M clang/unittests/Analysis/FlowSensitive/LoggerTest.cpp
    M clang/unittests/Analysis/FlowSensitive/TransferTest.cpp

  Log Message:
  -----------
  [clang][dataflow] Process terminator condition within `transferCFGBlock()`. (#77750)

In particular, it's important that we create the "fallback" atomic at
this point
(which we produce if the transfer function didn't produce a value for
the
expression) so that it is placed in the correct environment.

Previously, we processed the terminator condition in the
`TerminatorVisitor`,
which put the fallback atomic in a copy of the environment that is
produced as
input for the _successor_ block, rather than the environment for the
block
containing the expression for which we produce the fallback atomic.

As a result, we produce different fallback atomics every time we process
the
successor block, and hence we don't have a consistent representation of
the
terminator condition in the flow condition.

This patch includes a test (authored by ymand@) that fails without the
fix.




More information about the All-commits mailing list