================
@@ -404,8 +408,18 @@ void FactsGenerator::VisitConditionalOperator(const
ConditionalOperator *CO) {
if (hasOrigins(CO)) {
// Merge origins from both branches of the conditional operator.
// We kill to clear the initial state and merge both origins into it.
- killAndFlowOrigin(*CO, *CO->getTrueExpr());
- flowOrigin(*CO, *CO->getFalseExpr());
+ const Expr *TrueExpr = CO->getTrueExpr();
+ const Expr *FalseExpr = CO->getFalseExpr();
+ bool Initialized = false;
+ for (const Expr *Branch : {TrueExpr, FalseExpr}) {
+ if (!producesConditionalResult(Branch))
+ continue;
+ if (!Initialized) {
+ killAndFlowOrigin(*CO, *Branch);
+ Initialized = true;
+ } else
+ flowOrigin(*CO, *Branch);
+ }
----------------
NeKon69 wrote:
To be honest I don't like this code myself, but I couldn't find a way to make
it prettier
https://github.com/llvm/llvm-project/pull/190345
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits