https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92860
--- Comment #57 from Martin Liška <marxin at gcc dot gnu.org> --- (In reply to David Binderman from comment #56) > (In reply to Martin Liška from comment #55) > > > > > > with line numbers please :) > > > > cat -n can do that > > Sorry, I went a bit hard-of-thinking there. > > 13029 void > 13030 cl_optimization_compare (gcc_options *ptr1, gcc_options *ptr2) > 13031 { > 13032 if (ptr1->x_help_flag != ptr2->x_help_flag) > 13033 internal_error ("%<global_options%> are modified in local > context"); > 13034 if (ptr1->x_no_sysroot_suffix != ptr2->x_no_sysroot_suffix) > 13035 internal_error ("%<global_options%> are modified in local > context"); > 13036 if (ptr1->x_param_align_loop_iterations != > ptr2->x_param_align_loop_iterations) > 13037 internal_error ("%<global_options%> are modified in local > context"); > 13038 if (ptr1->x_param_align_threshold != ptr2->x_param_align_threshold) > 13039 internal_error ("%<global_options%> are modified in local > context"); > 13040 if (ptr1->x_param_analyzer_bb_explosion_factor != > ptr2->x_param_analyzer_bb_explosion_factor) > 13041 internal_error ("%<global_options%> are modified in local > context"); > 13042 if (ptr1->x_param_analyzer_max_constraints != > ptr2->x_param_analyzer_max_constraints) > 13043 internal_error ("%<global_options%> are modified in local > context"); > > So the first test is failing. Hm, that's super-weird. It should be 0 for both of them. Can you please build options-save.c with -O0 and debug it: (gdb) b cl_optimization_compare (gdb) p ptr1->x_help_flag $1 = 0 (gdb) p ptr2->x_help_flag $2 = 0 and then put a watch for the value that is non-zero: (gdb) p &ptr1->x_help_flag $3 = (int *) 0x26c87d0 (gdb) watch *$3 Hardware watchpoint 4: *$3 (gdb) r Old value = <unreadable> New value = 0 handle_pragma_push_options (dummy=<optimized out>) at /home/marxin/Programming/gcc/gcc/c-family/c-pragma.c:1041 1041 *p->saved_global_options = global_options; (gdb) c