[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