diff options
| author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2019-01-16 19:40:27 +0000 |
|---|---|---|
| committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2019-01-16 19:40:27 +0000 |
| commit | 4121eaf0a547b0d6a34ecb27da4fbbc2c091d9ae (patch) | |
| tree | 3e74b643d62a88960bc620be910c49bf27e206c1 /llvm/lib/Target | |
| parent | 86285d2e17ea669fe53853215759c554ad101d31 (diff) | |
| download | bcm5719-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.cpp | 4 |
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(); |

