From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 7BA99388A413; Mon, 4 Jan 2021 15:41:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7BA99388A413 From: "marxin at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/98513] [10/11 Regression] Wrong code with -O3 since r10-2804-gbf05a3bbb58b3558 Date: Mon, 04 Jan 2021 15:41:13 +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: 11.0 X-Bugzilla-Keywords: wrong-code X-Bugzilla-Severity: normal X-Bugzilla-Who: marxin at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: marxin at gcc dot gnu.org X-Bugzilla-Target-Milestone: 10.3 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_status assigned_to 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: Mon, 04 Jan 2021 15:41:13 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D98513 Martin Li=C5=A1ka changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |marxin at gcc dot g= nu.org --- Comment #1 from Martin Li=C5=A1ka --- A cleaner test-case: $ cat combined.cc extern unsigned long long var_20; extern unsigned short arr_8[][26][1][1][11]; const int &max(int &a, const int &b) { return a > b ? a : b; } int test___trans_tmp_1, var_5 =3D -1, var_6 =3D -2; void test(int var_5, int var_6, signed char arr_1[1][1][1]) { for (unsigned i_0 =3D 0; i_0 < 21; i_0 +=3D 2) for (int i_2 =3D 0; i_2 < 8; i_2 +=3D 82) { for (int i_3 =3D 0; i_3 < test___trans_tmp_1; i_3++) for (short i_4 =3D 0; i_4 < 20; i_4 +=3D 4) var_20 =3D max(var_5, 0); for (int i_5 =3D 0; i_5 < 19; i_5 +=3D 20) for (int i_6 =3D var_6 + 2; i_6 < var_5 + 3; i_6++) arr_8[3][2][i_2][i_5][i_6] =3D arr_1[0][0][0]; } } unsigned long long var_20; signed char arr_1[1][1][1]; unsigned short arr_8[22][26][1][1][11]; int main() { test(var_5, var_6, arr_1); } Optimized dump contains: [local count: 17523394]: _93 =3D MEM[(signed char[26][19] *)arr_1_31(D) + 1482B][2][0]; _94 =3D (short unsigned int) _93; arr_8[3][2][0][0][-2147483648] =3D _94; <---- HERE if (i_6_103 > _131) goto ; [11.00%] else goto ; [89.00%] which is instruction that causes the segfault. I'm going to take a look.=