Message ID | 20110311162348.GM23686@codesourcery.com |
---|---|
State | New |
Headers | show |
On 03/11/2011 11:23 AM, Nathan Froyd wrote: > Hm. OK. Just as a light sketch of how this would all work, where do > DEPENDENT_NAME_EXPRs get introduced into the AST? During parsing, or > someplace else? During parsing, yes, wherever we look up a name and currently return the plain identifier rather than a decl. > What about those cases where the FE does TREE_TYPE > (DECL_NAME (X))--are those supposed to be REAL_IDENTIFIER_TYPE_VALUE Kind of. It seems like there are two uses: 1) Remembering that we've seen a declaration of a type with this name. 2) Remembering which type a particular tinfo or conversion op name corresponds to. It probably makes sense for #2 to use a new and different macro. > There's also cases like: > > --- a/gcc/cp/error.c > +++ b/gcc/cp/error.c > @@ -1011,7 +1011,7 @@ dump_decl (tree t, int flags) > { > pp_cxx_ws_string (cxx_pp, "operator"); > /* Not exactly IDENTIFIER_TYPE_VALUE. */ > - dump_type (TREE_TYPE (t), flags); > + dump_type (REAL_IDENTIFIER_TYPE_VALUE (t), flags); > break; > } > else That's #2. Jason
--- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -1011,7 +1011,7 @@ dump_decl (tree t, int flags) { pp_cxx_ws_string (cxx_pp, "operator"); /* Not exactly IDENTIFIER_TYPE_VALUE. */ - dump_type (TREE_TYPE (t), flags); + dump_type (REAL_IDENTIFIER_TYPE_VALUE (t), flags); break; } else