[llvm] r199766 - Fix PR18572 - llc crash during GenericScheduler::initPolicy().

Andrew Trick atrick at apple.com
Thu Jan 23 09:53:50 PST 2014


On Jan 23, 2014, at 7:10 AM, Daniel Sanders <Daniel.Sanders at imgtec.com> wrote:

> Hi Andrew,
> 
> Did you mean to commit that testcase to test/CodeGen/Mips? It looks like it belongs in test/CodeGen/MSP430

Thanks for catching! r199911.
-Andy

> 
>> -----Original Message-----
>> From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-
>> bounces at cs.uiuc.edu] On Behalf Of Andrew Trick
>> Sent: 21 January 2014 21:28
>> To: llvm-commits at cs.uiuc.edu
>> Subject: [llvm] r199766 - Fix PR18572 - llc crash during
>> GenericScheduler::initPolicy().
>> 
>> Author: atrick
>> Date: Tue Jan 21 15:27:37 2014
>> New Revision: 199766
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=199766&view=rev
>> Log:
>> Fix PR18572 - llc crash during GenericScheduler::initPolicy().
>> 
>> Generalized the heuristic that looks at the (very rough) size of the register
>> file before enabling regpressure tracking.
>> 
>> Added:
>>    llvm/trunk/test/CodeGen/Mips/misched-msp430.ll
>> Modified:
>>    llvm/trunk/lib/CodeGen/MachineScheduler.cpp
>> 
>> Modified: llvm/trunk/lib/CodeGen/MachineScheduler.cpp
>> URL: http://llvm.org/viewvc/llvm-
>> project/llvm/trunk/lib/CodeGen/MachineScheduler.cpp?rev=199766&r1=19
>> 9765&r2=199766&view=diff
>> ==========================================================
>> ====================
>> --- llvm/trunk/lib/CodeGen/MachineScheduler.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/MachineScheduler.cpp Tue Jan 21 15:27:37
>> 2014
>> @@ -2531,10 +2531,16 @@ void GenericScheduler::initPolicy(Machin
>>   // Avoid setting up the register pressure tracker for small regions to save
>>   // compile time. As a rough heuristic, only track pressure when the number
>> of
>>   // schedulable instructions exceeds half the integer register file.
>> -  unsigned NIntRegs = Context->RegClassInfo->getNumAllocatableRegs(
>> -    TM.getTargetLowering()->getRegClassFor(MVT::i32));
>> -
>> -  RegionPolicy.ShouldTrackPressure = NumRegionInstrs > (NIntRegs / 2);
>> +  RegionPolicy.ShouldTrackPressure = true;  unsigned LegalIntVT =
>> + MVT::i32;  for (; LegalIntVT > (unsigned)MVT::i1; --LegalIntVT) {
>> +    if (TM.getTargetLowering()-
>>> isTypeLegal((MVT::SimpleValueType)LegalIntVT)) {
>> +      unsigned NIntRegs = Context->RegClassInfo->getNumAllocatableRegs(
>> +        TM.getTargetLowering()->getRegClassFor(
>> +          (MVT::SimpleValueType)LegalIntVT));
>> +      RegionPolicy.ShouldTrackPressure = NumRegionInstrs > (NIntRegs / 2);
>> +    }
>> +  }
>> 
>>   // For generic targets, we default to bottom-up, because it's simpler and
>> more
>>   // compile-time optimizations have been implemented in that direction.
>> 
>> Added: llvm/trunk/test/CodeGen/Mips/misched-msp430.ll
>> URL: http://llvm.org/viewvc/llvm-
>> project/llvm/trunk/test/CodeGen/Mips/misched-
>> msp430.ll?rev=199766&view=auto
>> ==========================================================
>> ====================
>> --- llvm/trunk/test/CodeGen/Mips/misched-msp430.ll (added)
>> +++ llvm/trunk/test/CodeGen/Mips/misched-msp430.ll Tue Jan 21 15:27:37
>> +++ 2014
>> @@ -0,0 +1,20 @@
>> +; RUN: llc < %s -mtriple=msp430-unknown-unknown -enable-misched |
>> +FileCheck %s
>> +
>> +target datalayout = "e-p:16:16:16-i8:8:8-i16:16:16-i32:16:32-n8:16"
>> +
>> + at y = common global i16 0, align 2
>> + at x = common global i16 0, align 2
>> +
>> +; Test that the MI Scheduler's initPolicy does not crash when i32 is ;
>> +unsupported. The content of the asm check below is unimportant. It ;
>> +only verifies that the code generator ran succesfully.
>> +;
>> +; CHECK-LABEL: @f
>> +; CHECK: mov.w &y, &x
>> +; CHECK: ret
>> +define void @f() {
>> +entry:
>> +  %0 = load i16* @y, align 2
>> +  store i16 %0, i16* @x, align 2
>> +  ret void
>> +}
>> 
>> 
>> _______________________________________________
>> 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