================ @@ -908,6 +908,74 @@ void CodeGenFunction::EmitIfStmt(const IfStmt &S) { incrementProfileCounter(&S); } +bool CodeGenFunction::checkIfLoopMustProgress(const Expr *ControllingExpression, + bool IsTrivialCXXLoop) { + if (CGM.getCodeGenOpts().getFiniteLoops() == + CodeGenOptions::FiniteLoopsKind::Never) + return false; + + if (CGM.getCodeGenOpts().getFiniteLoops() == + CodeGenOptions::FiniteLoopsKind::Always && + !getLangOpts().CPlusPlus11) ---------------- efriedma-quic wrote:
There are basically four modes we have logic for here: - No mustprogress optimizations - C11 mustprogress - C++23 mustprogress - always mustprogress I don't think there's really much reason to keep "always mustprogress" mode; like you note, it's not really useful. Let's just make -ffinite-loops mean the new C++ rules. Of course, -fno-finite-loops means no mustprogress. This does mean we don't provide a way to explicitly access C11 mustprogress mode, I guess; it's not equivalent to either of -ffinite-loops or -fno-finite-loops. But not sure how much we care. We could add a flag -fc11-finite-loops if someone does care. https://github.com/llvm/llvm-project/pull/90066 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits