From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29429 invoked by alias); 15 Jul 2011 16:09:57 -0000 Received: (qmail 29420 invoked by uid 22791); 15 Jul 2011 16:09:56 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from mail-pv0-f175.google.com (HELO mail-pv0-f175.google.com) (74.125.83.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 15 Jul 2011 16:09:41 +0000 Received: by pvf24 with SMTP id 24so1358317pvf.20 for ; Fri, 15 Jul 2011 09:09:41 -0700 (PDT) MIME-Version: 1.0 Received: by 10.142.245.10 with SMTP id s10mr1614016wfh.363.1310746181239; Fri, 15 Jul 2011 09:09:41 -0700 (PDT) Received: by 10.142.89.19 with HTTP; Fri, 15 Jul 2011 09:09:41 -0700 (PDT) In-Reply-To: References: <20110709222042.GA4018@intel.com> Date: Fri, 15 Jul 2011 16:17:00 -0000 Message-ID: Subject: Re: PATCH [5/n] X32: Supprot 32bit address From: Uros Bizjak To: "H.J. Lu" Cc: gcc-patches@gcc.gnu.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-07/txt/msg01257.txt.bz2 On Fri, Jul 15, 2011 at 6:07 PM, H.J. Lu wrote: >>>> If the first form of the address is not OK (it does not represent the >>>> hardware operation), then it should not enter into the insn stream. >>>> This means, that it should be fixed ("legitimized") to second form by >>>> appropriate function (it looks that LEGITIMIZE_RELOAD_ADDRESS should >>>> fix it, since the incorrect address is generated by IRA/reload). After >>>> this operation, various predicates, based on ix86_decompose_address >>>> will start to work, since they will decompose valid memory addresses. >>>> >>> >>> IRA/.RELOAD isn't prepared to deal with it and it just ICEs. =A0I opened >>> a few GCC bugs on this. >>> >>> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D47744 >>> >>> is one of them. =A0That is why I went this route. >> >> Hm, but it crashed in postreload pass since the address was not in the >> legitimate form. =A0This is exactly what LEGITIMIZE_RELOAD_ADDRESS >> fixes. Did you try to go this route? >> > > It ran into various ICEs like: > > /export/build/gnu/gcc-x32/build-x86_64-linux/gcc/xgcc > -B/export/build/gnu/gcc-x32/build-x86_64-linux/gcc/ -S -o m.s -mx32 -std= =3Dgnu99 > -O2 -fPIC =A0 =A0m.i > m.i: In function \u2018__kernel_rem_pio2\u2019: > m.i:18:1: error: insn does not satisfy its constraints: > (insn 108 106 186 3 (set (reg:SI 40 r11 [207]) > =A0 =A0 =A0 =A0(plus:SI (plus:SI (mult:SI (reg:SI 1 dx [205]) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(const_int 8 [0x8])) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(subreg:SI (plus:DI (reg/f:DI 7 sp) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(const_int 208 [0xd0])) 0)) > =A0 =A0 =A0 =A0 =A0 =A0(const_int -160 [0xffffffffffffff60]))) m.i:3 251 = {*lea_1_x32} > =A0 =A0 (nil)) > m.i:18:1: internal compiler error: in reload_cse_simplify_operands, at > postreload.c:403 > Please submit a full bug report, > with preprocessed source if appropriate. > See for instructions. > make: *** [m.s] Error 1 Yes, this is an example from PR I am referring to. Did you try to define LEGITIMIZE_RELOAD_ADDRESS? It is supposed to fix this. Uros.