mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-15 10:39:47 +00:00
[ARM] Prevent use of a value pointed by end() iterator when placing a jump table
Function ARMConstantIslands::doInitialJumpTablePlacement() iterates over all basic blocks in a machine function. It calls `MI = MBB.getLastNonDebugInstr()` to get the last instruction in each block and then uses MI->getOpcode() to decide what to do. If getLastNonDebugInstr() returns MBB.end() (for example, when the block does not contain any instructions) then calling getOpcode() on this value is incorrect. Avoid this problem by checking the result of getLastNonDebugInstr(). Differential Revision: http://reviews.llvm.org/D14694 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253222 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
20bb042d74
commit
1890cef0c5
@ -589,6 +589,8 @@ void ARMConstantIslands::doInitialJumpTablePlacement(
|
||||
MachineBasicBlock *LastCorrectlyNumberedBB = nullptr;
|
||||
for (MachineBasicBlock &MBB : *MF) {
|
||||
auto MI = MBB.getLastNonDebugInstr();
|
||||
if (MI == MBB.end())
|
||||
continue;
|
||||
|
||||
unsigned JTOpcode;
|
||||
switch (MI->getOpcode()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user