[llvm] b9f1b8b - Revert "Support repeated machine outlining"
Jin Lin via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 17 10:04:07 PDT 2020
Author: Jin Lin
Date: 2020-03-17T10:03:27-07:00
New Revision: b9f1b8be1cb02f6159c27856e33996a7edb2bd18
URL: https://github.com/llvm/llvm-project/commit/b9f1b8be1cb02f6159c27856e33996a7edb2bd18
DIFF: https://github.com/llvm/llvm-project/commit/b9f1b8be1cb02f6159c27856e33996a7edb2bd18.diff
LOG: Revert "Support repeated machine outlining"
This reverts commit 1f93b162fc6bed2e7763ac6c35cf51741014400e.
Added:
Modified:
llvm/lib/CodeGen/MachineOutliner.cpp
Removed:
llvm/test/CodeGen/AArch64/machine-outliner-iterative.mir
################################################################################
diff --git a/llvm/lib/CodeGen/MachineOutliner.cpp b/llvm/lib/CodeGen/MachineOutliner.cpp
index d63f194f7e66..19bcb09530f7 100644
--- a/llvm/lib/CodeGen/MachineOutliner.cpp
+++ b/llvm/lib/CodeGen/MachineOutliner.cpp
@@ -97,13 +97,6 @@ static cl::opt<bool> EnableLinkOnceODROutlining(
cl::desc("Enable the machine outliner on linkonceodr functions"),
cl::init(false));
-// Set the number of times to repeatedly apply outlining.
-// Defaults to 1, but more repetitions can save additional size.
-static cl::opt<unsigned>
- NumRepeat("machine-outline-runs", cl::Hidden,
- cl::desc("The number of times to apply machine outlining"),
- cl::init(1));
-
namespace {
/// Represents an undefined index in the suffix tree.
@@ -849,9 +842,6 @@ struct MachineOutliner : public ModulePass {
/// linkonceodr linkage.
bool OutlineFromLinkOnceODRs = false;
- /// The current repeat number of machine outlining.
- unsigned OutlineRepeatedNum = 0;
-
/// Set to true if the outliner should run on all functions in the module
/// considered safe for outlining.
/// Set to true by default for compatibility with llc's -run-pass option.
@@ -910,11 +900,8 @@ struct MachineOutliner : public ModulePass {
InstructionMapper &Mapper,
unsigned Name);
- /// Calls runOnceOnModule NumRepeat times
- bool runOnModule(Module &M) override;
-
/// Calls 'doOutline()'.
- bool runOnceOnModule(Module &M, unsigned Iter);
+ bool runOnModule(Module &M) override;
/// Construct a suffix tree on the instructions in \p M and outline repeated
/// strings from that tree.
@@ -1112,13 +1099,7 @@ MachineFunction *MachineOutliner::createOutlinedFunction(
// Create the function name. This should be unique.
// FIXME: We should have a better naming scheme. This should be stable,
// regardless of changes to the outliner's cost model/traversal order.
- std::string FunctionName;
- if (OutlineRepeatedNum > 0)
- FunctionName = ("OUTLINED_FUNCTION_" + Twine(OutlineRepeatedNum + 1) + "_" +
- Twine(Name))
- .str();
- else
- FunctionName = ("OUTLINED_FUNCTION_" + Twine(Name)).str();
+ std::string FunctionName = ("OUTLINED_FUNCTION_" + Twine(Name)).str();
// Create the function using an IR-level function.
LLVMContext &C = M.getContext();
@@ -1457,14 +1438,12 @@ void MachineOutliner::emitInstrCountChangedRemark(
}
}
-bool MachineOutliner::runOnceOnModule(Module &M, unsigned Iter) {
+bool MachineOutliner::runOnModule(Module &M) {
// Check if there's anything in the module. If it's empty, then there's
// nothing to outline.
if (M.empty())
return false;
- OutlineRepeatedNum = Iter;
-
// Number to append to the current outlined function.
unsigned OutlinedFunctionNum = 0;
@@ -1528,23 +1507,3 @@ bool MachineOutliner::doOutline(Module &M, unsigned &OutlinedFunctionNum) {
return OutlinedSomething;
}
-
-// Apply machine outlining for NumRepeat times.
-bool MachineOutliner::runOnModule(Module &M) {
- if (NumRepeat < 1)
- report_fatal_error("Expect NumRepeat for machine outlining "
- "to be greater than or equal to 1!\n");
-
- bool Changed = false;
- for (unsigned I = 0; I < NumRepeat; I++) {
- if (!runOnceOnModule(M, I)) {
- LLVM_DEBUG(dbgs() << "Stopped outlining at iteration " << I
- << " because no changes were found.\n";);
- return Changed;
- }
- Changed = true;
- }
- LLVM_DEBUG(dbgs() << "Stopped outlining because iteration is "
- "equal to " << NumRepeat << "\n";);
- return Changed;
-}
diff --git a/llvm/test/CodeGen/AArch64/machine-outliner-iterative.mir b/llvm/test/CodeGen/AArch64/machine-outliner-iterative.mir
deleted file mode 100644
index eb06d2802c22..000000000000
--- a/llvm/test/CodeGen/AArch64/machine-outliner-iterative.mir
+++ /dev/null
@@ -1,148 +0,0 @@
-# RUN: llc -mtriple=aarch64--- -run-pass=machine-outliner -machine-outline-runs=2 -verify-machineinstrs %s -o - | FileCheck %s --check-prefix TWO-RUNS
-# RUN: llc -mtriple=aarch64--- -run-pass=machine-outliner -machine-outline-runs=1 -verify-machineinstrs %s -o - | FileCheck %s --check-prefix ONE-RUN
-# RUN: llc -mtriple=aarch64--- -run-pass=machine-outliner -machine-outline-runs=4 -verify-machineinstrs %s -o - | FileCheck %s --check-prefix FOUR-RUNS
-
-# Example of Repeated Instruction Sequence - Iterative Machine Outlining
-#
-#; define void @"$s12"(...) { define i64 @"$s5” (...) { define void @"$s13"(...) {
-# ... ... ...
-# %8 = load i1, i1* %7 %8 = load i1, i1* %7
-# %9 = load i4, i4*, %6 %9 = load i4, i4*, %6 %9 = load i4, i4*, %6
-# store i4 %9, i4* %5 store i4 %9, i4* %5 store i4 %9, i4* %5
-# ... ... ...
-# } } }
-#
-# After machine outliner (1st time)
-#
-# define void @"$s12"(...) { define i64 @"$s5” (...) { define void @"$s13"(...) {
-# ... ... ...
-# %8 = load i1, i1* %7 %8 = load i1, i1* %7
-# call void @outlined_function_1_1 call void @outlined_function_1_1 call void @outlined_function_1_1
-# ... ... ...
-# } } }
-#
-# After machine outliner (2nd time)
-#
-# define void @"$s12"(...) { define i64 @"$s5” (...) { define void @"$s13"(...) {
-# ... ... ...
-# call void @outlined_function_2_1 call void @outlined_function_1_1 call void @outlined_function_2_1
-# ... ... ...
-# } } }
-#
-# Check whether machine outliner can further find the outlining opportunity after machine
-# outlining has performed.
-#
---- |
- target triple = "aarch64-apple-darwin"
-
- declare void @foo() local_unnamed_addr
-
- declare void @widget() local_unnamed_addr
-
- ; Function Attrs: minsize noredzone optsize
- define void @baz.14() #0 {
- ret void
- }
-
- ; Function Attrs: minsize noredzone optsize
- define void @baz.15() #0 {
- ret void
- }
-
- ; Function Attrs: minsize noredzone optsize
- define void @baz.16() #0 {
- ret void
- }
-
- attributes #0 = { minsize noredzone optsize }
-...
----
-name: baz.14
-tracksRegLiveness: true
-stack:
- - { id: 0, offset: -8, size: 8 }
- - { id: 1, offset: -16, size: 8 }
-body: |
- bb.0:
- liveins: $x0, $x19, $lr
-
- early-clobber $sp = frame-setup STPXpre killed $lr, killed $x19, $sp, -2 :: (store 8 into %stack.1), (store 8 into %stack.0)
- frame-setup CFI_INSTRUCTION def_cfa_offset 16
- frame-setup CFI_INSTRUCTION offset $w19, -8
- frame-setup CFI_INSTRUCTION offset $w30, -16
- renamable $x19 = COPY $x0
- renamable $x0 = nuw ADDXri $x0, 48, 0
- $x1 = ADDXri $sp, 0, 0
- dead $w2 = MOVi32imm 33, implicit-def $x2
- $x3 = COPY $xzr
- BL @foo, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit $x0, implicit killed $x1, implicit killed $x2, implicit killed $x3, implicit-def $sp
- $x0 = COPY killed renamable $x19
- BL @widget, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit $x0, implicit-def $sp
- early-clobber $sp, $lr, $x19 = frame-destroy LDPXpost $sp, 2 :: (load 8 from %stack.1), (load 8 from %stack.0)
- RET_ReallyLR
-
-...
----
-name: baz.15
-stack:
- - { id: 0, offset: -8, size: 8 }
- - { id: 1, offset: -16, size: 8 }
-body: |
- bb.0:
- early-clobber $sp = frame-setup STPXpre killed $lr, killed $x19, $sp, -2 :: (store 8 into %stack.1), (store 8 into %stack.0)
- frame-setup CFI_INSTRUCTION def_cfa_offset 16
- frame-setup CFI_INSTRUCTION offset $w19, -8
- frame-setup CFI_INSTRUCTION offset $w30, -16
- renamable $x19 = COPY $x0
- renamable $x0 = nuw ADDXri killed renamable $x1, 16, 0
- $x1 = ADDXri $sp, 0, 0
- dead $w2 = MOVi32imm 33, implicit-def $x2
- $x3 = COPY $xzr
- BL @foo, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit $x0, implicit $x1, implicit killed $x2, implicit killed $x3, implicit-def $sp
- $x0 = COPY killed renamable $x19
- BL @widget, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit $x0, implicit-def $sp
- early-clobber $sp, $lr, $x19 = frame-destroy LDPXpost $sp, 2 :: (load 8 from %stack.1), (load 8 from %stack.0)
- RET_ReallyLR
-
-...
----
-name: baz.16
-tracksRegLiveness: true
-stack:
- - { id: 0, offset: -8, size: 8 }
- - { id: 1, offset: -16, size: 8 }
-body: |
- bb.0:
- liveins: $x0, $x19, $lr
-
- early-clobber $sp = frame-setup STPXpre killed $lr, killed $x19, $sp, -2 :: (store 8 into %stack.1), (store 8 into %stack.0)
- frame-setup CFI_INSTRUCTION def_cfa_offset 16
- frame-setup CFI_INSTRUCTION offset $w19, -8
- frame-setup CFI_INSTRUCTION offset $w30, -16
- renamable $x19 = COPY $x0
- renamable $x0 = nuw ADDXri $x0, 48, 0
- $x1 = ADDXri $sp, 0, 0
- dead $w2 = MOVi32imm 33, implicit-def $x2
- $x3 = COPY $xzr
- BL @foo, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit $x0, implicit killed $x1, implicit killed $x2, implicit killed $x3, implicit-def $sp
- $x0 = COPY killed renamable $x19
- BL @widget, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit $x0, implicit-def $sp
- early-clobber $sp, $lr, $x19 = frame-destroy LDPXpost $sp, 2 :: (load 8 from %stack.1), (load 8 from %stack.0)
- RET_ReallyLR
-
-...
-
-# TWO-RUNS: name: OUTLINED_FUNCTION_2_0
-# TWO-RUNS-DAG: bb.0:
-# TWO-RUNS-DAG: renamable $x19 = COPY $x0
-# TWO-RUNS-NEXT: renamable $x0 = nuw ADDXri $x0, 48, 0
-# TWO-RUNS-NEXT: TCRETURNdi @OUTLINED_FUNCTION_0, 0, implicit $sp
-#
-# The machine outliner is expected to stop at the 1st iteration for case ONE-RUN
-# since machine-outline-runs is specified as 1.
-# ONE-RUN-NOT: [[OUTLINED:OUTLINED_FUNCTION_2_[0-9]+]]
-#
-# The machine outliner is expected to stop at the 3rd iteration for case FOUR-RUNS
-# since the MIR has no change at the 3rd iteration.
-# FOUR-RUNS-NOT: [[OUTLINED:OUTLINED_FUNCTION_3_[0-9]+]]
-# FOUR-RUNS-NOT: [[OUTLINED:OUTLINED_FUNCTION_4_[0-9]+]]
More information about the llvm-commits
mailing list