summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AArch64/AArch64MacroFusion.cpp
diff options
context:
space:
mode:
authorEvandro Menezes <e.menezes@samsung.com>2017-02-21 22:16:11 +0000
committerEvandro Menezes <e.menezes@samsung.com>2017-02-21 22:16:11 +0000
commitb9b7f4b8d3c804544d9764e00b365bfc8d9c793c (patch)
treeb0c310826d9522e706d49f25f344ab5048a47775 /llvm/lib/Target/AArch64/AArch64MacroFusion.cpp
parentbc9a13db0ec3c166ae92206fa9ab8848aef2ca1a (diff)
downloadbcm5719-llvm-b9b7f4b8d3c804544d9764e00b365bfc8d9c793c.tar.gz
bcm5719-llvm-b9b7f4b8d3c804544d9764e00b365bfc8d9c793c.zip
[AArch64, X86] Guard against both instrs being wild cards
If both instrs are wild cards, the result can be a crash. llvm-svn: 295776
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64MacroFusion.cpp')
-rw-r--r--llvm/lib/Target/AArch64/AArch64MacroFusion.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64MacroFusion.cpp b/llvm/lib/Target/AArch64/AArch64MacroFusion.cpp
index a6965e8403b..cde2dab69b6 100644
--- a/llvm/lib/Target/AArch64/AArch64MacroFusion.cpp
+++ b/llvm/lib/Target/AArch64/AArch64MacroFusion.cpp
@@ -34,12 +34,13 @@ static bool shouldScheduleAdjacent(const AArch64InstrInfo &TII,
const AArch64Subtarget &ST,
const MachineInstr *First,
const MachineInstr *Second) {
+ assert((First || Second) && "At least one instr must be specified");
unsigned FirstOpcode =
- First ? First->getOpcode()
- : static_cast<unsigned>(AArch64::INSTRUCTION_LIST_END);
+ First ? First->getOpcode()
+ : static_cast<unsigned>(AArch64::INSTRUCTION_LIST_END);
unsigned SecondOpcode =
- Second ? Second->getOpcode()
- : static_cast<unsigned>(AArch64::INSTRUCTION_LIST_END);
+ Second ? Second->getOpcode()
+ : static_cast<unsigned>(AArch64::INSTRUCTION_LIST_END);
if (ST.hasArithmeticBccFusion())
// Fuse CMN, CMP, TST followed by Bcc.
OpenPOWER on IntegriCloud