summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>2019-01-16 19:40:27 +0000
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>2019-01-16 19:40:27 +0000
commit4121eaf0a547b0d6a34ecb27da4fbbc2c091d9ae (patch)
tree3e74b643d62a88960bc620be910c49bf27e206c1 /llvm/lib/Target
parent86285d2e17ea669fe53853215759c554ad101d31 (diff)
downloadbcm5719-llvm-4121eaf0a547b0d6a34ecb27da4fbbc2c091d9ae.tar.gz
bcm5719-llvm-4121eaf0a547b0d6a34ecb27da4fbbc2c091d9ae.zip
[Hexagon] Do not promote terminator instructions in Hexagon loop idioms
llvm-svn: 351369
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp b/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
index 985f41f3a7d..e828a48b890 100644
--- a/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
@@ -1001,6 +1001,7 @@ bool PolynomialMultiplyRecognize::isPromotableTo(Value *Val,
void PolynomialMultiplyRecognize::promoteTo(Instruction *In,
IntegerType *DestTy, BasicBlock *LoopB) {
Type *OrigTy = In->getType();
+ assert(!OrigTy->isVoidTy() && "Invalid instruction to promote");
// Leave boolean values alone.
if (!In->getType()->isIntegerTy(1))
@@ -1081,7 +1082,8 @@ bool PolynomialMultiplyRecognize::promoteTypes(BasicBlock *LoopB,
std::transform(LoopB->begin(), LoopB->end(), std::back_inserter(LoopIns),
[](Instruction &In) { return &In; });
for (Instruction *In : LoopIns)
- promoteTo(In, DestTy, LoopB);
+ if (!In->isTerminator())
+ promoteTo(In, DestTy, LoopB);
// Fix up the PHI nodes in the exit block.
Instruction *EndI = ExitB->getFirstNonPHI();
OpenPOWER on IntegriCloud