================ @@ -2808,27 +2825,63 @@ void ExprEngine::processBranch(const Stmt *Condition, std::tie(StTrue, StFalse) = *KnownCondValueAssumption; else { assert(!isa<ObjCForCollectionStmt>(Condition)); + // TODO: instead of this shortcut perhaps it would be better to "rejoin" + // the common execution path with + // StTrue = StFalse = PrevState; builder.generateNode(PrevState, true, PredN); builder.generateNode(PrevState, false, PredN); continue; } if (StTrue && StFalse) assert(!isa<ObjCForCollectionStmt>(Condition)); + const Expr *EagerlyAssumeExpr = + PrevState->get<LastEagerlyAssumeAssumptionAt>(); + const Expr *ConditionExpr = dyn_cast<Expr>(Condition); + if (ConditionExpr) + ConditionExpr = ConditionExpr->IgnoreParenCasts(); ---------------- NagyDonat wrote:
I summarized my thoughts in the inline comment https://github.com/llvm/llvm-project/pull/109804#discussion_r1784801535 (which is attached to the test which corresponds to this part of the code). https://github.com/llvm/llvm-project/pull/109804 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits