From 167d918225ecd05a63f6b8d449c317feda741e18 Mon Sep 17 00:00:00 2001 From: Krzysztof Parzyszek Date: Thu, 28 Jul 2016 20:01:59 +0000 Subject: [Hexagon] Implement MI-level constant propagation llvm-svn: 277028 --- llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp') diff --git a/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp b/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp index 2c971b12ba8..80f256cd586 100644 --- a/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp +++ b/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp @@ -42,6 +42,9 @@ static cl::opt DisableHexagonCFGOpt("disable-hexagon-cfgopt", cl::Hidden, cl::ZeroOrMore, cl::init(false), cl::desc("Disable Hexagon CFG Optimization")); +static cl::opt DisableHCP("disable-hcp", cl::init(false), cl::Hidden, + cl::ZeroOrMore, cl::desc("Disable Hexagon constant propagation")); + static cl::opt DisableStoreWidening("disable-store-widen", cl::Hidden, cl::init(false), cl::desc("Disable store widening")); @@ -111,6 +114,7 @@ namespace llvm { FunctionPass *createHexagonCallFrameInformation(); FunctionPass *createHexagonCFGOptimizer(); FunctionPass *createHexagonCommonGEP(); + FunctionPass *createHexagonConstPropagationPass(); FunctionPass *createHexagonCopyToCombine(); FunctionPass *createHexagonEarlyIfConversion(); FunctionPass *createHexagonExpandCondsets(); @@ -263,6 +267,11 @@ bool HexagonPassConfig::addInstSelector() { addPass(createHexagonBitSimplify(), false); addPass(createHexagonPeephole()); printAndVerify("After hexagon peephole pass"); + // Constant propagation. + if (!DisableHCP) { + addPass(createHexagonConstPropagationPass(), false); + addPass(&UnreachableMachineBlockElimID, false); + } if (EnableGenInsert) addPass(createHexagonGenInsert(), false); if (EnableEarlyIf) -- cgit v1.2.3