mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-26 21:32:10 +00:00
Move this test a bit later, after the point at which we know that we either
have an alloca or a parameter, since then the alloca test should make sense to readers, while before it probably appears too specific. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165306 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e66f3d3ba0
commit
3372c5a50f
@ -605,16 +605,6 @@ bool MemCpyOpt::performCallSlotOptzn(Instruction *cpy,
|
||||
if (cpyLen < srcSize)
|
||||
return false;
|
||||
|
||||
// Check that dest points to memory that is at least as aligned as src.
|
||||
unsigned srcAlign = srcAlloca->getAlignment();
|
||||
if (!srcAlign)
|
||||
srcAlign = TD->getABITypeAlignment(srcAlloca->getAllocatedType());
|
||||
bool isDestSufficientlyAligned = srcAlign <= cpyAlign;
|
||||
// If dest is not aligned enough and we can't increase its alignment then
|
||||
// bail out.
|
||||
if (!isDestSufficientlyAligned && !isa<AllocaInst>(cpyDest))
|
||||
return false;
|
||||
|
||||
// Check that accessing the first srcSize bytes of dest will not cause a
|
||||
// trap. Otherwise the transform is invalid since it might cause a trap
|
||||
// to occur earlier than it otherwise would.
|
||||
@ -644,6 +634,16 @@ bool MemCpyOpt::performCallSlotOptzn(Instruction *cpy,
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check that dest points to memory that is at least as aligned as src.
|
||||
unsigned srcAlign = srcAlloca->getAlignment();
|
||||
if (!srcAlign)
|
||||
srcAlign = TD->getABITypeAlignment(srcAlloca->getAllocatedType());
|
||||
bool isDestSufficientlyAligned = srcAlign <= cpyAlign;
|
||||
// If dest is not aligned enough and we can't increase its alignment then
|
||||
// bail out.
|
||||
if (!isDestSufficientlyAligned && !isa<AllocaInst>(cpyDest))
|
||||
return false;
|
||||
|
||||
// Check that src is not accessed except via the call and the memcpy. This
|
||||
// guarantees that it holds only undefined values when passed in (so the final
|
||||
// memcpy can be dropped), that it is not read or written between the call and
|
||||
|
Loading…
Reference in New Issue
Block a user