[llvm] 23cc36e - llvm-reduce: Use consistent ReductionFunc types
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 19 17:35:33 PST 2023
Author: Matt Arsenault
Date: 2023-01-19T21:35:26-04:00
New Revision: 23cc36e4765912a1bcdbbc3fb8b0976a06dea043
URL: https://github.com/llvm/llvm-project/commit/23cc36e4765912a1bcdbbc3fb8b0976a06dea043
DIFF: https://github.com/llvm/llvm-project/commit/23cc36e4765912a1bcdbbc3fb8b0976a06dea043.diff
LOG: llvm-reduce: Use consistent ReductionFunc types
Some of these were relying on ReducerWorkItem's operator Module&.
Added:
Modified:
llvm/tools/llvm-reduce/ReducerWorkItem.h
llvm/tools/llvm-reduce/TestRunner.cpp
llvm/tools/llvm-reduce/deltas/ReduceAliases.cpp
llvm/tools/llvm-reduce/deltas/ReduceArguments.cpp
llvm/tools/llvm-reduce/deltas/ReduceAttributes.cpp
llvm/tools/llvm-reduce/deltas/ReduceBasicBlocks.cpp
llvm/tools/llvm-reduce/deltas/ReduceDIMetadata.cpp
llvm/tools/llvm-reduce/deltas/ReduceFunctionBodies.cpp
llvm/tools/llvm-reduce/deltas/ReduceFunctions.cpp
llvm/tools/llvm-reduce/deltas/ReduceGlobalObjects.cpp
llvm/tools/llvm-reduce/deltas/ReduceGlobalValues.cpp
llvm/tools/llvm-reduce/deltas/ReduceGlobalVarInitializers.cpp
llvm/tools/llvm-reduce/deltas/ReduceGlobalVars.cpp
llvm/tools/llvm-reduce/deltas/ReduceInstructionFlags.cpp
llvm/tools/llvm-reduce/deltas/ReduceInstructions.cpp
llvm/tools/llvm-reduce/deltas/ReduceInvokes.cpp
llvm/tools/llvm-reduce/deltas/ReduceMemoryOperations.cpp
llvm/tools/llvm-reduce/deltas/ReduceMetadata.cpp
llvm/tools/llvm-reduce/deltas/ReduceModuleData.cpp
llvm/tools/llvm-reduce/deltas/ReduceOpcodes.cpp
llvm/tools/llvm-reduce/deltas/ReduceOperandBundles.cpp
llvm/tools/llvm-reduce/deltas/ReduceOperands.cpp
llvm/tools/llvm-reduce/deltas/ReduceOperandsSkip.cpp
llvm/tools/llvm-reduce/deltas/ReduceOperandsToArgs.cpp
llvm/tools/llvm-reduce/deltas/ReduceSpecialGlobals.cpp
llvm/tools/llvm-reduce/deltas/ReduceUsingSimplifyCFG.cpp
llvm/tools/llvm-reduce/deltas/RunIRPasses.cpp
llvm/tools/llvm-reduce/deltas/SimplifyInstructions.cpp
llvm/tools/llvm-reduce/deltas/StripDebugInfo.cpp
Removed:
################################################################################
diff --git a/llvm/tools/llvm-reduce/ReducerWorkItem.h b/llvm/tools/llvm-reduce/ReducerWorkItem.h
index ec19e3ab5b01c..45efaefd12926 100644
--- a/llvm/tools/llvm-reduce/ReducerWorkItem.h
+++ b/llvm/tools/llvm-reduce/ReducerWorkItem.h
@@ -26,6 +26,11 @@ class ReducerWorkItem {
bool isMIR() const { return MMI != nullptr; }
+ LLVMContext &getContext() {
+ return M->getContext();
+ }
+
+ Module &getModule() { return *M; }
const Module &getModule() const { return *M; }
void print(raw_ostream &ROS, void *p = nullptr) const;
diff --git a/llvm/tools/llvm-reduce/TestRunner.cpp b/llvm/tools/llvm-reduce/TestRunner.cpp
index 286eb2accbc41..c8849de9ed4af 100644
--- a/llvm/tools/llvm-reduce/TestRunner.cpp
+++ b/llvm/tools/llvm-reduce/TestRunner.cpp
@@ -91,7 +91,7 @@ void writeBitcode(const ReducerWorkItem &M, raw_ostream &OutStream) {
Index = std::make_unique<ModuleSummaryIndex>(
buildModuleSummaryIndex(M, nullptr, &PSI));
}
- WriteBitcodeToFile(M, OutStream, Index.get());
+ WriteBitcodeToFile(M.getModule(), OutStream, Index.get());
}
}
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceAliases.cpp b/llvm/tools/llvm-reduce/deltas/ReduceAliases.cpp
index db5376f5933b9..d889b3ebebe6b 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceAliases.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceAliases.cpp
@@ -22,8 +22,8 @@ using namespace llvm;
/// Removes all aliases aren't inside any of the
/// desired Chunks.
-static void extractAliasesFromModule(Oracle &O, Module &Program) {
- for (auto &GA : make_early_inc_range(Program.aliases())) {
+static void extractAliasesFromModule(Oracle &O, ReducerWorkItem &Program) {
+ for (auto &GA : make_early_inc_range(Program.getModule().aliases())) {
if (!O.shouldKeep()) {
GA.replaceAllUsesWith(GA.getAliasee());
GA.eraseFromParent();
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceArguments.cpp b/llvm/tools/llvm-reduce/deltas/ReduceArguments.cpp
index e251256cc0ebb..10bbc64340325 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceArguments.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceArguments.cpp
@@ -56,7 +56,8 @@ static bool shouldRemoveArguments(const Function &F) {
/// Removes out-of-chunk arguments from functions, and modifies their calls
/// accordingly. It also removes allocations of out-of-chunk arguments.
-static void extractArgumentsFromModule(Oracle &O, Module &Program) {
+static void extractArgumentsFromModule(Oracle &O, ReducerWorkItem &WorkItem) {
+ Module &Program = WorkItem.getModule();
std::vector<Argument *> InitArgsToKeep;
std::vector<Function *> Funcs;
// Get inside-chunk arguments, as well as their parent function
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceAttributes.cpp b/llvm/tools/llvm-reduce/deltas/ReduceAttributes.cpp
index 036f0fbc014d7..df87ce7cfa0f8 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceAttributes.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceAttributes.cpp
@@ -146,9 +146,9 @@ class AttributeRemapper : public InstVisitor<AttributeRemapper> {
} // namespace
/// Removes out-of-chunk attributes from module.
-static void extractAttributesFromModule(Oracle &O, Module &Program) {
- AttributeRemapper R(O, Program.getContext());
- R.visit(Program);
+static void extractAttributesFromModule(Oracle &O, ReducerWorkItem &WorkItem) {
+ AttributeRemapper R(O, WorkItem.getContext());
+ R.visit(WorkItem.getModule());
}
void llvm::reduceAttributesDeltaPass(TestRunner &Test) {
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceBasicBlocks.cpp b/llvm/tools/llvm-reduce/deltas/ReduceBasicBlocks.cpp
index cb518a9c4313f..6858dac9aeac4 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceBasicBlocks.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceBasicBlocks.cpp
@@ -132,11 +132,11 @@ removeUninterestingBBsFromSwitch(SwitchInst &SwInst,
/// Removes out-of-chunk arguments from functions, and modifies their calls
/// accordingly. It also removes allocations of out-of-chunk arguments.
-static void extractBasicBlocksFromModule(Oracle &O, Module &Program) {
+static void extractBasicBlocksFromModule(Oracle &O, ReducerWorkItem &WorkItem) {
DenseSet<BasicBlock *> BBsToDelete;
df_iterator_default_set<BasicBlock *> Reachable;
- for (auto &F : Program) {
+ for (auto &F : WorkItem.getModule()) {
if (F.empty())
continue;
@@ -183,11 +183,12 @@ void llvm::reduceBasicBlocksDeltaPass(TestRunner &Test) {
runDeltaPass(Test, extractBasicBlocksFromModule, "Reducing Basic Blocks");
}
-static void removeUnreachableBasicBlocksFromModule(Oracle &O, Module &M) {
+static void removeUnreachableBasicBlocksFromModule(Oracle &O,
+ ReducerWorkItem &WorkItem) {
std::vector<BasicBlock *> DeadBlocks;
df_iterator_default_set<BasicBlock *> Reachable;
- for (Function &F : M) {
+ for (Function &F : WorkItem.getModule()) {
if (F.empty())
continue;
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceDIMetadata.cpp b/llvm/tools/llvm-reduce/deltas/ReduceDIMetadata.cpp
index 6ae535fdfd13d..1ac580b9e5994 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceDIMetadata.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceDIMetadata.cpp
@@ -78,7 +78,9 @@ void identifyUninterestingMDNodes(Oracle &O, MDNodeList &MDs) {
}
}
-static void extractDIMetadataFromModule(Oracle &O, Module &Program) {
+static void extractDIMetadataFromModule(Oracle &O, ReducerWorkItem &WorkItem) {
+ Module &Program = WorkItem.getModule();
+
MDNodeList MDs;
// Collect all !dbg metadata attachments.
for (const auto &DC : Program.debug_compile_units())
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceFunctionBodies.cpp b/llvm/tools/llvm-reduce/deltas/ReduceFunctionBodies.cpp
index 98a280f74000d..21875ba00cf8b 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceFunctionBodies.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceFunctionBodies.cpp
@@ -21,9 +21,10 @@ using namespace llvm;
/// Removes all the bodies of defined functions that aren't inside any of the
/// desired Chunks.
-static void extractFunctionBodiesFromModule(Oracle &O, Module &Program) {
+static void extractFunctionBodiesFromModule(Oracle &O,
+ ReducerWorkItem &WorkItem) {
// Delete out-of-chunk function bodies
- for (auto &F : Program) {
+ for (auto &F : WorkItem.getModule()) {
if (!F.isDeclaration() && !hasAliasUse(F) && !O.shouldKeep()) {
F.deleteBody();
F.setComdat(nullptr);
@@ -36,8 +37,8 @@ void llvm::reduceFunctionBodiesDeltaPass(TestRunner &Test) {
"Reducing Function Bodies");
}
-static void reduceFunctionData(Oracle &O, Module &M) {
- for (Function &F : M) {
+static void reduceFunctionData(Oracle &O, ReducerWorkItem &WorkItem) {
+ for (Function &F : WorkItem.getModule()) {
if (F.hasPersonalityFn()) {
if (none_of(F,
[](const BasicBlock &BB) {
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceFunctions.cpp b/llvm/tools/llvm-reduce/deltas/ReduceFunctions.cpp
index 0c1ec50db6ed1..05127ec7b9c80 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceFunctions.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceFunctions.cpp
@@ -25,7 +25,9 @@ using namespace llvm;
/// Removes all the Defined Functions
/// that aren't inside any of the desired Chunks.
-static void extractFunctionsFromModule(Oracle &O, Module &Program) {
+static void extractFunctionsFromModule(Oracle &O, ReducerWorkItem &WorkItem) {
+ Module &Program = WorkItem.getModule();
+
// Record all out-of-chunk functions.
SmallPtrSet<Constant *, 8> FuncsToRemove;
for (Function &F : Program.functions()) {
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceGlobalObjects.cpp b/llvm/tools/llvm-reduce/deltas/ReduceGlobalObjects.cpp
index 8677a72a4a3db..1d1463a055bd8 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceGlobalObjects.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceGlobalObjects.cpp
@@ -19,8 +19,8 @@ static bool shouldReduceAlign(GlobalObject &GO) {
static bool shouldReduceComdat(GlobalObject &GO) { return GO.hasComdat(); }
-static void reduceGOs(Oracle &O, Module &Program) {
- for (auto &GO : Program.global_objects()) {
+static void reduceGOs(Oracle &O, ReducerWorkItem &Program) {
+ for (auto &GO : Program.getModule().global_objects()) {
if (shouldReduceSection(GO) && !O.shouldKeep())
GO.setSection("");
if (shouldReduceAlign(GO) && !O.shouldKeep())
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceGlobalValues.cpp b/llvm/tools/llvm-reduce/deltas/ReduceGlobalValues.cpp
index eb0ea4e78ba8a..470d5ba97ea66 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceGlobalValues.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceGlobalValues.cpp
@@ -37,8 +37,8 @@ static bool shouldReduceThreadLocal(GlobalValue &GV) {
return GV.isThreadLocal();
}
-static void reduceGVs(Oracle &O, Module &Program) {
- for (auto &GV : Program.global_values()) {
+static void reduceGVs(Oracle &O, ReducerWorkItem &Program) {
+ for (auto &GV : Program.getModule().global_values()) {
if (shouldReduceDSOLocal(GV) && !O.shouldKeep())
GV.setDSOLocal(false);
if (shouldReduceVisibility(GV) && !O.shouldKeep()) {
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceGlobalVarInitializers.cpp b/llvm/tools/llvm-reduce/deltas/ReduceGlobalVarInitializers.cpp
index 9765b38d9ce43..4c7125217f252 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceGlobalVarInitializers.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceGlobalVarInitializers.cpp
@@ -18,9 +18,9 @@
using namespace llvm;
/// Removes all the Initialized GVs that aren't inside the desired Chunks.
-static void extractGVsFromModule(Oracle &O, Module &Program) {
+static void extractGVsFromModule(Oracle &O, ReducerWorkItem &WorkItem) {
// Drop initializers of out-of-chunk GVs
- for (auto &GV : Program.globals())
+ for (auto &GV : WorkItem.getModule().globals())
if (GV.hasInitializer() && !O.shouldKeep()) {
GV.setInitializer(nullptr);
GV.setLinkage(GlobalValue::LinkageTypes::ExternalLinkage);
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceGlobalVars.cpp b/llvm/tools/llvm-reduce/deltas/ReduceGlobalVars.cpp
index 4e25c0c82c9fa..b448081ee1a27 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceGlobalVars.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceGlobalVars.cpp
@@ -23,7 +23,9 @@ static bool shouldAlwaysKeep(const GlobalVariable &GV) {
}
/// Removes all the GVs that aren't inside the desired Chunks.
-static void extractGVsFromModule(Oracle &O, Module &Program) {
+static void extractGVsFromModule(Oracle &O, ReducerWorkItem &WorkItem) {
+ Module &Program = WorkItem.getModule();
+
// Get GVs inside desired chunks
std::vector<Constant *> InitGVsToKeep;
for (auto &GV : Program.globals()) {
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceInstructionFlags.cpp b/llvm/tools/llvm-reduce/deltas/ReduceInstructionFlags.cpp
index 78bbaf9a75c23..e0f251708a50f 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceInstructionFlags.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceInstructionFlags.cpp
@@ -17,8 +17,8 @@
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Operator.h"
-static void reduceFlagsInModule(Oracle &O, Module &Mod) {
- for (Function &F : Mod) {
+static void reduceFlagsInModule(Oracle &O, ReducerWorkItem &WorkItem) {
+ for (Function &F : WorkItem.getModule()) {
for (Instruction &I : instructions(F)) {
if (auto *OBO = dyn_cast<OverflowingBinaryOperator>(&I)) {
if (OBO->hasNoSignedWrap() && !O.shouldKeep())
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceInstructions.cpp b/llvm/tools/llvm-reduce/deltas/ReduceInstructions.cpp
index 8dd9872da12ac..7dfe028d75132 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceInstructions.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceInstructions.cpp
@@ -28,7 +28,8 @@ static bool shouldAlwaysKeep(const Instruction &I) {
/// Removes out-of-chunk arguments from functions, and modifies their calls
/// accordingly. It also removes allocations of out-of-chunk arguments.
-static void extractInstrFromModule(Oracle &O, Module &Program) {
+static void extractInstrFromModule(Oracle &O, ReducerWorkItem &WorkItem) {
+ Module &Program = WorkItem.getModule();
std::vector<Instruction *> InitInstToKeep;
for (auto &F : Program)
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceInvokes.cpp b/llvm/tools/llvm-reduce/deltas/ReduceInvokes.cpp
index 7c7d94ba1fbf8..421108a186818 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceInvokes.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceInvokes.cpp
@@ -27,8 +27,8 @@ static void reduceInvokesInFunction(Oracle &O, Function &F) {
// reduction.
}
-static void reduceInvokesInModule(Oracle &O, Module &Mod) {
- for (Function &F : Mod) {
+static void reduceInvokesInModule(Oracle &O, ReducerWorkItem &WorkItem) {
+ for (Function &F : WorkItem.getModule()) {
if (F.hasPersonalityFn())
reduceInvokesInFunction(O, F);
}
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceMemoryOperations.cpp b/llvm/tools/llvm-reduce/deltas/ReduceMemoryOperations.cpp
index b64b455aafb45..c1db3441eca6e 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceMemoryOperations.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceMemoryOperations.cpp
@@ -34,8 +34,8 @@ static void removeVolatileInFunction(Oracle &O, Function &F) {
}
}
-static void removeVolatileInModule(Oracle &O, Module &Mod) {
- for (Function &F : Mod)
+static void removeVolatileInModule(Oracle &O, ReducerWorkItem &WorkItem) {
+ for (Function &F : WorkItem.getModule())
removeVolatileInFunction(O, F);
}
@@ -64,8 +64,9 @@ static void reduceAtomicSyncScopesInFunction(Oracle &O, Function &F) {
}
}
-static void reduceAtomicSyncScopesInModule(Oracle &O, Module &Mod) {
- for (Function &F : Mod)
+static void reduceAtomicSyncScopesInModule(Oracle &O,
+ ReducerWorkItem &WorkItem) {
+ for (Function &F : WorkItem.getModule())
reduceAtomicSyncScopesInFunction(O, F);
}
@@ -97,8 +98,8 @@ static void reduceAtomicOrderingInFunction(Oracle &O, Function &F) {
}
}
-static void reduceAtomicOrderingInModule(Oracle &O, Module &Mod) {
- for (Function &F : Mod)
+static void reduceAtomicOrderingInModule(Oracle &O, ReducerWorkItem &WorkItem) {
+ for (Function &F : WorkItem.getModule())
reduceAtomicOrderingInFunction(O, F);
}
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceMetadata.cpp b/llvm/tools/llvm-reduce/deltas/ReduceMetadata.cpp
index bec39ad751155..d491858db590e 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceMetadata.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceMetadata.cpp
@@ -42,7 +42,9 @@ static constexpr StringLiteral ListNamedMetadata[] = {
};
/// Remove unneeded arguments to named metadata.
-static void reduceNamedMetadataOperands(Oracle &O, Module &M) {
+static void reduceNamedMetadataOperands(Oracle &O, ReducerWorkItem &WorkItem) {
+ Module &M = WorkItem.getModule();
+
for (StringRef MDName : ListNamedMetadata) {
NamedMDNode *NamedNode = M.getNamedMetadata(MDName);
if (!NamedNode)
@@ -67,7 +69,9 @@ static void reduceNamedMetadataOperands(Oracle &O, Module &M) {
/// Removes all the Named and Unnamed Metadata Nodes, as well as any debug
/// functions that aren't inside the desired Chunks.
-static void extractMetadataFromModule(Oracle &O, Module &Program) {
+static void extractMetadataFromModule(Oracle &O, ReducerWorkItem &WorkItem) {
+ Module &Program = WorkItem.getModule();
+
// Get out-of-chunk Named metadata nodes
SmallVector<NamedMDNode *> NamedNodesToDelete;
for (NamedMDNode &MD : Program.named_metadata())
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceModuleData.cpp b/llvm/tools/llvm-reduce/deltas/ReduceModuleData.cpp
index 7c31437c37d26..17930abe6dbfe 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceModuleData.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceModuleData.cpp
@@ -14,7 +14,9 @@
using namespace llvm;
-static void clearModuleData(Oracle &O, Module &Program) {
+static void clearModuleData(Oracle &O, ReducerWorkItem &WorkItem) {
+ Module &Program = WorkItem.getModule();
+
if (!Program.getModuleIdentifier().empty() && !O.shouldKeep())
Program.setModuleIdentifier("");
if (!Program.getSourceFileName().empty() && !O.shouldKeep())
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceOpcodes.cpp b/llvm/tools/llvm-reduce/deltas/ReduceOpcodes.cpp
index 4acc77bb883f4..77131008dee40 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceOpcodes.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceOpcodes.cpp
@@ -253,7 +253,9 @@ static Value *reduceInstruction(Oracle &O, Module &M, Instruction &I) {
return nullptr;
}
-static void replaceOpcodesInModule(Oracle &O, Module &Mod) {
+static void replaceOpcodesInModule(Oracle &O, ReducerWorkItem &WorkItem) {
+ Module &Mod = WorkItem.getModule();
+
for (Function &F : Mod) {
for (BasicBlock &BB : F)
for (Instruction &I : make_early_inc_range(BB)) {
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceOperandBundles.cpp b/llvm/tools/llvm-reduce/deltas/ReduceOperandBundles.cpp
index 0998d6b842369..6f9cafb8f73a5 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceOperandBundles.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceOperandBundles.cpp
@@ -95,7 +95,9 @@ static void maybeRewriteCallWithDifferentBundles(
}
/// Removes out-of-chunk operand bundles from calls.
-static void extractOperandBundesFromModule(Oracle &O, Module &Program) {
+static void extractOperandBundesFromModule(Oracle &O,
+ ReducerWorkItem &WorkItem) {
+ Module &Program = WorkItem.getModule();
OperandBundleRemapper R(O);
R.visit(Program);
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceOperands.cpp b/llvm/tools/llvm-reduce/deltas/ReduceOperands.cpp
index 98d068f6b1344..6bf84f2985dc2 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceOperands.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceOperands.cpp
@@ -18,8 +18,10 @@ using namespace llvm;
using namespace PatternMatch;
static void
-extractOperandsFromModule(Oracle &O, Module &Program,
+extractOperandsFromModule(Oracle &O, ReducerWorkItem &WorkItem,
function_ref<Value *(Use &)> ReduceValue) {
+ Module &Program = WorkItem.getModule();
+
for (auto &F : Program.functions()) {
for (auto &I : instructions(&F)) {
if (PHINode *Phi = dyn_cast<PHINode>(&I)) {
@@ -118,8 +120,8 @@ void llvm::reduceOperandsOneDeltaPass(TestRunner &Test) {
};
runDeltaPass(
Test,
- [ReduceValue](Oracle &O, Module &Program) {
- extractOperandsFromModule(O, Program, ReduceValue);
+ [ReduceValue](Oracle &O, ReducerWorkItem &WorkItem) {
+ extractOperandsFromModule(O, WorkItem, ReduceValue);
},
"Reducing Operands to one");
}
@@ -137,7 +139,7 @@ void llvm::reduceOperandsZeroDeltaPass(TestRunner &Test) {
};
runDeltaPass(
Test,
- [ReduceValue](Oracle &O, Module &Program) {
+ [ReduceValue](Oracle &O, ReducerWorkItem &Program) {
extractOperandsFromModule(O, Program, ReduceValue);
},
"Reducing Operands to zero");
@@ -165,7 +167,7 @@ void llvm::reduceOperandsNaNDeltaPass(TestRunner &Test) {
};
runDeltaPass(
Test,
- [ReduceValue](Oracle &O, Module &Program) {
+ [ReduceValue](Oracle &O, ReducerWorkItem &Program) {
extractOperandsFromModule(O, Program, ReduceValue);
},
"Reducing Operands to NaN");
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceOperandsSkip.cpp b/llvm/tools/llvm-reduce/deltas/ReduceOperandsSkip.cpp
index 8120bfa6b4eed..a634c3a523a3a 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceOperandsSkip.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceOperandsSkip.cpp
@@ -187,7 +187,9 @@ opportunities(Function &F,
}
}
-static void extractOperandsFromModule(Oracle &O, Module &Program) {
+static void extractOperandsFromModule(Oracle &O, ReducerWorkItem &WorkItem) {
+ Module &Program = WorkItem.getModule();
+
for (Function &F : Program.functions()) {
SmallVector<std::pair<Use *, Value *>> Replacements;
opportunities(F, [&](Use &Op, ArrayRef<Value *> Candidates) {
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceOperandsToArgs.cpp b/llvm/tools/llvm-reduce/deltas/ReduceOperandsToArgs.cpp
index c77cccb719a65..0f949ab1fe897 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceOperandsToArgs.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceOperandsToArgs.cpp
@@ -173,7 +173,9 @@ static void substituteOperandWithArgument(Function *OldF,
NewF->setName(FName);
}
-static void reduceOperandsToArgs(Oracle &O, Module &Program) {
+static void reduceOperandsToArgs(Oracle &O, ReducerWorkItem &WorkItem) {
+ Module &Program = WorkItem.getModule();
+
SmallVector<Use *> OperandsToReduce;
for (Function &F : make_early_inc_range(Program.functions())) {
if (!canReplaceFunction(&F))
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceSpecialGlobals.cpp b/llvm/tools/llvm-reduce/deltas/ReduceSpecialGlobals.cpp
index 0e356953b4e2f..5b124a4052960 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceSpecialGlobals.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceSpecialGlobals.cpp
@@ -27,7 +27,10 @@ static StringRef SpecialGlobalNames[] = {"llvm.used", "llvm.compiler.used"};
/// Removes all special globals aren't inside any of the
/// desired Chunks.
-static void extractSpecialGlobalsFromModule(Oracle &O, Module &Program) {
+static void extractSpecialGlobalsFromModule(Oracle &O,
+ ReducerWorkItem &WorkItem) {
+ Module &Program = WorkItem.getModule();
+
for (StringRef Name : SpecialGlobalNames) {
if (auto *Used = Program.getNamedGlobal(Name)) {
Used->replaceAllUsesWith(getDefaultValue(Used->getType()));
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceUsingSimplifyCFG.cpp b/llvm/tools/llvm-reduce/deltas/ReduceUsingSimplifyCFG.cpp
index 416b1652eb99a..c49fcb9855d41 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceUsingSimplifyCFG.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceUsingSimplifyCFG.cpp
@@ -19,7 +19,8 @@
using namespace llvm;
-static void reduceUsingSimplifyCFG(Oracle &O, Module &Program) {
+static void reduceUsingSimplifyCFG(Oracle &O, ReducerWorkItem &WorkItem) {
+ Module &Program = WorkItem.getModule();
SmallVector<BasicBlock *, 16> ToSimplify;
for (auto &F : Program)
for (auto &BB : F)
@@ -33,7 +34,9 @@ static void reduceUsingSimplifyCFG(Oracle &O, Module &Program) {
void llvm::reduceUsingSimplifyCFGDeltaPass(TestRunner &Test) {
runDeltaPass(Test, reduceUsingSimplifyCFG, "Reducing using SimplifyCFG");
}
-static void reduceConditionals(Oracle &O, Module &M, bool Direction) {
+static void reduceConditionals(Oracle &O, ReducerWorkItem &WorkItem,
+ bool Direction) {
+ Module &M = WorkItem.getModule();
SmallVector<BasicBlock *, 16> ToSimplify;
for (auto &F : M) {
@@ -58,12 +61,18 @@ static void reduceConditionals(Oracle &O, Module &M, bool Direction) {
void llvm::reduceConditionalsTrueDeltaPass(TestRunner &Test) {
runDeltaPass(
- Test, [](Oracle &O, Module &M) { reduceConditionals(O, M, true); },
+ Test,
+ [](Oracle &O, ReducerWorkItem &WorkItem) {
+ reduceConditionals(O, WorkItem, true);
+ },
"Reducing conditional branches to true");
}
void llvm::reduceConditionalsFalseDeltaPass(TestRunner &Test) {
runDeltaPass(
- Test, [](Oracle &O, Module &M) { reduceConditionals(O, M, false); },
+ Test,
+ [](Oracle &O, ReducerWorkItem &WorkItem) {
+ reduceConditionals(O, WorkItem, false);
+ },
"Reducing conditional branches to false");
}
diff --git a/llvm/tools/llvm-reduce/deltas/RunIRPasses.cpp b/llvm/tools/llvm-reduce/deltas/RunIRPasses.cpp
index 30fe6a8088424..acef29a681941 100644
--- a/llvm/tools/llvm-reduce/deltas/RunIRPasses.cpp
+++ b/llvm/tools/llvm-reduce/deltas/RunIRPasses.cpp
@@ -23,7 +23,8 @@ static cl::opt<std::string> PassPipeline(
cl::init("function(sroa,instcombine,gvn,simplifycfg,infer-address-spaces)"),
cl::cat(LLVMReduceOptions));
-static void runPasses(Oracle &O, Module &Program) {
+static void runPasses(Oracle &O, ReducerWorkItem &WorkItem) {
+ Module &Program = WorkItem.getModule();
LoopAnalysisManager LAM;
FunctionAnalysisManager FAM;
CGSCCAnalysisManager CGAM;
diff --git a/llvm/tools/llvm-reduce/deltas/SimplifyInstructions.cpp b/llvm/tools/llvm-reduce/deltas/SimplifyInstructions.cpp
index 93556b7e91795..fc21593c5415c 100644
--- a/llvm/tools/llvm-reduce/deltas/SimplifyInstructions.cpp
+++ b/llvm/tools/llvm-reduce/deltas/SimplifyInstructions.cpp
@@ -19,9 +19,10 @@ using namespace llvm;
/// Calls simplifyInstruction in each instruction in functions, and replaces
/// their values.
-static void extractInstrFromModule(Oracle &O, Module &Program) {
+static void extractInstrFromModule(Oracle &O, ReducerWorkItem &WorkItem) {
std::vector<Instruction *> InstsToDelete;
+ Module &Program = WorkItem.getModule();
const DataLayout &DL = Program.getDataLayout();
std::vector<Instruction *> InstToDelete;
diff --git a/llvm/tools/llvm-reduce/deltas/StripDebugInfo.cpp b/llvm/tools/llvm-reduce/deltas/StripDebugInfo.cpp
index efb02332bee91..a65e55d5f6f48 100644
--- a/llvm/tools/llvm-reduce/deltas/StripDebugInfo.cpp
+++ b/llvm/tools/llvm-reduce/deltas/StripDebugInfo.cpp
@@ -15,7 +15,8 @@ using namespace llvm;
/// Removes all aliases aren't inside any of the
/// desired Chunks.
-static void stripDebugInfoImpl(Oracle &O, Module &Program) {
+static void stripDebugInfoImpl(Oracle &O, ReducerWorkItem &WorkItem) {
+ Module &Program = WorkItem.getModule();
bool HasDebugInfo = any_of(Program.named_metadata(), [](NamedMDNode &NMD) {
return NMD.getName().startswith("llvm.dbg.");
});
More information about the llvm-commits
mailing list