On Fri, Nov 10, 2017 at 04:45:17PM -0500, David Malcolm wrote: > This patch provides a mechanism in tree.c for adding a wrapper node > for expressing a location_t, for those nodes for which > !CAN_HAVE_LOCATION_P, along with a new method of cp_expr. > > It's called in later patches in the kit via that new method. > > In this version of the patch, I use NON_LVALUE_EXPR for wrapping > constants, and VIEW_CONVERT_EXPR for other nodes. > > I also turned off wrapper nodes for EXCEPTIONAL_CLASS_P, for the sake > of keeping the patch kit more minimal. > > The patch also adds a STRIP_ANY_LOCATION_WRAPPER macro for stripping > such nodes, used later on in the patch kit.
I happened to start reading this series near the end and was rather confused by this macro since it changes variables in a rather unhygienic way. Did you consider just defining a inline function to return the actual decl? It seems like its not used that often so the slight extra syntax should be that big a deal compared to the explicitness. Other than that the series seems reasonable, and I look forward to having wrappers in more places. I seem to remember something I wanted to warn about they would make much easier. Thanks Trev