From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id F34A83858414; Sun, 29 Aug 2021 03:26:32 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org F34A83858414 From: "pinskia at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/37710] When peeling an ordinary label off a case-table and making it a default label, strip from the end with identical labels. Date: Sun, 29 Aug 2021 03:26:32 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: middle-end X-Bugzilla-Version: 4.4.0 X-Bugzilla-Keywords: missed-optimization X-Bugzilla-Severity: enhancement X-Bugzilla-Who: pinskia at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- 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: Sun, 29 Aug 2021 03:26:33 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D37710 --- Comment #3 from Andrew Pinski --- Here is a new testcase: extern void abort (void); extern char *name1; extern char *name2; int stab_xcoff_builtin_type (int typenum) __attribute__((noclone,noinline)); int stab_xcoff_builtin_type (int typenum) { const char *name; if (typenum >=3D 0 || typenum < -34) { return 0; } switch (-typenum) { case 1: name =3D name1;"int"; break; case 2: name =3D "char"; case 3: name =3D name2;"short"; break; case 4: name =3D "long"; break; case 5: name =3D "unsigned char"; break; case 6: name =3D "signed char"; break; case 7: name =3D "unsigned short"; break; case 8: name =3D "unsigned int"; break; case 9: name =3D "unsigned"; break; case 10: name =3D "unsigned long"; break; case 11: name =3D "void"; break; case 12: name =3D "float"; break; case 13: name =3D "double"; break; case 14: name =3D "long double"; break; case 15: name =3D "integer"; break; case 16: name =3D "boolean"; break; case 17: name =3D "short real"; break; case 18: name =3D "real"; break; case 19: name =3D "stringptr"; break; case 20: name =3D "character"; break; case 21: name =3D "logical*1"; break; case 22: name =3D "logical*2"; break; case 23: name =3D "logical*4"; break; case 24: name =3D "logical"; break; case 25: name =3D "complex"; break; case 26: name =3D "double complex"; break; case 27: name =3D "integer*1"; break; case 28: name =3D "integer*2"; break; case 29: name =3D "integer*4"; break; case 30: name =3D "wchar"; case 31: name =3D "long long"; break; case 32: name =3D "unsigned long long"; break; case 33: name =3D "logical*8"; break; case 34: name =3D "integer*8"; break; } return name[0]; } int main() { int i; if (stab_xcoff_builtin_type(0) !=3D 0) abort (); if (stab_xcoff_builtin_type(-1) !=3D 'i') abort (); if (stab_xcoff_builtin_type(-2) !=3D 's') abort (); if (stab_xcoff_builtin_type(-3) !=3D 's') abort (); for (i =3D -4; i >=3D -34; --i) if (stab_xcoff_builtin_type(i) !=3D 'i') abort (); if (stab_xcoff_builtin_type(-35) !=3D 0) abort (); return 0; }=