[llvm] r211037 - Refactor the disabling of Thumb-1 LDM/STM generation
Evgeniy Stepanov
eugeni.stepanov at gmail.com
Tue Jun 17 05:30:56 PDT 2014
This is leaking RegScavenger() in ARMLoadStoreOpt::runOnMachineFunction().
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/3733
On Mon, Jun 16, 2014 at 9:06 PM, Eric Christopher <echristo at gmail.com> wrote:
> Thanks James!
>
> On Jun 16, 2014 9:54 AM, "James Molloy" <james.molloy at arm.com> wrote:
>>
>> Author: jamesm
>> Date: Mon Jun 16 11:42:53 2014
>> New Revision: 211037
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=211037&view=rev
>> Log:
>> Refactor the disabling of Thumb-1 LDM/STM generation
>>
>> Originally I switched the LD/ST optimizer off in TargetMachine as it was
>> previously, but Eric has suggested he'd prefer that it be short-circuited in
>> the pass itself.
>>
>> No functionality change.
>>
>>
>> Modified:
>> llvm/trunk/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
>> llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp
>>
>> Modified: llvm/trunk/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMLoadStoreOptimizer.cpp?rev=211037&r1=211036&r2=211037&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/ARM/ARMLoadStoreOptimizer.cpp (original)
>> +++ llvm/trunk/lib/Target/ARM/ARMLoadStoreOptimizer.cpp Mon Jun 16
>> 11:42:53 2014
>> @@ -1734,6 +1734,10 @@ bool ARMLoadStoreOpt::runOnMachineFuncti
>> isThumb2 = AFI->isThumb2Function();
>> isThumb1 = AFI->isThumbFunction() && !isThumb2;
>>
>> + // FIXME: Temporarily disabling for Thumb-1 due to miscompiles
>> + if (isThumb1)
>> + return false;
>> +
>> bool Modified = false;
>> for (MachineFunction::iterator MFI = Fn.begin(), E = Fn.end(); MFI !=
>> E;
>> ++MFI) {
>>
>> Modified: llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp?rev=211037&r1=211036&r2=211037&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp (original)
>> +++ llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp Mon Jun 16 11:42:53
>> 2014
>> @@ -203,8 +203,7 @@ bool ARMPassConfig::addInstSelector() {
>> }
>>
>> bool ARMPassConfig::addPreRegAlloc() {
>> - // FIXME: Temporarily disabling Thumb-1 pre-RA Load/Store optimization
>> pass
>> - if (getOptLevel() != CodeGenOpt::None &&
>> !getARMSubtarget().isThumb1Only())
>> + if (getOptLevel() != CodeGenOpt::None)
>> addPass(createARMLoadStoreOptimizationPass(true));
>> if (getOptLevel() != CodeGenOpt::None &&
>> getARMSubtarget().isCortexA9())
>> addPass(createMLxExpansionPass());
>> @@ -219,11 +218,8 @@ bool ARMPassConfig::addPreRegAlloc() {
>>
>> bool ARMPassConfig::addPreSched2() {
>> if (getOptLevel() != CodeGenOpt::None) {
>> - // FIXME: Temporarily disabling Thumb-1 post-RA Load/Store
>> optimization pass
>> - if (!getARMSubtarget().isThumb1Only()) {
>> - addPass(createARMLoadStoreOptimizationPass());
>> - printAndVerify("After ARM load / store optimizer");
>> - }
>> + addPass(createARMLoadStoreOptimizationPass());
>> + printAndVerify("After ARM load / store optimizer");
>>
>> if (getARMSubtarget().hasNEON())
>> addPass(createExecutionDependencyFixPass(&ARM::DPRRegClass));
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list