[llvm] 7899a11 - Revert "[Darwin] Respect -fno-unroll-loops during LTO."
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 30 07:36:53 PDT 2020
Author: Florian Hahn
Date: 2020-03-30T15:20:30+01:00
New Revision: 7899a111ea1160e2ae0aae42de37b14a0b75d71b
URL: https://github.com/llvm/llvm-project/commit/7899a111ea1160e2ae0aae42de37b14a0b75d71b
DIFF: https://github.com/llvm/llvm-project/commit/7899a111ea1160e2ae0aae42de37b14a0b75d71b.diff
LOG: 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.
Added:
Modified:
clang/lib/Driver/ToolChains/Darwin.cpp
llvm/lib/LTO/LTOCodeGenerator.cpp
Removed:
clang/test/Driver/darwin-ld-lto-fno-unroll-loops.c
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 951c71bff00e..451d0d206d07 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 b248898a89f5..000000000000
--- 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 d2ae956b7823..a8a7877f66da 100644
--- a/llvm/lib/LTO/LTOCodeGenerator.cpp
+++ b/llvm/lib/LTO/LTOCodeGenerator.cpp
@@ -109,10 +109,6 @@ cl::opt<std::string> LTOStatsFile(
cl::Hidden);
}
-cl::opt<bool> 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 3ac4c285ffe7..000000000000
--- 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
-}
More information about the llvm-commits
mailing list