On Fri, Mar 11, 2011 at 06:04:45AM -0800, Nathan Froyd wrote:
> On Fri, Mar 11, 2011 at 08:40:24AM -0500, Jason Merrill wrote:
> > On 03/10/2011 11:23 PM, Nathan Froyd wrote:
> > The C++ FE expects that we can check the TREE_TYPE of anything that  
> > appears as an expression, and uses IDENTIFIER_NODE to indicate a  
> > dependent name within templates.  If you want to break TREE_TYPE on  
> > IDENTIFIER_NODE, you need to change the representation of dependent  
> > names so that we can continue to use TREE_TYPE on all expressions.
> 
> I'm confused.  Isn't this what the switching on IDENTIFIER_NODE in a
> number of places is doing?  (And any future places that g++/libstdc++
> didn't catch will be an ICE.)  Or are you saying that you don't want the
> switching and IDENTIFIER_NODEs should retain TREE_TYPE unless and until
> somebody comes forth with a better design?

Or, alternatively, are you saying that blindly replacing TREE_TYPE with
REAL_IDENTIFIER_TYPE_VALUE is wrong, semantically speaking, as TREE_TYPE
and REAL_IDENTIFIER_TYPE_VALUE mean different things and should be kept
separate, even if they happen to share the same storage?  And if so,
would moving that storage into lang_identifier be OK so long as the
requisite occurrences of TREE_TYPE are audited and the appropriate name
(REAL_IDENTIFIER_TYPE_VALUE vs. ...I don't know, EXPR_LIKE_TYPE) is
used?

-Nathan

Reply via email to