On Oct 23, 2008, at 8:53 AM, Doug Gregor wrote: >>> +public: >>> + static CXXBaseSpecifier *Create(ASTContext &C, SourceRange R, >>> bool V, >>> bool BC, >>> + AccessSpecifier A, QualType T); >> >> you're making an array of pointers to CXXBaseSpecifier's. Would it >> be >> better to just have an array of CXXBaseSpecifier's directly? >> Alternatively, >> instead of an array of pointers, maybe a linked list of >> CXXBaseSpecifier's >> would be better? If you prefer to stay with an array, maybe >> "ObjCList" (see >> the top of DeclObjC.h) would work better and should be generalized. > > I'd like it to be an array of CXXBaseSpecifiers. > > The annoying problem here is that we return CXXBaseSpecifier pointers > to the parser (as a BaseTy*, which is just a void*), when we'd really > prefer to just return a CXXBaseSpecifier. Anyway, I'll switch over to > an array of CXXBaseSpecifiers.
Your follow-on commit looks like an awesome step, thanks! Is there a good way to fix this issue and avoid the new/delete pair in the common case? It probably isn't worth the implementation effort, but one option would be to have a parser level version of 'CXXBaseSpecifier' and have the parser aggregate these together into a SmallVector and have Sema handle the whole list at once. Base specifiers are probably not common enough to go to heroic measures to optimize, but it's an option. *shrug* -Chris _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
