On Fri, Mar 11, 2011 at 08:40:24AM -0500, Jason Merrill wrote: > On 03/10/2011 11:23 PM, Nathan Froyd wrote: >> I'm not overly fond of the conditionals (especially in error_operand_p) >> but I don't think it's reasonable to make IDENTIFIER_NODE bigger and >> penalize the other FEs just because the C++ FE is playing games with >> TREE_TYPE. > > 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? -Nathan