https://gcc.gnu.org/bugzilla/show_bug.cgi?id=128039

Christophe Lyon <clyon at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2026-10-20
             Status|UNCONFIRMED                 |ASSIGNED

--- Comment #1 from Christophe Lyon <clyon at gcc dot gnu.org> ---
When the compiler processes #pragma GCC arm "arm_mve_types.h" from
arm_mve_types.h (which is included by arm_mve.h), it calls
arm_mve::register_builtin_types which in turn calls
arm_mve::arm_mve_type_for_scalar_type

at this stage, all arm_simd_types[i].eltype have been freed/poisoned by
c_common_read_pch:

#0  __memset_zva64 () at ../sysdeps/aarch64/multiarch/../memset.S:87
#1  0x000000000116ba90 in poison_pages () at /gcc/ggc-page.cc:2236
#2  0x000000000116cf04 in ggc_pch_read (f=0x45a60c0, addr=0x1000000000) at
/gcc/ggc-page.cc:2715
#3  0x00000000014c6200 in gt_pch_restore (f=0x45a60c0) at
/gcc/ggc-common.cc:915
#4  0x0000000001102244 in c_common_read_pch (pfile=0x45a8110,
name=0xfffff750c76c '\245' <repeats 200 times>..., fd=4, 
    orig_name=0xfffff750c76c '\245' <repeats 200 times>...) at
/gcc/c-family/c-pch.cc:345
#5  0x0000000001102598 in c_common_pch_pragma (pfile=0x45a8110,
name=0xfffff750c76c '\245' <repeats 200 times>...) at
/gcc/c-family/c-pch.cc:421
#6  0x0000000000fe5724 in c_parser_pragma_pch_preprocess
(parser=0xffffffffec70) at /gcc/c/c-parser.cc:16453
#7  0x000000000101d690 in c_parse_file () at /gcc/c/c-parser.cc:31570
#8  0x00000000010ff234 in c_common_parse_file () at
/gcc/c-family/c-opts.cc:1442
#9  0x0000000001ae2378 in compile_file () at /gcc/toplev.cc:455
#10 0x0000000001ae6b70 in do_compile () at /gcc/toplev.cc:2228
#11 0x0000000001ae7144 in toplev::main (this=0xffffffffeed0, argc=16,
argv=0xfffffffff078) at /gcc/toplev.cc:2396
#12 0x00000000036c718c in main (argc=16, argv=0xfffffffff078) at
/gcc/main.cc:39


The ICE backtrace is:
0x370588f internal_error(char const*, ...)
        /gcc/diagnostic-global-context.cc:787
0x3715193 fancy_abort(char const*, int, char const*)
        /gcc/diagnostics/context.cc:1813
0x22ea787 arm_mve_type_for_scalar_type
        /gcc/config/arm/arm-mve-builtins.cc:401
0x22ea987 register_builtin_types
        /gcc/config/arm/arm-mve-builtins.cc:422
0x22eb8d3 arm_mve::handle_arm_mve_types_h()
        /gcc/config/arm/arm-mve-builtins.cc:511
0x115da67 arm_pragma_arm
        /gcc/config/arm/arm-c.cc:146
0x1108c5f c_invoke_pragma_handler(unsigned int)
        /gcc/c-family/c-pragma.cc:1775
0xfe5483 c_parser_pragma
        /gcc/c/c-parser.cc:16386
0xfbcba7 c_parser_external_declaration
        /gcc/c/c-parser.cc:2237
0xfbc403 c_parser_translation_unit
        /gcc/c/c-parser.cc:2095
0x101d753 c_parse_file()
        /gcc/c/c-parser.cc:31583
0x10ff233 c_common_parse_file()
        /gcc/c-family/c-opts.cc:1442

So we register MVE vector builtin types at a moment where the element types
have been ggc_freed

Reply via email to