[PATCH 07/22] Implement token range tracking within libcpp and C/C++ FEs

Richard Biener richard.guenther@gmail.com
Tue Sep 15 10:48:00 GMT 2015


On Tue, Sep 15, 2015 at 12:20 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Tue, Sep 15, 2015 at 12:14:22PM +0200, Richard Biener wrote:
>> > diff --git a/gcc/cp/parser.h b/gcc/cp/parser.h
>> > index 760467c..c7558a0 100644
>> > --- a/gcc/cp/parser.h
>> > +++ b/gcc/cp/parser.h
>> > @@ -61,6 +61,8 @@ struct GTY (()) cp_token {
>> >    BOOL_BITFIELD purged_p : 1;
>> >    /* The location at which this token was found.  */
>> >    location_t location;
>> > +  /* The source range at which this token was found.  */
>> > +  source_range range;
>>
>> Is it just me or does location now feel somewhat redundant with range?  Can't we
>> compress that somehow?
>
> For a token I'd expect it is redundant, I don't see how it would be useful
> for a single preprocessing token to have more than start and end locations.
> But generally, for expressions, 3 locations make sense.
> If you have
> abc + def
> ~~~~^~~~~
> then having a range is useful.  In any case, I'm surprised that the ranges aren't encoded in
> location_t (the data structures behind it, where we already stick also
> BLOCK pointer).

Probably lack of encoding space ... I suppose upping location_t to
64bits coud solve
some of that (with its own drawback on increasing size of core structures).

Richard.

>         Jakub



More information about the Gcc-patches mailing list