[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cfe-commits
Subject:    [PATCH] D122838: [clang][dataflow] Add support for correlation of boolean (tracked) values
From:       Gábor_Horváth_via_Phabricator via cfe-commits <cfe-commits
Date:       2022-03-31 20:26:03
Message-ID: sU7bo7RORIaK3LjjwqY-kA () geopod-ismtpd-3-1
[Download RAW message or body]

xazax.hun added inline comments.


================
Comment at: clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp:79
+    for (BoolValue *Constraint : Env1.getFlowConditionConstraints()) {
+      Expr1 = &Env1.makeAnd(*Expr1, *Constraint);
+    }
----------------
Hmm, interesting.
I think we view every boolean formula at a certain program point implicitly as \
`FlowConditionAtThatPoint && Formula`. And the flow condition at a program point \
should already be a disjunction of its predecessors.

So it would be interpreted as: `(FlowConditionPred1 || FlowConditionPred2) && \
(FormulaAtPred1 || FormulaAtPred2)`. While this is great, this is not the strongest \
condition we could derive.  `(FlowConditionPred1 && FormulaAtPred1)  || \
(FormulaAtPred2 && FlowConditionPred2)` created by this code snippet is stronger \
which is great.

My main concern is whether we would end up seeing an exponential explosion in the \
size of these formulas in the number of branches following each other in a sequence.



Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D122838

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic