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?

Reply via email to