From patchwork Sun Mar 6 19:18:46 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 85589 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 49AC4B70CF for ; Mon, 7 Mar 2011 06:18:54 +1100 (EST) Received: (qmail 30763 invoked by alias); 6 Mar 2011 19:18:52 -0000 Received: (qmail 30755 invoked by uid 22791); 6 Mar 2011 19:18:52 -0000 X-SWARE-Spam-Status: No, hits=-4.5 required=5.0 tests=AWL, BAYES_00, NO_DNS_FOR_FROM, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mga11.intel.com (HELO mga11.intel.com) (192.55.52.93) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 06 Mar 2011 19:18:48 +0000 Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga102.fm.intel.com with ESMTP; 06 Mar 2011 11:18:46 -0800 X-ExtLoop1: 1 Received: from gnu-6.sc.intel.com ([10.3.194.135]) by fmsmga002.fm.intel.com with ESMTP; 06 Mar 2011 11:18:46 -0800 Received: by gnu-6.sc.intel.com (Postfix, from userid 500) id ABB92180973; Sun, 6 Mar 2011 11:18:46 -0800 (PST) Date: Sun, 6 Mar 2011 11:18:46 -0800 From: "H.J. Lu" To: gcc-patches@gcc.gnu.org Subject: [x32] PATCH: Check SUBREG_REG for parts.index and parts.base Message-ID: <20110306191846.GA21150@intel.com> Reply-To: "H.J. Lu" MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Hi, X32 may use SUBREG_REG in parts.index and parts.base. I checked this patch into x32 branch. H.J. --- commit e2f00cf7ffb008eb4710221853d82fa1b81433e0 Author: H.J. Lu Date: Sun Mar 6 11:14:50 2011 -0800 Check SUBREG_REG for parts.index and parts.base. diff --git a/gcc/ChangeLog.x32 b/gcc/ChangeLog.x32 index 0fae773..f39563b 100644 --- a/gcc/ChangeLog.x32 +++ b/gcc/ChangeLog.x32 @@ -1,5 +1,10 @@ 2011-03-06 H.J. Lu + * config/i386/predicates.md (aligned_operand): Check SUBREG_REG + for parts.index and parts.base. + +2011-03-06 H.J. Lu + * config/i386/i386.c (ix86_expand_call): Convert function address to Pmode if needed. diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md index 55a04e3..4bd5688 100644 --- a/gcc/config/i386/predicates.md +++ b/gcc/config/i386/predicates.md @@ -853,11 +853,15 @@ /* Look for some component that isn't known to be aligned. */ if (parts.index) { + if (GET_CODE (parts.index) == SUBREG) + parts.index = SUBREG_REG (parts.index); if (REGNO_POINTER_ALIGN (REGNO (parts.index)) * parts.scale < 32) return false; } if (parts.base) { + if (GET_CODE (parts.base) == SUBREG) + parts.base = SUBREG_REG (parts.base); if (REGNO_POINTER_ALIGN (REGNO (parts.base)) < 32) return false; }