[PATCH] D122830: [clang][dataflow] Add support for (built-in) (in)equality operators

Stanislav Gatev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Mar 31 22:50:17 PDT 2022


sgatev accepted this revision.
sgatev added inline comments.


================
Comment at: clang/lib/Analysis/FlowSensitive/Transfer.cpp:53
+  if (auto *LHSValue = dyn_cast_or_null<BoolValue>(
+          Env.getValue(*LHSNorm, SkipPast::Reference)))
+    if (auto *RHSValue = dyn_cast_or_null<BoolValue>(
----------------
Do we need to skip past references here? If so, then let's add a test that fails if these are changed to `SkipPast::None`.


================
Comment at: clang/lib/Analysis/FlowSensitive/Transfer.cpp:109-113
+      auto &LHSAndRHSValue = evaluateBooleanEquality(*LHS, *RHS, Env);
+      auto &Loc = Env.createStorageLocation(*S);
+      Env.setStorageLocation(*S, Loc);
+      Env.setValue(Loc, S->getOpcode() == BO_EQ ? LHSAndRHSValue
+                                                : Env.makeNot(LHSAndRHSValue));
----------------



================
Comment at: clang/unittests/Analysis/FlowSensitive/TransferTest.cpp:2413
 
+TEST_F(TransferTest, Equality) {
+  std::string Code = R"(
----------------



================
Comment at: clang/unittests/Analysis/FlowSensitive/TransferTest.cpp:2448
+
+TEST_F(TransferTest, Inequality) {
+  std::string Code = R"(
----------------



Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D122830



More information about the cfe-commits mailing list