summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>2017-08-09 21:22:05 +0000
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>2017-08-09 21:22:05 +0000
commit1966fd79a78d2648f5d2dcc341e830455ffc8aad (patch)
tree9342e951694f05b986c81c7d3b8fc8310ca74a20 /llvm/lib
parentb8709babd2b4683b8208876b3eaf4dc8d65ba5cc (diff)
downloadbcm5719-llvm-1966fd79a78d2648f5d2dcc341e830455ffc8aad.tar.gz
bcm5719-llvm-1966fd79a78d2648f5d2dcc341e830455ffc8aad.zip
[Hexagon] Ignore DBG_VALUEs when counting instructions in hexagon-early-if
llvm-svn: 310524
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/Hexagon/HexagonEarlyIfConv.cpp11
-rw-r--r--llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp2
2 files changed, 8 insertions, 5 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonEarlyIfConv.cpp b/llvm/lib/Target/Hexagon/HexagonEarlyIfConv.cpp
index 7d0878815a1..fdf57a82cbd 100644
--- a/llvm/lib/Target/Hexagon/HexagonEarlyIfConv.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonEarlyIfConv.cpp
@@ -155,9 +155,7 @@ namespace {
public:
static char ID;
- HexagonEarlyIfConversion() : MachineFunctionPass(ID) {
- initializeHexagonEarlyIfConversionPass(*PassRegistry::getPassRegistry());
- }
+ HexagonEarlyIfConversion() : MachineFunctionPass(ID) {}
StringRef getPassName() const override {
return "Hexagon early if conversion";
@@ -227,7 +225,7 @@ namespace {
char HexagonEarlyIfConversion::ID = 0;
-INITIALIZE_PASS(HexagonEarlyIfConversion, "hexagon-eif",
+INITIALIZE_PASS(HexagonEarlyIfConversion, "hexagon-early-if",
"Hexagon early if conversion", false, false)
bool HexagonEarlyIfConversion::isPreheader(const MachineBasicBlock *B) const {
@@ -539,7 +537,10 @@ bool HexagonEarlyIfConversion::isProfitable(const FlowPattern &FP) const {
auto TotalCount = [] (const MachineBasicBlock *B, unsigned &Spare) {
if (!B)
return 0u;
- unsigned T = std::distance(B->begin(), B->getFirstTerminator());
+ unsigned T = std::count_if(B->begin(), B->getFirstTerminator(),
+ [](const MachineInstr &MI) {
+ return !MI.isDebugValue();
+ });
if (T < HEXAGON_PACKET_SIZE)
Spare += HEXAGON_PACKET_SIZE-T;
return T;
diff --git a/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp b/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp
index 543318c7a14..01634756d0a 100644
--- a/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp
@@ -109,6 +109,7 @@ SchedCustomRegistry("hexagon", "Run Hexagon's custom scheduler",
namespace llvm {
extern char &HexagonExpandCondsetsID;
+ void initializeHexagonEarlyIfConversionPass(PassRegistry&);
void initializeHexagonExpandCondsetsPass(PassRegistry&);
void initializeHexagonGenMuxPass(PassRegistry&);
void initializeHexagonLoopIdiomRecognizePass(PassRegistry&);
@@ -163,6 +164,7 @@ extern "C" void LLVMInitializeHexagonTarget() {
RegisterTargetMachine<HexagonTargetMachine> X(getTheHexagonTarget());
PassRegistry &PR = *PassRegistry::getPassRegistry();
+ initializeHexagonEarlyIfConversionPass(PR);
initializeHexagonGenMuxPass(PR);
initializeHexagonLoopIdiomRecognizePass(PR);
initializeHexagonNewValueJumpPass(PR);
OpenPOWER on IntegriCloud