[PATCH] D152813: [clang][dataflow] Create `Value`s for integer literals.

Martin Böhme via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Jun 14 02:29:40 PDT 2023


mboehme added a comment.

Pre-merge check failures are in a test for the unchecked-optional-access check clang-tidy. The test that's failing is the following from unchecked-optional-access.cpp:

  c++
  void multiple_unchecked_accesses(absl::optional<int> opt1,
                                   absl::optional<int> opt2) {
    for (int i = 0; i < 10; i++) {
      opt1.value();
      // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: unchecked access to optional
    }
    opt2.value();
    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: unchecked access to optional value
  }

Both of the expected diagnostics are not output.

It looks to me as if the values we're now newly producing for integer literals are causing non-convergence of the analysis on the for-loop.

This looks like a pretty serious issue. We would certainly want analysis of a simple loop like this to converge, especially with a small bounded trip count, but even with an unbounded trip count. It looks as if, currently, the analysis is converging merely because we don't generate values for integer literals.

Next step will be to repro this issue with a test in TransferTest.cpp so that I can take a closer look at why we're failing to converge.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D152813/new/

https://reviews.llvm.org/D152813



More information about the cfe-commits mailing list