forked from OSchip/llvm-project
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 9ce198d6ed
.
This commit is contained in:
parent
3806b38045
commit
7899a111ea
|
@ -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,
|
||||
|
|
|
@ -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
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
}
|
Loading…
Reference in New Issue