This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] Emit accurate debug info for short-circuit operators
On Tue, 21 Apr 2009, Eric Botcazou wrote:
> > These changes are OK.
> > > * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
> > > TRUTH_NOT_EXPR has been folded.
> > Could you explain why this is needed in more detail? Why isn't the
> > location passed in to build_unary_op always appropriate for the final
> > location setting?
> This location is that of the '!'; when it is folded, for example
> !(a || b) => !a && !b
> you don't want to put this location on the '&&' but preserve that of the '||'.
I suppose this is OK for now then; I think either location is just as
good. But I hope that for diagnostic purposes we'll eventually track
ranges of locations for expressions rather than just a single location,
and then the range would be that for all the tokens !(a || b); if for
debug info purposes the start of the range isn't good enough, then you
need to track both the range for diagnostics and an individual location
for debug info.
Joseph S. Myers