From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 86298 invoked by alias); 16 Mar 2015 11:59:09 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 86235 invoked by uid 48); 16 Mar 2015 11:59:05 -0000 From: "ktkachov at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/65358] wrong parameter passing code with tail call optimization on arm Date: Mon, 16 Mar 2015 11:59:00 -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: 4.6.3 X-Bugzilla-Keywords: wrong-code X-Bugzilla-Severity: critical X-Bugzilla-Who: ktkachov at gcc dot gnu.org X-Bugzilla-Status: NEW 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: cc Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-03/txt/msg01578.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65358 ktkachov at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ktkachov at gcc dot gnu.org --- Comment #10 from ktkachov at gcc dot gnu.org --- Hmmm, I have a fix to check_sibcall_argument_overlap in calls.c that's supposed to catch the overlap in accesses on the stack and correctly identify the conflict. This detection has the effect of getting gcc to decide that it can't do a tail-call here. I wonder, is this the way to go i.e. should we indeed be disabling sibcalls in this case? I think so, if the ABI demands that part of the struct is passed on the stack...