Author: Fangrui Song
Date: 2022-04-11T22:21:24-07:00
New Revision: fe02896a79174af089600d9ea13bb0f7a446cb8f

URL: 
https://github.com/llvm/llvm-project/commit/fe02896a79174af089600d9ea13bb0f7a446cb8f
DIFF: 
https://github.com/llvm/llvm-project/commit/fe02896a79174af089600d9ea13bb0f7a446cb8f.diff

LOG: [Driver] -fno-optimize-sibling-calls: use the same spelling for its -cc1 
counterpart

And remove a -no-opaque-pointers

Added: 
    clang/test/Driver/foptimize-sibling-calls.c

Modified: 
    clang/include/clang/Driver/Options.td
    clang/lib/Driver/ToolChains/Clang.cpp
    clang/test/CodeGen/attr-disable-tail-calls.c
    clang/test/CodeGen/disable-tail-calls.c

Removed: 
    clang/test/Driver/no-sibling-calls.c


################################################################################
diff  --git a/clang/include/clang/Driver/Options.td 
b/clang/include/clang/Driver/Options.td
index 81d47b2517d02..27957b10925f7 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -2522,7 +2522,9 @@ def static_openmp: Flag<["-"], "static-openmp">,
   HelpText<"Use the static host OpenMP runtime while linking.">;
 def fopenmp_new_driver : Flag<["-"], "fopenmp-new-driver">, 
Flags<[CC1Option]>, Group<Action_Group>,
   HelpText<"Use the new driver for OpenMP offloading.">;
-def fno_optimize_sibling_calls : Flag<["-"], "fno-optimize-sibling-calls">, 
Group<f_Group>;
+def fno_optimize_sibling_calls : Flag<["-"], "fno-optimize-sibling-calls">, 
Group<f_Group>, Flags<[CC1Option]>,
+  HelpText<"Disable tail call optimization, keeping the call stack accurate">,
+  MarshallingInfoFlag<CodeGenOpts<"DisableTailCalls">>;
 def foptimize_sibling_calls : Flag<["-"], "foptimize-sibling-calls">, 
Group<f_Group>;
 defm escaping_block_tail_calls : BoolFOption<"escaping-block-tail-calls",
   CodeGenOpts<"NoEscapingBlockTailCalls">, DefaultFalse,
@@ -5201,9 +5203,6 @@ def mframe_pointer_EQ : Joined<["-"], "mframe-pointer=">,
   HelpText<"Specify which frame pointers to retain.">, 
Values<"all,non-leaf,none">,
   NormalizedValuesScope<"CodeGenOptions::FramePointerKind">, 
NormalizedValues<["All", "NonLeaf", "None"]>,
   MarshallingInfoEnum<CodeGenOpts<"FramePointer">, "None">;
-def mdisable_tail_calls : Flag<["-"], "mdisable-tail-calls">,
-  HelpText<"Disable tail call optimization, keeping the call stack accurate">,
-  MarshallingInfoFlag<CodeGenOpts<"DisableTailCalls">>;
 def menable_no_infinities : Flag<["-"], "menable-no-infs">,
   HelpText<"Allow optimization to assume there are no infinities.">,
   MarshallingInfoFlag<LangOpts<"NoHonorInfs">>, 
ImpliedByAnyOf<[ffinite_math_only.KeyPath]>;

diff  --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index 4ddd622015efd..9c0372b1dd3db 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -4767,9 +4767,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction 
&JA,
         D.Diag(diag::err_drv_unsupported_embed_bitcode) << A->getSpelling();
 
     // Render the CodeGen options that need to be passed.
-    if (!Args.hasFlag(options::OPT_foptimize_sibling_calls,
-                      options::OPT_fno_optimize_sibling_calls, true))
-      CmdArgs.push_back("-mdisable-tail-calls");
+    Args.addOptOutFlag(CmdArgs, options::OPT_foptimize_sibling_calls,
+                       options::OPT_fno_optimize_sibling_calls);
 
     RenderFloatingPointOptions(TC, D, isOptimizationLevelFast(Args), Args,
                                CmdArgs, JA);
