================
@@ -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

Reply via email to