From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17678 invoked by alias); 27 Jul 2010 20:16:16 -0000 Received: (qmail 17561 invoked by uid 48); 27 Jul 2010 20:15:57 -0000 Date: Tue, 27 Jul 2010 20:16:00 -0000 Message-ID: <20100727201557.17560.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug bootstrap/44993] [4.6 regression] sparc64-linux bootstrap broken In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "ebotcazou at gcc dot gnu dot org" 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 X-SW-Source: 2010-07/txt/msg03004.txt.bz2 ------- Comment #3 from ebotcazou at gcc dot gnu dot org 2010-07-27 20:15 ------- Introduced by the fix for PR middle-end/44790: 2010-07-07 Richard Guenther PR middle-end/44790 * expr.c (expand_expr_real_1): Go the POINTER_PLUS_EXPR path for expanding the constant offset for MEM_REFs. The problem is that: name = MEM[(struct exp_ch3__make_predefined_primitive_specs__B_99__stream_op_tss_names___PAD *)D.14526_1156 + 4294967296B]; is expanded into sethi %hi(stream_op_tss_names.6060+4294967296), %l2 or %l2, %lo(stream_op_tss_names.6060+4294967296), %l2 which overflows since sethi is a 32-bit operator. Going through POINTER_PLUS_EXPR to expand a const addresss apparently bypasses checks for valid addresses in the back-end. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44993