[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