compile: Warn for old GCC on cv-qualified self-reference
authorJan Kratochvil <jan.kratochvil@redhat.com>
Wed, 8 Jul 2015 12:42:19 +0000 (14:42 +0200)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Wed, 8 Jul 2015 12:42:19 +0000 (14:42 +0200)
commit084641963dba63283bf2eca227f4f77c2598b172
tree2e5715e2ac8d9a6b01c21e02516f0f00d5718a07
parentbcf5c1d96b3b5493041002eb2b6d27288d9d160a
compile: Warn for old GCC on cv-qualified self-reference

GDB could:

compile code struct_object.selffield = &struct_object
./compile/compile-c-types.c:83: internal-error: insert_type: Assertion `add == NULL || add->gcc_type == gcc_type' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) FAIL: gdb.compile/compile.exp: compile code struct_object.selffield = &struct_object (GDB internal
error)

The bug was not in GDB but in the GCC part interfacing with GDB.

Alexandre Oliva has fixed it the right way:
https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;a=commitdiff;h=072dfdba0ea62abb65514cb3a90cdf3868efe286
git://gcc.gnu.org/git/gcc.git
aoliva/libcp1

Attaching this GDB testsuite update + info to user s/he should upgrade GCC.
After Alex upstreams the fix I can update the message to contain the specific
GCC release.

gdb/ChangeLog
2015-07-08  Jan Kratochvil  <jan.kratochvil@redhat.com>

PR compile/18484
* compile/compile-c-types.c (insert_type): Change gdb_assert to error.

gdb/testsuite/ChangeLog
2015-07-08  Jan Kratochvil  <jan.kratochvil@redhat.com>

PR compile/18484
* gdb.compile/compile.c (struct struct_type): Add volatile to
selffield's type.
* gdb.compile/compile.exp
(compile code struct_object.selffield = &struct_object): Skip further
struct_object tests if this one xfails.
gdb/ChangeLog
gdb/compile/compile-c-types.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.compile/compile.c
gdb/testsuite/gdb.compile/compile.exp