[Bug fortran/89462] [7/8/9 Regression] gfortran loops in code generation
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Mar 14 17:39:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89462
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P4
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(gdb) p debug_tree (0x7ffff7ffbab0)
<var_decl 0x7ffff7ffbab0 ..__result
type <integer_type 0x7fffea80a738 integer(kind=8) public DI
size <integer_cst 0x7fffea7f5b70 constant 64>
unit-size <integer_cst 0x7fffea7f5b88 constant 8>
align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fffea80a738 precision:64 min <integer_cst 0x7fffea7f5df8
-9223372036854775808> max <integer_cst 0x7fffea7f5e10 9223372036854775807>
pointer_to_this <pointer_type 0x7fffea83e7e0>>
used DI pr89462.f90:1:0 size <integer_cst 0x7fffea7f5b70 64> unit-size
<integer_cst 0x7fffea7f5b88 8>
align:64 warn_if_not_align:0 context <function_decl 0x7fffea9bfd00
master.0.test> chain <var_decl 0x7ffff7ffbb40 atp>>
$14 = void
(gdb) p debug_tree (0x7ffff7ffbb40)
<var_decl 0x7ffff7ffbb40 atp
type <array_type 0x7fffea9c2c78
type <integer_type 0x7fffea80a348 character(kind=1) public unsigned
string-flag QI
size <integer_cst 0x7fffea7f5c60 constant 8>
unit-size <integer_cst 0x7fffea7f5c78 constant 1>
align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fffea80a348 precision:8 min <integer_cst 0x7fffea7f5c90 0> max <integer_cst
0x7fffea7f5c30 255>
pointer_to_this <pointer_type 0x7fffea816540>>
string-flag BLK
size <save_expr 0x7fffea9a36a0 type <integer_type 0x7fffea80a0a8
bitsizetype>
side-effects
arg:0 <mult_expr 0x7fffea9c1938 type <integer_type 0x7fffea80a0a8
bitsizetype>
arg:0 <nop_expr 0x7fffea9a3680 type <integer_type
0x7fffea80a0a8 bitsizetype>
arg:0 <nop_expr 0x7fffea9a3660 type <integer_type
0x7fffea80a000 sizetype>
arg:0 <non_lvalue_expr 0x7fffea9a3640 type
<integer_type 0x7fffea80a738 integer(kind=8)>
arg:0 <var_decl 0x7ffff7ffbab0 ..__result>>>> arg:1
<integer_cst 0x7fffea7f5c60 8>>>
unit-size <save_expr 0x7fffea9a36c0 type <integer_type 0x7fffea80a000
sizetype>
side-effects arg:0 <nop_expr 0x7fffea9a3660>>
align:8 warn_if_not_align:0 symtab:0 alias-set -1 structural-equality
domain <integer_type 0x7fffea9c2bd0 type <integer_type 0x7fffea80a738
integer(kind=8)>
DI
size <integer_cst 0x7fffea7f5b70 constant 64>
unit-size <integer_cst 0x7fffea7f5b88 constant 8>
align:64 warn_if_not_align:0 symtab:0 alias-set -1
structural-equality precision:64 min <integer_cst 0x7fffea9b5948 1> max
<var_decl 0x7ffff7ffbab0 ..__result>>
pointer_to_this <pointer_type 0x7fffea9c2e70>>
addressable used BLK pr89462.f90:2:0 size <save_expr 0x7fffea9a36a0>
unit-size <save_expr 0x7fffea9a36c0>
align:8 warn_if_not_align:0 context <function_decl 0x7fffea9bfd00
master.0.test> chain <var_decl 0x7ffff7ffbab0 ..__result>>
So, when walking the linked list, we keep bouncing between the two.
I see first:
#0 gfc_add_decl_to_function (decl=<var_decl 0x7ffff7ffbab0 ..__result>) at
../../gcc/fortran/trans-decl.c:249
#1 0x00000000009c9b35 in gfc_finish_var_decl (decl=<var_decl 0x7ffff7ffbab0
..__result>, sym=0x2f83fa0) at ../../gcc/fortran/trans-decl.c:620
#2 0x00000000009ce056 in gfc_get_symbol_decl (sym=0x2f83fa0) at
../../gcc/fortran/trans-decl.c:1784
#3 0x00000000009dcf29 in generate_local_decl (sym=0x2f83fa0) at
../../gcc/fortran/trans-decl.c:5676
#4 0x000000000097a1ea in do_traverse_symtree (st=0x2f20160, st_func=0x0,
sym_func=0x9dce65 <generate_local_decl(gfc_symbol*)>)
at ../../gcc/fortran/symbol.c:4157
#5 0x000000000097a2a5 in gfc_traverse_ns (ns=0x2f86fb0, sym_func=0x9dce65
<generate_local_decl(gfc_symbol*)>) at ../../gcc/fortran/symbol.c:4182
#6 0x00000000009dd6e1 in generate_local_vars (ns=0x2f86fb0) at
../../gcc/fortran/trans-decl.c:5873
then
#0 gfc_add_decl_to_function (decl=<var_decl 0x7ffff7ffbb40 atp>) at
../../gcc/fortran/trans-decl.c:253
#1 0x00000000009c9b35 in gfc_finish_var_decl (decl=<var_decl 0x7ffff7ffbb40
atp>, sym=0x2f83fa0) at ../../gcc/fortran/trans-decl.c:620
#2 0x00000000009ce1fc in gfc_get_symbol_decl (sym=0x2f83fa0) at
../../gcc/fortran/trans-decl.c:1801
#3 0x00000000009dcf29 in generate_local_decl (sym=0x2f83fa0) at
../../gcc/fortran/trans-decl.c:5676
#4 0x000000000097a1ea in do_traverse_symtree (st=0x2f20160, st_func=0x0,
sym_func=0x9dce65 <generate_local_decl(gfc_symbol*)>)
at ../../gcc/fortran/symbol.c:4157
and finally
#0 gfc_add_decl_to_function (decl=<var_decl 0x7ffff7ffbb40 atp>) at
../../gcc/fortran/trans-decl.c:253
#1 0x00000000009c9b35 in gfc_finish_var_decl (decl=<var_decl 0x7ffff7ffbb40
atp>, sym=0x2f83fa0) at ../../gcc/fortran/trans-decl.c:620
#2 0x00000000009ce1fc in gfc_get_symbol_decl (sym=0x2f83fa0) at
../../gcc/fortran/trans-decl.c:1801
#3 0x00000000009dcf29 in generate_local_decl (sym=0x2f83fa0) at
../../gcc/fortran/trans-decl.c:5676
#4 0x000000000097a1ea in do_traverse_symtree (st=0x2f20160, st_func=0x0,
sym_func=0x9dce65 <generate_local_decl(gfc_symbol*)>)
at ../../gcc/fortran/symbol.c:4157
#5 0x000000000097a2a5 in gfc_traverse_ns (ns=0x2f86fb0, sym_func=0x9dce65
<generate_local_decl(gfc_symbol*)>) at ../../gcc/fortran/symbol.c:4182
#6 0x00000000009dd6e1 in generate_local_vars (ns=0x2f86fb0) at
../../gcc/fortran/trans-decl.c:5873
again. No decl can be added twice.
More information about the Gcc-bugs
mailing list