From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 48F763858CDA; Thu, 21 Mar 2024 15:08:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 48F763858CDA DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1711033684; bh=AVuvG+VFoL/M6emi9HeLUekhLThGmn8WlLUegL6ZYUc=; h=From:To:Subject:Date:In-Reply-To:References:From; b=QjewzF21g0PwxUHkxr1Di8ULZmjqwLcVwgbEZTtWbZhvJn0fireTt+IQTQy4pISzR oP4+zpn4IxJ6e5Yl6DqUxRH/P1Wp5EuwfkMC8DurstyMDQ9rHCujC+PZVfTPI8Wkk9 aMnRLiIk6YhLARqYs2rZQoz7RLRUERXxqT2PPbcI= From: "ro at CeBiTec dot Uni-Bielefeld.DE" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/114416] SPARC V9 struct return with floating-point members violates ABI Date: Thu, 21 Mar 2024 15:08:04 +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, wrong-code X-Bugzilla-Severity: normal X-Bugzilla-Who: ro at CeBiTec dot Uni-Bielefeld.DE 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: 14.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 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D114416 --- Comment #3 from ro at CeBiTec dot Uni-Bielefeld.DE --- I've now also found p. 3P-10: %f0 through %f7 Floating-point fields from structure return (%d0 through %d6) values with a total size of 32 bytes or less (%q0 and %q4) appear in the floating-point registers. and %o0 through %o5 Outgoing non-floating-point parameters slots use up to 6 corresponding out registers. Arguments beyond the sixth extended-word appear on the stack. The second line seems pretty clear that the %o[0-5] registers are only for non-fp parameter slots, while the first could be interpreted either way (fp *fields only* or fp fields in general). While compatibility with the vendor compiler is a strong argument, in the end the ABI remains the reference.=