https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114938
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|middle-end |c
Summary|Basic blocks in generated |Function argument column
|CFG referencing the |info seems to have been
|incorrect source token |lost
|column |
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Take the reduced testcase we get using the C front-end:
```
int proc_dostring (struct ctl_table * table, int write, void * buffer, int *
lenp, int * ppos)
[/app/example.cpp:13:1] {
int D.2793;
[/app/example.cpp:14:5] if (write != 0) goto <D.2791>; else goto <D.2792>;
<D.2791>:
[/app/example.cpp:15:3] proc_first_pos_non_zero_ignore (ppos, table);
<D.2792>:
[/app/example.cpp:17:9] _1 = [/app/example.cpp:17:9] table->maxlen;
[/app/example.cpp:17:9] _2 = [/app/example.cpp:17:9] table->data;
[/app/example.cpp:17:9] D.2793 = _proc_do_string (_2, _1, write, buffer,
lenp, ppos);
[/app/example.cpp:17:9] return D.2793;
}
```
The column 9 is the start of the call. But really the first statement should
have a column of 24.
Note with the C++ FE we get:
[/app/example.cpp:17:24] _1 = [/app/example.cpp:17:24] table->maxlen;
[/app/example.cpp:17:24] _2 = [/app/example.cpp:17:24] table->data;
[/app/example.cpp:17:24] D.2822 = _proc_do_string (_2, _1, write, buffer,
lenp, ppos);
[/app/example.cpp:17:24 discrim 1] D.2820 = D.2822;
the :24 is the column after `(`.
But _2 statement really should be the column after the first `,`.
I remember seeing this before ...