https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65771
--- Comment #3 from ktkachov at gcc dot gnu.org ---
(In reply to ktkachov from comment #2)
> The loc tree that ends up hitting the gcc_unreachable is:
> <debug_expr_decl 0x7ffff72511e0 D.4294967294
> type <integer_type 0x7ffff7035690 int sizes-gimplified asm_written
> public SI
> size <integer_cst 0x7ffff7031eb8 constant 32>
> unit size <integer_cst 0x7ffff7031ed0 constant 4>
> align 32 symtab -151568224 alias set 1 canonical type 0x7ffff7035690
> precision 32 min <integer_cst 0x7ffff7043108 -2147483648> max <integer_cst
> 0x7ffff7043120 2147483647>
> pointer_to_this <pointer_type 0x7ffff7049930>>
> visited SI file traces.i line 7 col 1
> align 1
> (debug_expr:SI D#2)>
The switch statement in loc_list_from_tree
doesn't handle DEBUG_EXPR_DECL which is why it ICEs.
However, I'm not familiar with the code.
Should it handle DEBUG_EXPR_DECL (just return 0)?
the loc contents in the stack frame above are:
<nop_expr 0x7ffff71d8b80
type <integer_type 0x7ffff70350a8 sizetype public unsigned SI
size <integer_cst 0x7ffff7031eb8 constant 32>
unit size <integer_cst 0x7ffff7031ed0 constant 4>
align 32 symtab 0 alias set -1 canonical type 0x7ffff70350a8 precision
32 min <integer_cst 0x7ffff7031ee8 0> max <integer_cst 0x7ffff7031000
4294967295>>
arg 0 <debug_expr_decl 0x7ffff72511e0 D.4294967294
type <integer_type 0x7ffff7035690 int sizes-gimplified asm_written
public SI size <integer_cst 0x7ffff7031eb8 32> unit size <integer_cst
0x7ffff7031ed0 4>
align 32 symtab -151568224 alias set 1 canonical type
0x7ffff7035690 precision 32 min <integer_cst 0x7ffff7043108 -2147483648> max
<integer_cst 0x7ffff7043120 2147483647>
pointer_to_this <pointer_type 0x7ffff7049930>>
visited SI file traces.i line 7 col 1
align 1
(debug_expr:SI D#2)>>
is the handling of nop_expr correct here?