[Bug c++/88166] New: Inconsistent placement of cv-quals and ptr-declarator in debuginfo
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Nov 23 12:55:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88166
Bug ID: 88166
Summary: Inconsistent placement of cv-quals and ptr-declarator
in debuginfo
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: minor
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: redi at gcc dot gnu.org
Target Milestone: ---
Given:
struct any {
enum Op { E };
struct Arg { char c; };
template<typename T>
struct Manager
{
static void manage(Op, const any*, Arg*) { }
};
};
int main()
{
auto lambda = [](){};
auto f1 = &any::Manager<int>::manage;
auto f2 = &any::Manager<decltype(lambda)>::manage;
return 0;
}
g++ -g any.cc
gdb -q -ex start -ex "n 2" -ex "p f1" -ex "p f2" -ex cont -ex q a.out
Reading symbols from a.out...done.
Temporary breakpoint 1 at 0x4004ab: file any.cc, line 15.
Starting program: /tmp/a.out
Temporary breakpoint 1, main () at any.cc:15
15 auto f1 = &any::Manager<int>::manage;
17 return 0;
$1 = (void (*)(const any *, any::Arg *)) 0x4004d1
<any::Manager<int>::manage(any const*, any::Arg*)>
$2 = (void (*)(const any *, any::Arg *)) 0x4004c2
<any::Manager<main()::<lambda()> >::manage(const any *, any::Arg *)>
Continuing.
[Inferior 1 (process 29483) exited normally]
Note that the first function parameter-list is (any const*, any::Arg*) and the
second is (const any *, any::Arg *).
This breaks the python pretty printers for std::any (see Bug 87308).
Why the inconsistency?
More information about the Gcc-bugs
mailing list