https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114389
Bug ID: 114389
Summary: internal compiler error when compiling nested
structure in gdb
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libcc1
Assignee: unassigned at gcc dot gnu.org
Reporter: tsqurt at outlook dot com
Target Milestone: ---
```
struct foo { int loc1; } bar;
int main()
{
bar.loc1 = 0; // break here
return 0;
}
```
Compile and start debugging with command gcc src.c -g && gdb a.out.
```
(gdb) b 5
Breakpoint 1 at 0x40110a: file src.c, line 5.
(gdb) run
Starting program: a.out
Breakpoint 1, main () at src.c:5
5 bar.loc1 = 0;
(gdb) expr bar.loc1
warning: variable has unknown type; assuming int
gdb command line:1:4: warning: statement with no effect [-Wunused-value]
*** WARNING *** there are active plugins, do not report this as a bug unless
you can reproduce it without enabling any plugins.
Event | Plugins
PLUGIN_PRE_GENERICIZE | libcc1plugin
PLUGIN_GGC_MARKING | libcc1plugin
PLUGIN_PRAGMAS | libcc1plugin
gdb command line:1:4: internal compiler error: tree check: expected field_decl,
have indirect_ref in component_ref_field_offset, at tree.cc:13095
0x866436 tree_check_failed(tree_node const*, char const*, int, char const*,
...)
../../gcc/gcc/tree.cc:8955
0x86ea64 tree_check(tree_node*, char const*, int, char const*, tree_code)
../../gcc/gcc/tree.h:3612
0x86ea64 component_ref_field_offset(tree_node*)
../../gcc/gcc/tree.cc:13095
0xd08225 gimplify_compound_lval
../../gcc/gcc/gimplify.cc:3483
0xcff389 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
../../gcc/gcc/gimplify.cc:17740
0xd01de6 gimplify_stmt(tree_node**, gimple**)
../../gcc/gcc/gimplify.cc:7485
0xd02ee6 gimplify_bind_expr
../../gcc/gcc/gimplify.cc:1619
0xcffad4 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
../../gcc/gcc/gimplify.cc:17992
0xd16e05 gimplify_stmt(tree_node**, gimple**)
../../gcc/gcc/gimplify.cc:7485
0xd16e05 gimplify_body(tree_node*, bool)
../../gcc/gcc/gimplify.cc:19058
0xd1724c gimplify_function_tree(tree_node*)
../../gcc/gcc/gimplify.cc:19257
0xb3abf7 cgraph_node::analyze()
../../gcc/gcc/cgraphunit.cc:687
0xb3d757 analyze_functions
../../gcc/gcc/cgraphunit.cc:1251
0xb3e6dd symbol_table::finalize_compilation_unit()
../../gcc/gcc/cgraphunit.cc:2558
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
Compilation failed.
```
Platform: x86-64, Ubuntu 20.04
Affected GCC: gcc-trunk, gcc-13.2.0, gcc-9.4.0.
Affected GDB: gdb-trunk, gdb-12.1, gdb-9.1.
Note: Version gcc-13.2.0 and below will trigger a segmentation fault, rather
than internal compiler error.
In this case, the member name text "loc1" is a must to trigger internal
compiler error.
Note: Alternative text "buf" for gdb-9.1, and "once" for gdb-12.1.
A similar test case when handling the same name of "bar" twice:
```
struct foo { int bar; } * bar;
int main()
{
struct foo x;
x.bar = 0; // break here
return 0;
}
```
```
(gdb) b 6
Breakpoint 1 at 0x40110a: file src2.c, line 6.
(gdb) run
Starting program: /home/asahi/emd/bugs/b/a.out
Breakpoint 1, main () at src2.c:6
6 x.bar = 0;
(gdb) expr x.bar
gdb command line:1:2: warning: statement with no effect [-Wunused-value]
*** WARNING *** there are active plugins, do not report this as a bug unless
you can reproduce it without enabling any plugins.
Event | Plugins
PLUGIN_PRE_GENERICIZE | libcc1plugin
PLUGIN_GGC_MARKING | libcc1plugin
PLUGIN_PRAGMAS | libcc1plugin
gdb command line:1:2: internal compiler error: tree check: expected field_decl,
have indirect_ref in component_ref_field_offset, at tree.cc:13095
0x866436 tree_check_failed(tree_node const*, char const*, int, char const*,
...)
../../gcc/gcc/tree.cc:8955
0x86ea64 tree_check(tree_node*, char const*, int, char const*, tree_code)
../../gcc/gcc/tree.h:3612
0x86ea64 component_ref_field_offset(tree_node*)
../../gcc/gcc/tree.cc:13095
0xd08225 gimplify_compound_lval
../../gcc/gcc/gimplify.cc:3483
0xcff389 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
../../gcc/gcc/gimplify.cc:17740
0xd01de6 gimplify_stmt(tree_node**, gimple**)
../../gcc/gcc/gimplify.cc:7485
0xd0089b gimplify_statement_list
../../gcc/gcc/gimplify.cc:2227
0xd0089b gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
../../gcc/gcc/gimplify.cc:18236
0xd01de6 gimplify_stmt(tree_node**, gimple**)
../../gcc/gcc/gimplify.cc:7485
0xd02ee6 gimplify_bind_expr
../../gcc/gcc/gimplify.cc:1619
0xcffad4 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
../../gcc/gcc/gimplify.cc:17992
0xd16e05 gimplify_stmt(tree_node**, gimple**)
../../gcc/gcc/gimplify.cc:7485
0xd16e05 gimplify_body(tree_node*, bool)
../../gcc/gcc/gimplify.cc:19058
0xd1724c gimplify_function_tree(tree_node*)
../../gcc/gcc/gimplify.cc:19257
0xb3abf7 cgraph_node::analyze()
../../gcc/gcc/cgraphunit.cc:687
0xb3d757 analyze_functions
../../gcc/gcc/cgraphunit.cc:1251
0xb3e6dd symbol_table::finalize_compilation_unit()
../../gcc/gcc/cgraphunit.cc:2558
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
Compilation failed.
```