Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
Show First 20 Lines • Show All 2,115 Lines • ▼ Show 20 Lines | bool ARMLoadStoreOpt::runOnMachineFunction(MachineFunction &Fn) { | ||||
RegClassInfoValid = false; | RegClassInfoValid = false; | ||||
isThumb2 = AFI->isThumb2Function(); | isThumb2 = AFI->isThumb2Function(); | ||||
isThumb1 = AFI->isThumbFunction() && !isThumb2; | isThumb1 = AFI->isThumbFunction() && !isThumb2; | ||||
bool Modified = false; | bool Modified = false; | ||||
for (MachineBasicBlock &MBB : Fn) { | for (MachineBasicBlock &MBB : Fn) { | ||||
Modified |= LoadStoreMultipleOpti(MBB); | Modified |= LoadStoreMultipleOpti(MBB); | ||||
if (STI->hasV5TOps()) | if (STI->hasV5TOps() && !AFI->shouldSignReturnAddress()) | ||||
Modified |= MergeReturnIntoLDM(MBB); | Modified |= MergeReturnIntoLDM(MBB); | ||||
if (isThumb1) | if (isThumb1) | ||||
Modified |= CombineMovBx(MBB); | Modified |= CombineMovBx(MBB); | ||||
} | } | ||||
Allocator.DestroyAll(); | Allocator.DestroyAll(); | ||||
return Modified; | return Modified; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 888 Lines • Show Last 20 Lines |