[llvm-commits] [PATCH] Avoid overflow in scheduling

Evan Cheng evan.cheng at apple.com
Wed Sep 30 12:56:38 PDT 2009


Looks fine. Please commit. Thanks.

Evan

On Sep 30, 2009, at 11:56 AM, Reid Kleckner wrote:

> Ping?
>
> Reid
>
> On Mon, Sep 28, 2009 at 8:29 PM, Reid Kleckner <rnk at mit.edu> wrote:
>> Here's an updated patch.  I also switched the numbers to be unsigned
>> since they should never be negative.
>>
>> Reid
>>
>> On Mon, Sep 28, 2009 at 4:26 PM, Evan Cheng <evan.cheng at apple.com>  
>> wrote:
>>>
>>> On Sep 28, 2009, at 9:45 AM, Dan Gohman wrote:
>>>
>>>>
>>>> On Sep 27, 2009, at 9:17 PM, Reid Kleckner wrote:
>>>>>
>>>>> I think the characteristic of this input is that we have 35K  
>>>>> BB's in
>>>>> the function, and each line has a guard that creates a basic block
>>>>> edge to a single bailing block.  When it's time to do  
>>>>> scheduling, that
>>>>> manifests as more than SHRT_MAX predecessors, causing the  
>>>>> overflow in
>>>>> NumSuccs.
>>>>
>>>> The NumPreds and NumSuccs values are talking about scheduling
>>>> units within a basic block, not basic blocks themselves.  So it  
>>>> sounds
>>>> like you not only have large numbers of BBs, but you also have
>>>> some large individual BBs :-).
>>>>
>>>>>
>>>>> Talking with jyasskin and nlewycky, we think that if LLVM wants  
>>>>> the
>>>>> language restriction that there be no more than SHRT_MAX incoming
>>>>> edges to a basic block, that's fine, but the verifier should  
>>>>> catch it,
>>>>> because we run the verifier on our code.  Otherwise, scheduling
>>>>> probably needs to support more predecessors.
>>>>
>>>> I don't think we want a language restriction like this.  I favor  
>>>> changing
>>>> the
>>>> fields to ints for now.
>>>>
>>>> I think there are some opportunities to make the scheduler use less
>>>> memory that we can pursue instead of trying to get by with short  
>>>> fields.
>>>
>>> Alright.
>>>
>>> Evan
>>>
>>>>
>>>> Dan
>>>>
>>>
>>>
>>




More information about the llvm-commits mailing list