From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4438 invoked by alias); 9 Sep 2005 17:43:52 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 4360 invoked by uid 48); 9 Sep 2005 17:43:41 -0000 Date: Fri, 09 Sep 2005 17:43:00 -0000 Message-ID: <20050909174341.4359.qmail@sourceware.org> From: "jakub at gcc dot gnu dot org" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20050908023129.23775.snyder@fnal.gov> References: <20050908023129.23775.snyder@fnal.gov> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug target/23775] [4.1 Regression] wrong code in argument passing X-Bugzilla-Reason: CC X-SW-Source: 2005-09/txt/msg01160.txt.bz2 List-Id: ------- Additional Comments From jakub at gcc dot gnu dot org 2005-09-09 17:43 ------- The difference between 4.0 and HEAD is the expr.c hunk of http://gcc.gnu.org/ml/gcc-patches/2005-07/msg02021.html If Paolo's reversion of that: http://gcc.gnu.org/ml/gcc-patches/2005-09/msg00589.html makes it in, the testcase will pass again. The real problem is I think that when calls.c decides to save stack area under an argument for the inner expand_call, but that argument partially overlaps with the result of the call, we save/restore the argument with the inner expand_call's argument mode and don't just limit to the actual bytes that have already been initialized. So we read some uninitialized bits from the stack and overwrite with them the computed argument. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23775