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