From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 178963857C44; Fri, 2 Jul 2021 07:48:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 178963857C44 From: "marxin at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/92860] [9/10/11/12 regression] Global flags affected by -O settings are clobbered by optimize attribute Date: Fri, 02 Jul 2021 07:48:30 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: tree-optimization X-Bugzilla-Version: 10.0 X-Bugzilla-Keywords: deferred X-Bugzilla-Severity: normal X-Bugzilla-Who: marxin at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Resolution: X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: marxin at gcc dot gnu.org X-Bugzilla-Target-Milestone: 12.0 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jul 2021 07:48:31 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D92860 --- Comment #57 from Martin Li=C5=A1ka --- (In reply to David Binderman from comment #56) > (In reply to Martin Li=C5=A1ka from comment #55) > > >=20 > > > with line numbers please :) > >=20 > > cat -n can do that >=20 > Sorry, I went a bit hard-of-thinking there.=20 >=20 > 13029 void > 13030 cl_optimization_compare (gcc_options *ptr1, gcc_options *ptr2) > 13031 { > 13032 if (ptr1->x_help_flag !=3D ptr2->x_help_flag) > 13033 internal_error ("% are modified in local > context"); > 13034 if (ptr1->x_no_sysroot_suffix !=3D ptr2->x_no_sysroot_suffix) > 13035 internal_error ("% are modified in local > context"); > 13036 if (ptr1->x_param_align_loop_iterations !=3D > ptr2->x_param_align_loop_iterations) > 13037 internal_error ("% are modified in local > context"); > 13038 if (ptr1->x_param_align_threshold !=3D ptr2->x_param_align_thre= shold) > 13039 internal_error ("% are modified in local > context"); > 13040 if (ptr1->x_param_analyzer_bb_explosion_factor !=3D > ptr2->x_param_analyzer_bb_explosion_factor) > 13041 internal_error ("% are modified in local > context"); > 13042 if (ptr1->x_param_analyzer_max_constraints !=3D > ptr2->x_param_analyzer_max_constraints) > 13043 internal_error ("% are modified in local > context"); >=20 > So the first test is failing. Hm, that's super-weird. It should be 0 for both of them. Can you please bui= ld options-save.c with -O0 and debug it: (gdb) b cl_optimization_compare (gdb) p ptr1->x_help_flag $1 =3D 0 (gdb) p ptr2->x_help_flag $2 =3D 0 and then put a watch for the value that is non-zero: (gdb) p &ptr1->x_help_flag $3 =3D (int *) 0x26c87d0 (gdb) watch *$3 Hardware watchpoint 4: *$3 (gdb) r Old value =3D New value =3D 0 handle_pragma_push_options (dummy=3D) at /home/marxin/Programming/gcc/gcc/c-family/c-pragma.c:1041 1041 *p->saved_global_options =3D global_options; (gdb) c=