[cfe-dev] Syntactic order of CXXBaseOrMemberInitializers
Douglas Gregor
dgregor at apple.com
Thu May 20 11:23:46 PDT 2010
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.
>>> I'd suggest to insert an index field to each CXXBaseOrMemberInitializer
>>> that is 1 for the first initializer, 2 for the second and so no. The
>>> index is 0 for the initializers that are not present in source file.
>>>
>>> Can we proceed in this direction?
>>
>> I would like to avoid adding an index field, if the source locations suffice.
>
> To tell you the truth we had considered that the smaller complexity
> would pay the space cost.
>
> However it's not a problem, should you accept a patch for adding
>
> CXXConstructorDecl::getBaseOrMemberInitializersAsWritten()?
Sure!
- Doug
More information about the cfe-dev
mailing list