@@ -5150,9 +5149,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction 
&JA,
                     options::OPT_fno_strict_vtable_pointers);
   Args.addOptInFlag(CmdArgs, options::OPT_fforce_emit_vtables,
                     options::OPT_fno_force_emit_vtables);
-  if (!Args.hasFlag(options::OPT_foptimize_sibling_calls,
-                    options::OPT_fno_optimize_sibling_calls, true))
-    CmdArgs.push_back("-mdisable-tail-calls");
+  Args.addOptOutFlag(CmdArgs, options::OPT_foptimize_sibling_calls,
+                     options::OPT_fno_optimize_sibling_calls);
   Args.addOptOutFlag(CmdArgs, options::OPT_fescaping_block_tail_calls,
                      options::OPT_fno_escaping_block_tail_calls);
 

diff  --git a/clang/test/CodeGen/attr-disable-tail-calls.c 
b/clang/test/CodeGen/attr-disable-tail-calls.c
index 83b61dc627042..1fea56b2b0ecc 100644
--- a/clang/test/CodeGen/attr-disable-tail-calls.c
+++ b/clang/test/CodeGen/attr-disable-tail-calls.c
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.0 %s -emit-llvm 
-mdisable-tail-calls -o - | FileCheck %s -check-prefix=DISABLE
+// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.0 %s -emit-llvm 
-fno-optimize-sibling-calls -o - | FileCheck %s -check-prefix=DISABLE
 // RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.0 %s -emit-llvm -o - | 
FileCheck %s -check-prefix=ENABLE
 
 // DISABLE: define{{.*}} i32 @f1() [[ATTRTRUE:#[0-9]+]] {

diff  --git a/clang/test/CodeGen/disable-tail-calls.c 
b/clang/test/CodeGen/disable-tail-calls.c
index 34dd0ed1bebef..e53c065072a46 100644
--- a/clang/test/CodeGen/disable-tail-calls.c
+++ b/clang/test/CodeGen/disable-tail-calls.c
@@ -1,16 +1,16 @@
-// RUN: %clang_cc1 -no-opaque-pointers -triple x86_64-apple-macosx10.9.0 
-emit-llvm -O1 -mdisable-tail-calls -o - < %s | FileCheck %s
+// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9.0 -emit-llvm -O2 
-fno-optimize-sibling-calls -o - < %s | FileCheck %s
 
 typedef struct List {
   struct List *next;
   int data;
 } List;
 
-// CHECK-LABEL: define{{.*}} %struct.List* @find
+// CHECK-LABEL: define{{.*}} ptr @find(
 List *find(List *head, int data) {
   if (!head)
     return 0;
   if (head->data == data)
     return head;
-  // CHECK: call %struct.List* @find
+  // CHECK: call ptr @find(
   return find(head->next, data);
 }

diff  --git a/clang/test/Driver/no-sibling-calls.c 
b/clang/test/Driver/foptimize-sibling-calls.c
similarity index 69%
rename from clang/test/Driver/no-sibling-calls.c
rename to clang/test/Driver/foptimize-sibling-calls.c
index c24899013f18d..3cb58ec8bca99 100644
--- a/clang/test/Driver/no-sibling-calls.c
+++ b/clang/test/Driver/foptimize-sibling-calls.c
@@ -1,8 +1,7 @@
 // RUN: %clang -### %s -fno-optimize-sibling-calls 2> %t
 // RUN: FileCheck --check-prefix=CHECK-NOSC < %t %s
-// CHECK-NOSC: "-mdisable-tail-calls"
+// CHECK-NOSC: "-fno-optimize-sibling-calls"
 
 // RUN: %clang -### -foptimize-sibling-calls %s 2> %t
 // RUN: FileCheck --check-prefix=CHECK-OSC < %t %s
-// CHECK-OSC-NOT: "-mdisable-tail-calls"
-
+// CHECK-OSC-NOT: "-fno-optimize-sibling-calls"


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to