[llvm] r233930 - [LoopAccesses] Handle case when no memchecks are needed after partitioning

Adam Nemet anemet at apple.com
Fri May 15 13:22:04 PDT 2015


> On May 15, 2015, at 7:09 PM, David Blaikie <dblaikie at gmail.com> wrote:
> 
> 
> 
> On Fri, May 15, 2015 at 8:15 AM, Adam Nemet <anemet at apple.com <mailto:anemet at apple.com>> wrote:
> 
>> On Apr 2, 2015, at 8:16 PM, Adam Nemet <anemet at apple.com <mailto:anemet at apple.com>> wrote:
>> 
>> 
>>> On Apr 2, 2015, at 11:15 AM, David Blaikie <dblaikie at gmail.com <mailto:dblaikie at gmail.com>> wrote:
>>> 
>>> 
>>> 
>>> On Thu, Apr 2, 2015 at 11:09 AM, Adam Nemet <anemet at apple.com <mailto:anemet at apple.com>> wrote:
>>> 
>>>> On Apr 2, 2015, at 11:05 AM, David Blaikie <dblaikie at gmail.com <mailto:dblaikie at gmail.com>> wrote:
>>>> 
>>>> Test case? Or is this just a perf improvement?
>>> 
>>> No it’s a bug fix because without this check we will use the null MemoryRuntimeCheck later. 
>>> 
>>> There should be a way to come up with a testcase even without Loop Distribution but it should be much easier with Loop Distribution.  Let me add a testcase for this as part of the LDist patch.  OK?
>>> 
>>> Sure - follow up here with the revision the test is committed in?
>> 
>> Sounds good, I have this thread marked already.
> 
> The testcase that originally triggered this is now committed as test/Transforms/LoopDistribute/crash-in-memcheck-generation.ll.
> 
> Helpful to have the commit revision as well, for posterity. Looks like it's r237358

Yep, sorry about that.

> 
> Thanks!
>  
> 
> Adam
> 
>> 
>>>  
>>> 
>>> Adam
>>> 
>>>> On Thu, Apr 2, 2015 at 10:51 AM, Adam Nemet <anemet at apple.com <mailto:anemet at apple.com>> wrote:
>>>> Author: anemet
>>>> Date: Thu Apr  2 12:51:57 2015
>>>> New Revision: 233930
>>>> 
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=233930&view=rev <http://llvm.org/viewvc/llvm-project?rev=233930&view=rev>
>>>> Log:
>>>> [LoopAccesses] Handle case when no memchecks are needed after partitioning
>>>> 
>>>> Modified:
>>>>     llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp
>>>> 
>>>> Modified: llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp
>>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp?rev=233930&r1=233929&r2=233930&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp?rev=233930&r1=233929&r2=233930&view=diff>
>>>> ==============================================================================
>>>> --- llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp (original)
>>>> +++ llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp Thu Apr  2 12:51:57 2015
>>>> @@ -1211,9 +1211,8 @@ static Instruction *getFirstInst(Instruc
>>>> 
>>>>  std::pair<Instruction *, Instruction *> LoopAccessInfo::addRuntimeCheck(
>>>>      Instruction *Loc, const SmallVectorImpl<int> *PtrPartition) const {
>>>> -  Instruction *tnullptr = nullptr;
>>>>    if (!PtrRtCheck.Need)
>>>> -    return std::pair<Instruction *, Instruction *>(tnullptr, tnullptr);
>>>> +    return std::make_pair(nullptr, nullptr);
>>>> 
>>>>    unsigned NumPointers = PtrRtCheck.Pointers.size();
>>>>    SmallVector<TrackingVH<Value> , 2> Starts;
>>>> @@ -1284,6 +1283,9 @@ std::pair<Instruction *, Instruction *>
>>>>      }
>>>>    }
>>>> 
>>>> +  if (!MemoryRuntimeCheck)
>>>> +    return std::make_pair(nullptr, nullptr);
>>>> +
>>>>    // We have to do this trickery because the IRBuilder might fold the check to a
>>>>    // constant expression in which case there is no Instruction anchored in a
>>>>    // the block.
>>>> 
>>>> 
>>>> _______________________________________________
>>>> llvm-commits mailing list
>>>> llvm-commits at cs.uiuc.edu <mailto:llvm-commits at cs.uiuc.edu>
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits <http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150515/eb56a4be/attachment.html>


More information about the llvm-commits mailing list