[cfe-dev] Syntactic order of CXXBaseOrMemberInitializers

Douglas Gregor dgregor at apple.com
Fri May 21 09:11:19 PDT 2010


On May 21, 2010, at 5:19 AM, Abramo Bagnara wrote:

> Il 20/05/2010 20:47, Douglas Gregor ha scritto:
>> 
>> On May 20, 2010, at 11:23 AM, Douglas Gregor wrote:
>> 
>>> 
>>> On May 20, 2010, at 10:26 AM, Abramo Bagnara wrote:
>>> 
>>>> Il 20/05/2010 18:52, Douglas Gregor ha scritto:
>>>>> 
>>>>> 
>>>>> Sent from my iPhone
>>>>> 
>>>>> On May 19, 2010, at 4:40 AM, Abramo Bagnara <abramo.bagnara at gmail.com> wrote:
>>>>> 
>>>>>> 
>>>>>> As currently the initializers are reordered to match member order in
>>>>>> record declaration there is no easy way for an AST consumer to know in
>>>>>> which order the initializers were written in the source file.
>>>>> 
>>>>> Originally, I had imagined that we would compare based on source locations, and perhaps add an "implicit" bit for implicitly-generated initializers. Does that not work?
>>>> 
>>>> We thought the same, but the fact that a sorting algorithm lead to a
>>>> worst case of O(n*log(n)) or O(n*2) calls to non trivial source location
>>>> comparison has worried us.
>>> 
>>> It seems highly unlikely that N will grow large enough for this to ever matter, since N should only include explicitly-written base classes. 
>> 
>> Hrm. I was thinking "base classes" rather than "base or member initializers."
>> 
>> Anyway, please go ahead with your original proposal to add an index field into CXXBaseOrMemberInitializer. We can do some shuffling to keep the structure the same size while still adding this field.
> 
> I've attached the patch for review/approval.
> <CXXBaseOrMemberInitializerOrder.patch>

Looks good. You could probably pack NumArrayIndices and SourceOrder into one 32-bit word to save storage.

Also, would you like to update the AST printer to print the base and member initializers in order, now that the information is easier to get to?

  - Doug



More information about the cfe-dev mailing list