From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9550 invoked by alias); 25 Jan 2006 01:05:28 -0000 Received: (qmail 9523 invoked by uid 48); 25 Jan 2006 01:05:25 -0000 Date: Wed, 25 Jan 2006 01:05:00 -0000 Message-ID: <20060125010525.9522.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug rtl-optimization/25703] [4.2 Regression] ACATS cxa4024 failure In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "roger at eyesopen dot com" 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 X-SW-Source: 2006-01/txt/msg02666.txt.bz2 List-Id: ------- Comment #5 from roger at eyesopen dot com 2006-01-25 01:05 ------- I'm testing the following patch... Index: combine.c =================================================================== *** combine.c (revision 109912) --- combine.c (working copy) *************** try_combine (rtx i3, rtx i2, rtx i1, int *** 1967,1972 **** --- 1967,1983 ---- if (BITS_BIG_ENDIAN) offset = GET_MODE_BITSIZE (GET_MODE (XEXP (dest, 0))) - width - offset; + + /* If this is the low part, we're done. */ + if (subreg_lowpart_p (XEXP (dest, 0))) + ; + /* Handle the case where inner is twice the size of outer. */ + else if (GET_MODE_BITSIZE (GET_MODE (SET_DEST (temp))) + == 2 * GET_MODE_BITSIZE (GET_MODE (XEXP (dest, 0)))) + offset += GET_MODE_BITSIZE (GET_MODE (XEXP (dest, 0))); + /* Otherwise give up for now. */ + else + offset = -1; } } else if (subreg_lowpart_p (dest)) My apologies for any inconvenience. -- roger at eyesopen dot com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |roger at eyesopen dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25703