From f5f8c05c9591209d53475f1f760023b505e6669f Mon Sep 17 00:00:00 2001 From: Matthew Arsenault Date: Tue, 29 Oct 2024 20:45:40 -0400 Subject: [PATCH] Revert "Add clang-linker-wrapper option to specify the lto optimization pipeline" This reverts commit dff11ddddd771fc214d78da375475f0794491d72. Reason for revert: None done upstream Change-Id: I55394fe4de7be6c7a5b90e8edd118f7980989f3a --- clang/include/clang/Driver/Options.td | 6 --- clang/lib/Driver/ToolChains/Clang.cpp | 20 --------- .../test/Driver/amdgpu-openmp-toolchain-new.c | 10 ----- .../Driver/linker-wrapper-lto-opt-pipeline.c | 43 ------------------- .../ClangLinkerWrapper.cpp | 11 ----- .../clang-linker-wrapper/LinkerWrapperOpts.td | 5 --- flang/test/Driver/offload-lto-pipeline.f90 | 13 ------ 7 files changed, 108 deletions(-) delete mode 100644 clang/test/Driver/linker-wrapper-lto-opt-pipeline.c delete mode 100644 flang/test/Driver/offload-lto-pipeline.f90 diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 420967bfc80c7..cc3d3da46db0b 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -1236,12 +1236,6 @@ def offload_host_device : Flag<["--"], "offload-host-device">, Visibility<[ClangOption, FlangOption]>, HelpText<"Compile for both the offloading host and device (default).">; -def offload_lto_opt_pipeline_EQ : Joined<["-"], "offload-lto-opt-pipeline=">, - Visibility<[ClangOption, FlangOption]>, - HelpText<"Optimization pipeline to use during offload linking. Defaults to" - " 'default' where n is based on -O">; - - def gpu_use_aux_triple_only : Flag<["--"], "gpu-use-aux-triple-only">, InternalDriverOpt, HelpText<"Prepare '-aux-triple' only without populating " "'-aux-target-cpu' and '-aux-target-feature'.">; diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index db1b1d1551983..e5e60e2bd6b22 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -9729,26 +9729,6 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA, if (Args.getLastArg(options::OPT_save_temps_EQ)) CmdArgs.push_back("--save-temps"); - if (const Arg *A = - Args.getLastArg(options::OPT_offload_lto_opt_pipeline_EQ)) { - CmdArgs.push_back( - Args.MakeArgString(Twine("--lto-opt-pipeline=") + A->getValue())); - } else if (D.getOffloadLTOMode() == LTOK_Full || - D.getOffloadLTOMode() == LTOK_Thin || - D.getLTOMode() == LTOK_Full || D.getLTOMode() == LTOK_Thin) { - StringRef val; - // OffloadLTOMode takes precedence over LTOMode - if (D.getOffloadLTOMode() == LTOK_Full) - val = "lto"; - else if (D.getOffloadLTOMode() == LTOK_Thin) - val = "thinlto"; - else if (D.getLTOMode() == LTOK_Full) - val = "lto"; - else - val = "thinlto"; - CmdArgs.push_back(Args.MakeArgString("--lto-opt-pipeline=" + val)); - } - // Construct the link job so we can wrap around it. Linker->ConstructJob(C, JA, Output, Inputs, Args, LinkingOutput); const auto &LinkCommand = C.getJobs().getJobs().back(); diff --git a/clang/test/Driver/amdgpu-openmp-toolchain-new.c b/clang/test/Driver/amdgpu-openmp-toolchain-new.c index 31616957ba613..c6374b186d4d6 100644 --- a/clang/test/Driver/amdgpu-openmp-toolchain-new.c +++ b/clang/test/Driver/amdgpu-openmp-toolchain-new.c @@ -52,13 +52,3 @@ // RUN: %clang -### -target x86_64-pc-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx803 --no-opaque-offload-linker -lm --rocm-device-lib-path=%S/Inputs/rocm/amdgcn/bitcode %s 2>&1 | FileCheck %s --check-prefix=CHECK-LIB-DEVICE-NEW // CHECK-LIB-DEVICE-NEW: {{.*}}"-target-cpu" "gfx803"{{.*}}ocml.bc"{{.*}}oclc_daz_opt_on.bc"{{.*}}oclc_unsafe_math_off.bc"{{.*}}oclc_finite_only_off.bc"{{.*}}oclc_correctly_rounded_sqrt_on.bc"{{.*}}oclc_wavefrontsize64_on.bc"{{.*}}oclc_isa_version_803.bc" - -// RUN: CLANG_USE_LINKER_WRAPPER=1 %clang -### --target=x86_64-unknown-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx803 -nogpulib %s 2>&1 | FileCheck %s --check-prefix=CHECK-LTO-OPT-PL-00 -// CHECK-LTO-OPT-PL-00-NOT: clang-linker-wrapper{{.*}} "--lto-opt-pipeline" - -// RUN: CLANG_USE_LINKER_WRAPPER=1 %clang -### --target=x86_64-unknown-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx803 -nogpulib -offload-lto-opt-pipeline=lto %s 2>&1 | FileCheck %s --check-prefix=CHECK-LTO-OPT-PL-01 -// RUN: CLANG_USE_LINKER_WRAPPER=1 %clang -### --target=x86_64-unknown-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx803 -nogpulib -flto %s 2>&1 | FileCheck %s --check-prefix=CHECK-LTO-OPT-PL-01 -// CHECK-LTO-OPT-PL-01: clang-linker-wrapper{{.*}} "--lto-opt-pipeline=lto" - -// RUN: CLANG_USE_LINKER_WRAPPER=1 %clang -### --target=x86_64-unknown-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx803 -nogpulib "-offload-lto-opt-pipeline=default" %s 2>&1 | FileCheck %s --check-prefix=CHECK-LTO-OPT-PL-02 -// CHECK-LTO-OPT-PL-02: clang-linker-wrapper{{.*}} "--lto-opt-pipeline=default" diff --git a/clang/test/Driver/linker-wrapper-lto-opt-pipeline.c b/clang/test/Driver/linker-wrapper-lto-opt-pipeline.c deleted file mode 100644 index 3ad501ccf84ba..0000000000000 --- a/clang/test/Driver/linker-wrapper-lto-opt-pipeline.c +++ /dev/null @@ -1,43 +0,0 @@ -// REQUIRES: x86-registered-target -// REQUIRES: amdgpu-registered-target -// REQUIRES: system-linux - -// An externally visible variable so static libraries extract. -__attribute__((visibility("protected"), used)) int x; - -// RUN: %clang -cc1 %s -triple x86_64-unknown-linux-gnu -emit-obj -o %t.elf.o -// RUN: %clang -cc1 %s -triple amdgcn-amd-amdhsa -emit-llvm-bc -o %t.amdgpu.bc - -// RUN: clang-offload-packager -o %t.out \ -// RUN: --image=file=%t.elf.o,kind=openmp,triple=amdgcn-amd-amdhsa,arch=gfx908 -// RUN: %clang -cc1 %s -triple x86_64-unknown-linux-gnu -emit-obj -o %t.o -fembed-offload-object=%t.out - -// RUN: clang-linker-wrapper --lto-opt-pipeline=default \ -// RUN: --dry-run --wrapper-verbose --host-triple=x86_64-unknown-linux-gnu \ -// RUN: --linker-path=/usr/bin/ld %t.o -o a.out \ -// RUN: 2>&1 | FileCheck %s --check-prefix=LTO-OPT-PL-00 -// LTO-OPT-PL-00: "{{.*}}clang" {{.*}} -Xlinker --lto-newpm-passes=default - -// RUN: clang-linker-wrapper --lto-opt-pipeline=default --opt-level=O3 \ -// RUN: --dry-run --wrapper-verbose --host-triple=x86_64-unknown-linux-gnu \ -// RUN: --linker-path=/usr/bin/ld %t.o -o a.out \ -// RUN: 2>&1 | FileCheck %s --check-prefix=LTO-OPT-PL-01 -// LTO-OPT-PL-01: "{{.*}}clang" {{.*}} -Xlinker --lto-newpm-passes=default - -// RUN: clang-linker-wrapper --lto-opt-pipeline=lto \ -// RUN: --dry-run --wrapper-verbose --host-triple=x86_64-unknown-linux-gnu \ -// RUN: --linker-path=/usr/bin/ld %t.o -o a.out \ -// RUN: 2>&1 | FileCheck %s --check-prefix=LTO-OPT-PL-02 -// LTO-OPT-PL-02: "{{.*}}clang" {{.*}} -Xlinker --lto-newpm-passes=lto - -// RUN: clang-linker-wrapper --lto-opt-pipeline=lto --opt-level=O0 \ -// RUN: --dry-run --wrapper-verbose --host-triple=x86_64-unknown-linux-gnu \ -// RUN: --linker-path=/usr/bin/ld %t.o -o a.out \ -// RUN: 2>&1 | FileCheck %s --check-prefix=LTO-OPT-PL-03 -// LTO-OPT-PL-03: "{{.*}}clang" {{.*}} -Xlinker --lto-newpm-passes=lto - -// RUN: clang-linker-wrapper \ -// RUN: --dry-run --wrapper-verbose --host-triple=x86_64-unknown-linux-gnu \ -// RUN: --linker-path=/usr/bin/ld %t.o -o a.out \ -// RUN: 2>&1 | FileCheck %s --check-prefix=LTO-OPT-PL-04 -// LTO-OPT-PL-04-NOT: --lto-newpm-passes diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp index 5d04a86f0f6ee..ebafd7eb7774e 100644 --- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp +++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp @@ -570,17 +570,6 @@ Expected clang(ArrayRef InputFiles, const ArgList &Args) { for (StringRef Arg : Args.getAllArgValues(OPT_linker_arg_EQ)) CmdArgs.append({"-Xlinker", Args.MakeArgString(Arg)}); - - StringRef ltoOptPipeline = Args.getLastArgValue(OPT_lto_opt_pipeline_EQ, ""); - if (ltoOptPipeline == "lto" || ltoOptPipeline == "default") { - // for convenience, add "" - ltoOptPipeline = Args.MakeArgString(ltoOptPipeline + "<" + OptLevel + ">"); - } - if (ltoOptPipeline.size()) { - CmdArgs.append({"-Xlinker", Args.MakeArgString("--lto-newpm-passes=" + - ltoOptPipeline)}); - } - for (StringRef Arg : Args.getAllArgValues(OPT_compiler_arg_EQ)) CmdArgs.push_back(Args.MakeArgString(Arg)); diff --git a/clang/tools/clang-linker-wrapper/LinkerWrapperOpts.td b/clang/tools/clang-linker-wrapper/LinkerWrapperOpts.td index 80f7ab7806468..57d918db0a73c 100644 --- a/clang/tools/clang-linker-wrapper/LinkerWrapperOpts.td +++ b/clang/tools/clang-linker-wrapper/LinkerWrapperOpts.td @@ -71,11 +71,6 @@ def override_image : Joined<["--"], "override-image=">, Flags<[WrapperOnlyOption]>, MetaVarName<"">, HelpText<"Uses the provided file as if it were the output of the device link step">; -def lto_opt_pipeline_EQ : Joined<["--"], "lto-opt-pipeline=">, - Flags<[WrapperOnlyOption]>, - HelpText<"Optimization pipeline to use during LTO. Defaults to 'default'" - " where n is based on --opt-level">; - // Flags passed to the device linker. def arch_EQ : Joined<["--"], "arch=">, Flags<[DeviceOnlyOption, HelpHidden]>, MetaVarName<"">, diff --git a/flang/test/Driver/offload-lto-pipeline.f90 b/flang/test/Driver/offload-lto-pipeline.f90 deleted file mode 100644 index 99f497f91babb..0000000000000 --- a/flang/test/Driver/offload-lto-pipeline.f90 +++ /dev/null @@ -1,13 +0,0 @@ -! Test forwarding/generation of -lto-opt-pipeline to the clang-linker-wrapper - -! RUN: CLANG_USE_LINKER_WRAPPER=1 %flang -### %s -o %t 2>&1 -fopenmp --offload-arch=gfx90a --target=aarch64-unknown-linux-gnu -nogpulib | FileCheck %s --check-prefix=CHECK-LTO-OPT-PL-00 -! CHECK-LTO-OPT-PL-00-NOT: clang-linker-wrapper{{.*}} "--lto-opt-pipeline" - -! RUN: CLANG_USE_LINKER_WRAPPER=1 %flang -### %s -o %t 2>&1 -fopenmp --offload-arch=gfx90a --target=aarch64-unknown-linux-gnu -nogpulib -offload-lto-opt-pipeline=lto | FileCheck %s --check-prefix=CHECK-LTO-OPT-PL-01 -! RUN: CLANG_USE_LINKER_WRAPPER=1 %flang -### %s -o %t 2>&1 -fopenmp --offload-arch=gfx90a --target=aarch64-unknown-linux-gnu -nogpulib -flto | FileCheck %s --check-prefix=CHECK-LTO-OPT-PL-01 -! CHECK-LTO-OPT-PL-01: clang-linker-wrapper{{.*}} "--lto-opt-pipeline=lto" - -! RUN: CLANG_USE_LINKER_WRAPPER=1 %flang -### %s -o %t 2>&1 -fopenmp --offload-arch=gfx90a --target=aarch64-unknown-linux-gnu -nogpulib "-offload-lto-opt-pipeline=default" | FileCheck %s --check-prefix=CHECK-LTO-OPT-PL-02 -! CHECK-LTO-OPT-PL-02: clang-linker-wrapper{{.*}} "--lto-opt-pipeline=default" - -