[clang][cli] Generate -f[no-]finite-loops arguments
authorJan Svoboda <jan_svoboda@apple.com>
Tue, 16 Feb 2021 13:27:21 +0000 (14:27 +0100)
committerJan Svoboda <jan_svoboda@apple.com>
Tue, 16 Feb 2021 13:39:20 +0000 (14:39 +0100)
This patch generates the `-f[no-]finite-loops` arguments from `CompilerInvocation` (added in D96419), fixing test failures of Clang built with `-DCLANG_ROUND_TRIP_CC1_ARGS=ON`.

Reviewed By: fhahn

Differential Revision: https://reviews.llvm.org/D96761

clang/lib/Frontend/CompilerInvocation.cpp
clang/test/CodeGenCXX/attr-mustprogress.cpp

index b2ee11a..f929647 100644 (file)
@@ -1509,6 +1509,17 @@ void CompilerInvocation::GenerateCodeGenArgs(
 
   if (!Opts.EmitVersionIdentMetadata)
     GenerateArg(Args, OPT_Qn, SA);
+
+  switch (Opts.FiniteLoops) {
+  case CodeGenOptions::FiniteLoopsKind::Language:
+    break;
+  case CodeGenOptions::FiniteLoopsKind::Always:
+    GenerateArg(Args, OPT_ffinite_loops, SA);
+    break;
+  case CodeGenOptions::FiniteLoopsKind::Never:
+    GenerateArg(Args, OPT_fno_finite_loops, SA);
+    break;
+  }
 }
 
 bool CompilerInvocation::ParseCodeGenArgsImpl(CodeGenOptions &Opts,
index 93e366b..48ac7ad 100644 (file)
@@ -7,7 +7,7 @@
 // Make sure -ffinite-loops overrides -std=c++98 for loops.
 // RUN: %clang_cc1 -std=c++98 -ffinite-loops -triple=x86_64-unknown-linux-gnu -S -emit-llvm %s -o - | FileCheck --check-prefix=CHECK --check-prefix=FINITE %s
 
-// Make sure -fno_finite-loops overrides -std=c++11
+// Make sure -fno-finite-loops overrides -std=c++11
 // RUN: %clang_cc1 -std=c++11 -fno-finite-loops -triple=x86_64-unknown-linux-gnu -S -emit-llvm %s -o - | FileCheck --check-prefix=CHECK --check-prefix=CXX98 %s
 
 int a = 0;