From 7899a111ea1160e2ae0aae42de37b14a0b75d71b Mon Sep 17 00:00:00 2001 From: Florian Hahn Date: Mon, 30 Mar 2020 15:20:30 +0100 Subject: [PATCH] Revert "[Darwin] Respect -fno-unroll-loops during LTO." As per post-commit comment at https://reviews.llvm.org/D76916, this should better be done at the TU level. This reverts commit 9ce198d6ed371399e9bd9ba8b48fbab0f4e60240. --- clang/lib/Driver/ToolChains/Darwin.cpp | 6 ---- clang/test/Driver/darwin-ld-lto-fno-unroll-loops.c | 17 ----------- llvm/lib/LTO/LTOCodeGenerator.cpp | 5 ---- .../test/tools/llvm-lto/fno-unroll-loops-option.ll | 34 ---------------------- 4 files changed, 62 deletions(-) delete mode 100644 clang/test/Driver/darwin-ld-lto-fno-unroll-loops.c delete mode 100644 llvm/test/tools/llvm-lto/fno-unroll-loops-option.ll diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp b/clang/lib/Driver/ToolChains/Darwin.cpp index 951c71b..451d0d2 100644 --- a/clang/lib/Driver/ToolChains/Darwin.cpp +++ b/clang/lib/Driver/ToolChains/Darwin.cpp @@ -543,12 +543,6 @@ void darwin::Linker::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back(Args.MakeArgString("-lto-stats-file=" + StatsFile.str())); } - // Forward -fno-unroll-loops to the linker in LTO. - if (Args.hasArg(options::OPT_fno_unroll_loops)) { - CmdArgs.push_back("-mllvm"); - CmdArgs.push_back(Args.MakeArgString("-lto-no-unroll-loops")); - } - // It seems that the 'e' option is completely ignored for dynamic executables // (the default), and with static executables, the last one wins, as expected. Args.AddAllArgs(CmdArgs, {options::OPT_d_Flag, options::OPT_s, options::OPT_t, diff --git a/clang/test/Driver/darwin-ld-lto-fno-unroll-loops.c b/clang/test/Driver/darwin-ld-lto-fno-unroll-loops.c deleted file mode 100644 index b248898..0000000 --- a/clang/test/Driver/darwin-ld-lto-fno-unroll-loops.c +++ /dev/null @@ -1,17 +0,0 @@ -// REQUIRES: system-darwin - -// RUN: mkdir -p %t/bin -// RUN: mkdir -p %t/lib -// RUN: touch %t/lib/libLTO.dylib - -// Check that ld gets "-lto-no-unroll-loops" when -fno-unroll-loops is passed. -// -// RUN: %clang -target x86_64-apple-darwin10 %s -fno-unroll-loops -flto=full -### 2>&1 | \ -// RUN: FileCheck --check-prefix=NOUNROLL %s - -// NOUNROLL: "-mllvm" "-lto-no-unroll-loops" -// -// RUN: %clang -target x86_64-apple-darwin10 %s -flto=full -### 2>&1 | \ -// RUN: FileCheck --check-prefix=UNROLL %s - -// UNROLL-NOT: -lto-no-unroll-loops diff --git a/llvm/lib/LTO/LTOCodeGenerator.cpp b/llvm/lib/LTO/LTOCodeGenerator.cpp index d2ae956..a8a7877 100644 --- a/llvm/lib/LTO/LTOCodeGenerator.cpp +++ b/llvm/lib/LTO/LTOCodeGenerator.cpp @@ -109,10 +109,6 @@ cl::opt LTOStatsFile( cl::Hidden); } -cl::opt LTONoUnrollLoops("lto-no-unroll-loops", - cl::desc("Disable unrolling during LTO."), - cl::Hidden, cl::init(false)); - LTOCodeGenerator::LTOCodeGenerator(LLVMContext &Context) : Context(Context), MergedModule(new Module("ld-temp.o", Context)), TheLinker(new Linker(*MergedModule)) { @@ -574,7 +570,6 @@ bool LTOCodeGenerator::optimize(bool DisableVerify, bool DisableInline, Triple TargetTriple(TargetMach->getTargetTriple()); PassManagerBuilder PMB; - PMB.DisableUnrollLoops = LTONoUnrollLoops; PMB.DisableGVNLoadPRE = DisableGVNLoadPRE; PMB.LoopVectorize = !DisableVectorization; PMB.SLPVectorize = !DisableVectorization; diff --git a/llvm/test/tools/llvm-lto/fno-unroll-loops-option.ll b/llvm/test/tools/llvm-lto/fno-unroll-loops-option.ll deleted file mode 100644 index 3ac4c28..0000000 --- a/llvm/test/tools/llvm-lto/fno-unroll-loops-option.ll +++ /dev/null @@ -1,34 +0,0 @@ -; REQUIRES: asserts - -; RUN: llvm-as < %s > %t1.bc - -; Build with unrolling disabled (-lto-no-unroll-loops). -; RUN: llvm-lto %t1.bc -o %t.nounroll.o -lto-no-unroll-loops --exported-symbol=foo -save-merged-module -; RUN: llvm-dis -o - %t.nounroll.o.merged.bc | FileCheck --check-prefix=NOUNROLL %s - -; NOUNROLL: br label %loop -; NOUNROLL: br i1 %ec, label %exit, label %loop - -; Build with unrolling enabled (by not passing -lto-no-unroll-loops). All -; branches should be gone. -; RUN: llvm-lto %t1.bc -o %t.nounroll.o --exported-symbol=foo -save-merged-module -; RUN: llvm-dis -o - %t.nounroll.o.merged.bc | FileCheck --check-prefix=UNROLL %s - -; UNROLL-NOT: br - -define void @foo(i32* %ptr) { - -entry: - br label %loop - -loop: - %iv = phi i32 [ 0, %entry], [ %iv.next, %loop ] - %iv.ptr = getelementptr i32, i32* %ptr, i32 %iv - store i32 %iv, i32* %iv.ptr - %iv.next = add i32 %iv, 1 - %ec = icmp eq i32 %iv.next, 10 - br i1 %ec, label %exit, label %loop - -exit: - ret void -} -- 2.7.4