mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
if the terminator is a branch depending upon the side effects of a
previous cmp; a copy can not be inserted here if the copy insn also has side effects. We don't have access to the attributes of copy insn here; so just play safe by finding a safe locations for branch terminators. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74898 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
40289b041a
commit
1dd35b4c35
@ -169,9 +169,15 @@ MachineBasicBlock::iterator PNE::FindCopyInsertPoint(MachineBasicBlock &MBB,
|
||||
return MBB.begin();
|
||||
|
||||
// If this basic block does not contain an invoke, then control flow always
|
||||
// reaches the end of it, so place the copy there. The logic below works in
|
||||
// this case too, but is more expensive.
|
||||
if (!isa<InvokeInst>(MBB.getBasicBlock()->getTerminator()))
|
||||
// reaches the end of it, so place the copy there.
|
||||
// If the terminator is a branch depending upon the side effects of a
|
||||
// previous cmp; a copy can not be inserted here if the copy insn also
|
||||
// side effects. We don't have access to the attributes of copy insn here;
|
||||
// so just play safe by finding a safe locations for branch terminators.
|
||||
//
|
||||
// The logic below works in this case too, but is more expensive.
|
||||
const TerminatorInst *TermInst = MBB.getBasicBlock()->getTerminator();
|
||||
if (!(isa<InvokeInst>(TermInst) || isa<BranchInst>(TermInst)))
|
||||
return MBB.getFirstTerminator();
|
||||
|
||||
// Discover any definition/uses in this basic block.
|
||||
|
Loading…
Reference in New Issue
Block a user