https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102162
--- Comment #19 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Gimple level does look correct: <component_ref 0x7ffff7359300 type <integer_type 0x7ffff7315b28 u32 readonly unsigned SI size <integer_cst 0x7ffff7244b40 constant 32> unit-size <integer_cst 0x7ffff7244b58 constant 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff7315bd0 precision:32 min <integer_cst 0x7ffff7244b70 0> max <integer_cst 0x7ffff7244b28 4294967295> context <translation_unit_decl 0x7ffff733e870 t.c>> readonly arg:0 <mem_ref 0x7ffff735b2f8 type <record_type 0x7ffff73159d8 readonly no-force-blk packed type_0 BLK size <integer_cst 0x7ffff7244b40 32> unit-size <integer_cst 0x7ffff7244b58 4> align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff73159d8 attributes <tree_list 0x7ffff732bd20 purpose <identifier_node 0x7ffff7344690 packed>> fields <field_decl 0x7ffff725ebe0 x> context <block 0x7ffff7338420> pointer_to_this <pointer_type 0x7ffff7315a80>> arg:0 <addr_expr 0x7ffff73326e0 type <pointer_type 0x7ffff7315888> constant arg:0 <var_decl 0x7ffff7ff6120 output_len> t.c:17:9 start: t.c:17:9 finish: t.c:17:39> arg:1 <integer_cst 0x7ffff733bf00 constant 0>> arg:1 <field_decl 0x7ffff725ebe0 x type <integer_type 0x7ffff7315738 u32 unsigned SI size <integer_cst 0x7ffff7244b40 32> unit-size <integer_cst 0x7ffff7244b58 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff7251690 precision:32 min <integer_cst 0x7ffff7244b70 0> max <integer_cst 0x7ffff7244b28 4294967295> context <translation_unit_decl 0x7ffff733e870 t.c> pointer_to_this <pointer_type 0x7ffff7315888>> unsigned packed SI t.c:12:33 size <integer_cst 0x7ffff7244b40 32> unit-size <integer_cst 0x7ffff7244b58 4> align:8 warn_if_not_align:0 offset_align 128 offset <integer_cst 0x7ffff7244930 constant 0> bit-offset <integer_cst 0x7ffff7244948 constant 0> context <record_type 0x7ffff7315930>> t.c:12:103 start: t.c:12:97 finish: t.c:12:105> The var_decl too: (gdb) p debug_tree(0x7ffff7ff6120) <var_decl 0x7ffff7ff6120 output_len type <integer_type 0x7ffff7315738 u32 unsigned SI size <integer_cst 0x7ffff7244b40 constant 32> unit-size <integer_cst 0x7ffff7244b58 constant 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff7251690 precision:32 min <integer_cst 0x7ffff7244b70 0> max <integer_cst 0x7ffff7244b28 4294967295> context <translation_unit_decl 0x7ffff733e870 t.c> pointer_to_this <pointer_type 0x7ffff7315888>> addressable used public unsigned external read SI t.c:6:14 size <integer_cst 0x7ffff7244b40 32> unit-size <integer_cst 0x7ffff7244b58 4> user align:8 warn_if_not_align:0 context <translation_unit_decl 0x7ffff733e870 t.c> attributes <tree_list 0x7ffff732bc30 purpose <identifier_node 0x7ffff7344500 aligned> value <tree_list 0x7ffff732bbb8 value <integer_cst 0x7ffff7244cf0 constant 1>>> chain <function_decl 0x7ffff7336a00 test>>