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

Reid Kleckner rnk at mit.edu
Wed Sep 30 11:56:57 PDT 2009


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