From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 9D01E3858CDB; Mon, 18 Mar 2024 10:16:47 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9D01E3858CDB DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1710757007; bh=oJgQ+mffnAweSVw//sOTFRF4M6vbwDtYLqycBgN7GOw=; h=From:To:Subject:Date:In-Reply-To:References:From; b=cMq9k0/WyW7Mu76DLeXlvokkRq5ssNAFEw/8f8JY6ytYgNvJqxBgohGvcSS4kCU1U tsgbR+hnX8n3CqOVy3QjSIE/Opj5LAkbuHYtuCZdLq2gV/xG3X7xIYBxW1NBQSVUmP xyBoYshu8nA7L6BZWayhJ69mM6751f0fxuh4nt4w= From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/114175] [13/14] Execution test failures on gcc.dg/c23-stdarg-6.c on multiple targets Date: Mon, 18 Mar 2024 10:16:45 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 14.0 X-Bugzilla-Keywords: ABI, testsuite-fail X-Bugzilla-Severity: normal X-Bugzilla-Who: jakub 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 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D114175 --- Comment #27 from Jakub Jelinek --- More complete testcase: #include struct S { int a[1024]; }; int f1 (...) { int r =3D 0; va_list ap; va_start (ap); r +=3D va_arg (ap, i= nt); va_end (ap); return r; } int f2 (...) { int r =3D 0; va_list ap; va_start (ap); r +=3D va_arg (ap, i= nt); r +=3D va_arg (ap, int); va_end (ap); return r; } int f3 (...) { int r =3D 0; va_list ap; va_start (ap); r +=3D va_arg (ap, i= nt); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); va_end (ap); return r; } int f4 (...) { int r =3D 0; va_list ap; va_start (ap); r +=3D va_arg (ap, i= nt); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); va= _end (ap); return r; } int f5 (...) { int r =3D 0; va_list ap; va_start (ap); r +=3D va_arg (ap, i= nt); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r = +=3D va_arg (ap, int); va_end (ap); return r; } int f6 (...) { int r =3D 0; va_list ap; va_start (ap); r +=3D va_arg (ap, i= nt); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r = +=3D va_arg (ap, int); r +=3D va_arg (ap, int); va_end (ap); return r; } int f7 (...) { int r =3D 0; va_list ap; va_start (ap); r +=3D va_arg (ap, i= nt); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r = +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); va_end (ap); r= eturn r; } int f8 (...) { int r =3D 0; va_list ap; va_start (ap); r +=3D va_arg (ap, i= nt); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r = +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r +=3D va_arg = (ap, int); va_end (ap); return r; } struct S s1 (...) { int r =3D 0; va_list ap; va_start (ap); r +=3D va_arg (= ap, int); va_end (ap); struct S s; s.a[0] =3D r; return s; } struct S s2 (...) { int r =3D 0; va_list ap; va_start (ap); r +=3D va_arg (= ap, int); r +=3D va_arg (ap, int); va_end (ap); struct S s; s.a[0] =3D r; retur= n s; } struct S s3 (...) { int r =3D 0; va_list ap; va_start (ap); r +=3D va_arg (= ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); va_end (ap); struct= S s; s.a[0] =3D r; return s; } struct S s4 (...) { int r =3D 0; va_list ap; va_start (ap); r +=3D va_arg (= ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, = int); va_end (ap); struct S s; s.a[0] =3D r; return s; } struct S s5 (...) { int r =3D 0; va_list ap; va_start (ap); r +=3D va_arg (= ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, = int); r +=3D va_arg (ap, int); va_end (ap); struct S s; s.a[0] =3D r; return s; } struct S s6 (...) { int r =3D 0; va_list ap; va_start (ap); r +=3D va_arg (= ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, = int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); va_end (ap); struct S s; s.a[0] = =3D r; return s; } struct S s7 (...) { int r =3D 0; va_list ap; va_start (ap); r +=3D va_arg (= ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, = int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); va_end = (ap); struct S s; s.a[0] =3D r; return s; } struct S s8 (...) { int r =3D 0; va_list ap; va_start (ap); r +=3D va_arg (= ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, = int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r +=3D va_arg (ap, int); r +=3D = va_arg (ap, int); va_end (ap); struct S s; s.a[0] =3D r; return s; } int b1 (void) { return f8 (1, 2, 3, 4, 5, 6, 7, 8); } int b2 (void) { return s8 (1, 2, 3, 4, 5, 6, 7, 8).a[0]; } int main () { if (f1 (1) !=3D 1 || f2 (1, 2) !=3D 3 || f3 (1, 2, 3) !=3D 6 = || f4 (1, 2, 3, 4) !=3D 10 || f5 (1, 2, 3, 4, 5) !=3D 15 || f6 (1, 2, 3, 4, 5, 6) != =3D 21 || f7 (1, 2, 3, 4, 5, 6, 7) !=3D 28 || f8 (1, 2, 3, 4, 5, 6, 7, 8) !=3D 36) __builtin_abort (); if (s1 (1).a[0] !=3D 1 || s2 (1, 2).a[0] !=3D 3 || s3 (1, 2, 3).a[0] !=3D 6= || s4 (1, 2, 3, 4).a[0] !=3D 10 || s5 (1, 2, 3, 4, 5).a[0] !=3D 15 || s6 (1, 2, 3, 4,= 5, 6).a[0] !=3D 21 || s7 (1, 2, 3, 4, 5, 6, 7).a[0] !=3D 28 || s8 (1, 2, 3, 4,= 5, 6, 7, 8).a[0] !=3D 36) __builtin_abort (); }=