[cfe-dev] PATCH: C++ Function Overloading (v2)

Argiris Kirtzidis akyrtzi at gmail.com
Wed Oct 22 14:07:52 PDT 2008


Doug Gregor wrote:
> Generally, I like it, although I think we can do things a bit more
> efficiently. I'd like the DeclContext to own the
> OverloadedFunctionDecls, and cache them so that we aren't constantly
> re-creating them. This means that, for example, the first lookup of
> "f" for an overloaded function would find a number of FunctionDecl
> nodes, for which we'd create an OverloadedFunctionDecl. At that point,
> we should push the OverloadedFunctionDecl into the scope, so that it
> can be found and reused. This would be a lazy form of what the code is
> doing now.
>
> In the case of a template, where we need to store the
> OverloadedFunctionDecl for later use, I suggest that we have the code
> that needs to save the OverloadedFunctionDecl make a copy of it that
> will be owned by the DeclRefExpr or OverloadedFunctionDeclRefExpr, so
> that we're not wasting time creating and destroying
> OverloadedFunctionDecls that will only be used once before being
> destroyed.
>
> Another minor comment: we could probably eliminate
> OverloadedFunctionDeclRefExpr and instead use the lowest bit of the
> NamedDecl* in DeclRefExpr to record whether the DeclRefExpr owns the
> declaration or not.
>   

Sounds great!

Thank you for your patience!
I may pester you later on about the possibility of using just the 
IdentifierInfo instead of a list of FunctionDecls for 
OverloadedFunctionDecl (which will save space for templates), but not 
until more name lookup rules (like the 'using' directive) are supported 
and its clear whether an IdentifierInfo is sufficient or not.

-Argiris



More information about the cfe-dev mailing list