MaskRay created this revision.
MaskRay added reviewers: aeubanks, asbirlea, ychen.
MaskRay requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

So that if -fno-new-pass-manager is requested for an
-DENABLE_EXPERIMENTAL_NEW_PASS_MANAGER=on build, ld.bfd/gold/ld.lld can know to
use the legacy PM.

Actually we only need to pass an option when the specified option is different
from the configured default, but that is difficult to test.  So we conditionally
pass a linker option.

Depends on D92916 <https://reviews.llvm.org/D92916>


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D92917

Files:
  clang/lib/Driver/ToolChains/CommonArgs.cpp
  clang/test/Driver/fnew-pass-manager.c


Index: clang/test/Driver/fnew-pass-manager.c
===================================================================
--- clang/test/Driver/fnew-pass-manager.c
+++ clang/test/Driver/fnew-pass-manager.c
@@ -19,7 +19,7 @@
 
 // NEW_LINK:    "-plugin-opt=new-pass-manager"
 
-/// TODO Add the negative option and pass it to the linker.
-// RUN: %clang -### -target x86_64 -flto -fno-new-pass-manager %s 2>&1 | 
FileCheck --check-prefixes=LEGACY_LINK %s
+// RUN: %clang -### -target x86_64-linux -flto -fno-new-pass-manager %s 2>&1 | 
FileCheck --check-prefixes=LEGACY_LINK %s
+// RUN: %clang -### -target x86_64-linux -flto=thin 
-fno-experimental-new-pass-manager %s 2>&1 | FileCheck 
--check-prefixes=LEGACY_LINK %s
 
-// LEGACY_LINK-NOT: "-plugin-opt=new-pass-manager"
+// LEGACY_LINK: "-plugin-opt=no-new-pass-manager"
Index: clang/lib/Driver/ToolChains/CommonArgs.cpp
===================================================================
--- clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -595,12 +595,13 @@
                                          Path));
   }
 
-  // Need this flag to turn on new pass manager via Gold plugin.
+  // Pass an option to enable/disable the new pass manager.
   if (Args.hasFlag(options::OPT_fnew_pass_manager,
                    options::OPT_fno_new_pass_manager,
-                   /* Default */ LLVM_ENABLE_NEW_PASS_MANAGER)) {
+                   LLVM_ENABLE_NEW_PASS_MANAGER))
     CmdArgs.push_back("-plugin-opt=new-pass-manager");
-  }
+  else
+    CmdArgs.push_back("-plugin-opt=no-new-pass-manager");
 
   // Setup statistics file output.
   SmallString<128> StatsFile = getStatsFileName(Args, Output, Input, D);


Index: clang/test/Driver/fnew-pass-manager.c
===================================================================
--- clang/test/Driver/fnew-pass-manager.c
+++ clang/test/Driver/fnew-pass-manager.c
@@ -19,7 +19,7 @@
 
 // NEW_LINK:    "-plugin-opt=new-pass-manager"
 
-/// TODO Add the negative option and pass it to the linker.
-// RUN: %clang -### -target x86_64 -flto -fno-new-pass-manager %s 2>&1 | FileCheck --check-prefixes=LEGACY_LINK %s
+// RUN: %clang -### -target x86_64-linux -flto -fno-new-pass-manager %s 2>&1 | FileCheck --check-prefixes=LEGACY_LINK %s
+// RUN: %clang -### -target x86_64-linux -flto=thin -fno-experimental-new-pass-manager %s 2>&1 | FileCheck --check-prefixes=LEGACY_LINK %s
 
-// LEGACY_LINK-NOT: "-plugin-opt=new-pass-manager"
+// LEGACY_LINK: "-plugin-opt=no-new-pass-manager"
Index: clang/lib/Driver/ToolChains/CommonArgs.cpp
===================================================================
--- clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -595,12 +595,13 @@
                                          Path));
   }
 
-  // Need this flag to turn on new pass manager via Gold plugin.
+  // Pass an option to enable/disable the new pass manager.
   if (Args.hasFlag(options::OPT_fnew_pass_manager,
                    options::OPT_fno_new_pass_manager,
-                   /* Default */ LLVM_ENABLE_NEW_PASS_MANAGER)) {
+                   LLVM_ENABLE_NEW_PASS_MANAGER))
     CmdArgs.push_back("-plugin-opt=new-pass-manager");
-  }
+  else
+    CmdArgs.push_back("-plugin-opt=no-new-pass-manager");
 
   // Setup statistics file output.
   SmallString<128> StatsFile = getStatsFileName(Args, Output, Input, D);
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to