================
@@ -1247,6 +1241,32 @@ void Flang::ConstructJob(Compilation &C, const JobAction 
&JA,
   assert(FPKeepKindStr && "unknown FramePointerKind");
   CmdArgs.push_back(FPKeepKindStr);
 
+  bool IsO3OrHigher = false;
+  if (const Arg *A = Args.getLastArg(options::OPT_O_Group)) {
+    if (A->getOption().matches(options::OPT_O4)) {
+      CmdArgs.push_back("-O3");
+      D.Diag(diag::warn_O4_is_O3);
+      IsO3OrHigher = true;
+    } else if (A->getOption().matches(options::OPT_Ofast)) {
+      CmdArgs.push_back("-O3");
+      D.Diag(diag::warn_drv_deprecated_arg_ofast_for_flang);
+      IsO3OrHigher = true;
+    } else if (A->getOption().matches(options::OPT_O)) {
+      StringRef S(A->getValue());
+      unsigned OptLevel = 0;
+      if (!S.getAsInteger(10, OptLevel) && OptLevel >= 3)
+        IsO3OrHigher = true;
+      A->render(Args, CmdArgs);
+    } else {
+      A->render(Args, CmdArgs);
+    }
+  }
+
+  if (IsO3OrHigher) {
+    CmdArgs.push_back("-mllvm");
+    CmdArgs.push_back("-enable-outer-loop-vectorization-prep");
----------------
Jason-Van-Beusekom wrote:

I wanted to keep this change's effects to be limited, I could enable it for 
clang / generally, but I wanted to limit the scope of this change. thus I made 
these changes opt in and only turned them on for flang.

https://github.com/llvm/llvm-project/pull/202444
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to