Add fixit hint for -Wlogical-not-parentheses
David Malcolm
dmalcolm@redhat.com
Mon Aug 29 12:50:00 GMT 2016
On Mon, 2016-08-29 at 13:44 +0200, Marek Polacek wrote:
> On Mon, Aug 29, 2016 at 12:35:38PM +0200, Marek Polacek wrote:
> > On Mon, Aug 29, 2016 at 11:16:25AM +0200, Andreas Schwab wrote:
> > > On Aug 25 2016, Marek Polacek <polacek@redhat.com> wrote:
> > >
> > > > * c-c++-common/Wlogical-not-parentheses-2.c: New test.
> > >
> > > FAIL: c-c++-common/Wlogical-not-parentheses-2.c -std=gnu++11
> > > expected multiline pattern lines 13-17 not found: "\s*r \+= !aaa
> > > == bbb;.*\n \^~\n r \+= !aaa == bbb;.*\n
> > > \^~~~\n \( \).*\n"
> > > FAIL: c-c++-common/Wlogical-not-parentheses-2.c -std=gnu++11
> > > (test for excess errors)
> > > Excess errors:
> > > r += !aaa == bbb; /* { dg-warning "logical not is only
> > > applied" } */
> > > ^~
> > > r += !aaa == bbb; /* { dg-warning "logical not is only
> > > applied" } */
> > > ^~~~
> >
> > This has regressed with David's
> >
> > commit 367964faf71a99ebd511dffb81075b58bff345a1
> > Author: dmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>
> > Date: Fri Aug 26 21:25:41 2016 +0000
> >
> > Add validation and consolidation of fix-it hints
> >
> > I don't know yet what exactly went wrong here.
>
> So we reject printing fix-it hint because in reject_impossible_fixit:
>
> 2187 if (where <= LINE_MAP_MAX_LOCATION_WITH_COLS)
> 2188 /* WHERE is a reasonable location for a fix-it; don't reject
> it. */
> 2189 return false;
>
> (gdb) p where
> $1 = 2147483652
> (gdb) p LINE_MAP_MAX_LOCATION_WITH_COLS
> $2 = 1610612736
>
> so we set m_seen_impossible_fixit.
>
> David, why is that happening?
Sorry about this; I believe I did my testing of my patch against a tree
that didn't yet have your change.
(gdb) p /x 2147483652
$2 = 0x80000004
so "where", the insertion-point, is an ad-hoc location (describing a
range), and it looks like I somehow forgot to deal with that case in
the validation code.
I'm working on a fix. Sorry again.
Dave
More information about the Gcc-patches
mailing list