Question on param MAX_PENDING_LIST_LENGTH in sched-deps
Jeff Law
law@redhat.com
Thu Nov 6 23:10:00 GMT 2014
On 11/04/14 20:29, Bin.Cheng wrote:
> Hi,
> The parameter MAX_PENDING_LIST_LENGTH is set to 32 by default. It
> seems to me the length of pending list can't be larger than 32. But
> in sched-deps.c, below code is used:
> /* Pending lists can't get larger with a readonly context. */
> if (!deps->readonly
> && ((deps->pending_read_list_length + deps->pending_write_list_length)
> > MAX_PENDING_LIST_LENGTH))
>
> Since we compares it using ">", the list can have 33 instructions at
> most, which is inconsistent with the parameter name.
>
> Well, it's some kind of nit picking.
Yea, seems like a bit of a nit. Might be worth fixing as someone might
size an array based on the param's value only to find out it can have an
extra element.
>
> Another question. This parameter is introduced to prevent GCC from
> running for too long time. I am not clear if the running time is a
> quadratic function of pending list, or a quadratic function of
> dependency nodes? If it's the latter, could we use the number of
> dependency nodes as the parameter directly? Because in some cases
> like memory initialization, there are more than 32 store instructions
> in flow, but the dependency are actually very simple.
See:
https://gcc.gnu.org/ml/gcc-patches/2001-07/msg01668.html
I don't recall what part of the algorithm was quadratic, but it should
be too hard to find out given the thread references the target & the
testcase.
jeff
More information about the Gcc
mailing list