https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98636
--- Comment #13 from prathamesh3492 at gcc dot gnu.org --- IIUC, the issue comes from the following mismatch in cl_optimization_compare: if (ptr1->x_arm_fp16_format != ptr2->x_arm_fp16_format) internal_error ("%<global_options%> are modified in local context"); x_arm_fp16_format is of following type defined in arm-opts.h: /* Which __fp16 format to use. The enumeration values correspond to the numbering for the Tag_ABI_FP_16bit_format attribute. */ enum arm_fp16_format_type { ARM_FP16_FORMAT_NONE = 0, ARM_FP16_FORMAT_IEEE = 1, ARM_FP16_FORMAT_ALTERNATIVE = 2 }; For the test-case passing -mfp16-format=alternative results in: ptr1->x_arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE and ptr2->x_arm_fp16_format == ARM_FP16_FORMAT_IEEE, and the mismatch results in ICE. Thanks, Prathamesh