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?