forked from OSchip/llvm-project
ARM: take account of possible bundle when erasing an instruction.
Fortunately this appears to be the only ARM-specific pass that runs while bundles might be in play, so no other cases need modifying. llvm-svn: 273029
This commit is contained in:
parent
44e6e36299
commit
28a9e7f4ba
|
@ -461,7 +461,7 @@ Thumb2SizeReduce::ReduceLoadStore(MachineBasicBlock &MBB, MachineInstr *MI,
|
|||
MIB.setMIFlags(MI->getFlags());
|
||||
|
||||
// Kill the old instruction.
|
||||
MI->eraseFromParent();
|
||||
MI->eraseFromBundle();
|
||||
++NumLdSts;
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -82,3 +82,19 @@ entry:
|
|||
%shr = lshr i32 %a, %b
|
||||
ret i32 %shr
|
||||
}
|
||||
|
||||
define i32 @bundled_instruction(i32* %addr, i32** %addr2, i1 %tst) minsize {
|
||||
; CHECK-LABEL: bundled_instruction:
|
||||
; CHECK: iteee ne
|
||||
; CHECK: ldmeq r0!, {{{r[0-9]+}}}
|
||||
br i1 %tst, label %true, label %false
|
||||
|
||||
true:
|
||||
ret i32 0
|
||||
|
||||
false:
|
||||
%res = load i32, i32* %addr, align 4
|
||||
%next = getelementptr i32, i32* %addr, i32 1
|
||||
store i32* %next, i32** %addr2
|
||||
ret i32 %res
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue