summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Hexagon/HexagonHardwareLoops.cpp
diff options
context:
space:
mode:
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>2016-08-11 21:14:25 +0000
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>2016-08-11 21:14:25 +0000
commit1b689da04e3f8f2c83b1365853a8af39a27b30ea (patch)
tree0d052f52d100c26eb2b541f943a6f89589b43b27 /llvm/lib/Target/Hexagon/HexagonHardwareLoops.cpp
parent3124181eefd3a5916221baf6a474db1957b70be5 (diff)
downloadbcm5719-llvm-1b689da04e3f8f2c83b1365853a8af39a27b30ea.tar.gz
bcm5719-llvm-1b689da04e3f8f2c83b1365853a8af39a27b30ea.zip
[Hexagon] Allow non-returning calls in hardware loops
llvm-svn: 278416
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonHardwareLoops.cpp')
-rw-r--r--llvm/lib/Target/Hexagon/HexagonHardwareLoops.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonHardwareLoops.cpp b/llvm/lib/Target/Hexagon/HexagonHardwareLoops.cpp
index 02e08bafb5d..e4d7da1f385 100644
--- a/llvm/lib/Target/Hexagon/HexagonHardwareLoops.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonHardwareLoops.cpp
@@ -962,8 +962,8 @@ bool HexagonHardwareLoops::isInvalidLoopOperation(const MachineInstr *MI,
// Call is not allowed because the callee may use a hardware loop except for
// the case when the call never returns.
- if (MI->getDesc().isCall() && MI->getOpcode() != Hexagon::CALLv3nr)
- return true;
+ if (MI->getDesc().isCall())
+ return !TII->doesNotReturn(*MI);
// Check if the instruction defines a hardware loop register.
for (unsigned i = 0, e = MI->getNumOperands(); i != e; ++i) {
OpenPOWER on IntegriCloud