From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8688 invoked by alias); 16 Jun 2011 06:35:05 -0000 Received: (qmail 8558 invoked by uid 22791); 16 Jun 2011 06:35:04 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST X-Spam-Check-By: sourceware.org Received: from mail-qw0-f47.google.com (HELO mail-qw0-f47.google.com) (209.85.216.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 16 Jun 2011 06:34:50 +0000 Received: by qwh5 with SMTP id 5so601569qwh.20 for ; Wed, 15 Jun 2011 23:34:49 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.17.148 with SMTP id s20mr9160qca.149.1308167715512; Wed, 15 Jun 2011 12:55:15 -0700 (PDT) Received: by 10.229.47.78 with HTTP; Wed, 15 Jun 2011 12:55:15 -0700 (PDT) In-Reply-To: References: <20110611160548.GA20036@intel.com> Date: Thu, 16 Jun 2011 06:41:00 -0000 Message-ID: Subject: Re: PATCH [5/n]: Prepare x32: PR middle-end/48016: Inconsistency in non-local goto save area From: "H.J. Lu" To: Michael Matz Cc: gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary=00151761c926fd638904a5c58747 X-IsSubscribed: yes 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-06/txt/msg01200.txt.bz2 --00151761c926fd638904a5c58747 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 2305 On Wed, Jun 15, 2011 at 8:16 AM, Michael Matz wrote: > Hi, > > On Wed, 15 Jun 2011, H.J. Lu wrote: > >> >> + =A0/* FIXME: update_nonlocal_goto_save_area may pass SA in the wron= g mode. =A0*/ >> >> + =A0if (GET_MODE (sa) !=3D mode) >> >> + =A0 =A0{ >> >> + =A0 =A0 =A0gcc_assert (ptr_mode !=3D Pmode >> >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 && GET_MODE (sa) =3D=3D ptr_mode >> >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 && mode =3D=3D Pmode); >> >> + =A0 =A0 =A0sa =3D adjust_address (sa, mode, 0); >> >> + =A0 =A0} >> > >> > That may be appropriate for a branch, but trunk shouldn't contain FIXM= Es >> > that explain how something should be fixed, instead that something sho= uld >> > be carried out. =A0I.e. just fix update_nonlocal_goto_save_area. >> > >> >> I don't know update_nonlocal_goto_save_area enough to fix it >> without breaking other targets. =A0This patch is the lest invasive. >> Any suggestions how to properly fix it is appreciated. > > Well, the most obvious variant would be to move the above code right > before the call of emit_stack_save in update_nonlocal_goto_save_area > (using r_save and STACK_SAVEAREA_MODE (SAVE_NONLOCAL)). =A0All other call= ers > of emit_stack_save already make sure to pass an object of correct mode, so > this one should too. > > But I think it's better to just produce a correct array_ref from the > start. =A0get_nl_goto_field creates an array_type for the > nonlocal_goto_save_area of correct type (ptr_type_node or > lang_hooks.types.type_for_mode (Pmode, 1)), and we should use that. > > So something like this in update_nonlocal_goto_save_area: > =A0t_save =3D build4 (ARRAY_REF, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 TREE_TYPE (TREE_TYPE (cfun->nonlocal_= goto_save_area)), > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 cfun->nonlocal_goto_save_area, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 integer_one_node, NULL_TREE, NULL_TRE= E); > > instead of the current building of t_save. =A0Then r_save also should get > the correct mode automatically. > Here is the updated patch. OK for trunk? Thanks. --=20 H.J. --- 2011-06-15 H.J. Lu PR middle-end/48016 * explow.c (update_nonlocal_goto_save_area): Use proper mode for stack save area. * function.c (expand_function_start): Properly store frame pointer for non-local goto. --00151761c926fd638904a5c58747 Content-Type: text/x-diff; charset=US-ASCII; name="gcc-x32-pr48016-2.patch" Content-Disposition: attachment; filename="gcc-x32-pr48016-2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_goyp86wm0 Content-length: 2009 MjAxMS0wNi0xNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoK CVBSIG1pZGRsZS1lbmQvNDgwMTYKCSogZXhwbG93LmMgKHVwZGF0ZV9ub25s b2NhbF9nb3RvX3NhdmVfYXJlYSk6IFVzZSBwcm9wZXIgbW9kZQoJZm9yIHN0 YWNrIHNhdmUgYXJlYS4KCgkqIGZ1bmN0aW9uLmMgKGV4cGFuZF9mdW5jdGlv bl9zdGFydCk6IFByb3Blcmx5IHN0b3JlIGZyYW1lCglwb2ludGVyIGZvciBu b24tbG9jYWwgZ290by4KCmRpZmYgLS1naXQgYS9nY2MvZXhwbG93LmMgYi9n Y2MvZXhwbG93LmMKaW5kZXggYzdkODE4My4uZWZlNmM3ZSAxMDA2NDQKLS0t IGEvZ2NjL2V4cGxvdy5jCisrKyBiL2djYy9leHBsb3cuYwpAQCAtMTEwMiw3 ICsxMDk3LDkgQEAgdXBkYXRlX25vbmxvY2FsX2dvdG9fc2F2ZV9hcmVhICh2 b2lkKQogICAgICBmaXJzdCBvbmUgaXMgdXNlZCBmb3IgdGhlIGZyYW1lIHBv aW50ZXIgc2F2ZTsgdGhlIHJlc3QgYXJlIHNpemVkIGJ5CiAgICAgIFNUQUNL X1NBVkVBUkVBX01PREUuICBDcmVhdGUgYSByZWZlcmVuY2UgdG8gYXJyYXkg aW5kZXggMSwgdGhlIGZpcnN0CiAgICAgIG9mIHRoZSBzdGFjayBzYXZlIGFy ZWEgc2xvdHMuICAqLwotICB0X3NhdmUgPSBidWlsZDQgKEFSUkFZX1JFRiwg cHRyX3R5cGVfbm9kZSwgY2Z1bi0+bm9ubG9jYWxfZ290b19zYXZlX2FyZWEs CisgIHRfc2F2ZSA9IGJ1aWxkNCAoQVJSQVlfUkVGLAorCQkgICBUUkVFX1RZ UEUgKFRSRUVfVFlQRSAoY2Z1bi0+bm9ubG9jYWxfZ290b19zYXZlX2FyZWEp KSwKKwkJICAgY2Z1bi0+bm9ubG9jYWxfZ290b19zYXZlX2FyZWEsCiAJCSAg IGludGVnZXJfb25lX25vZGUsIE5VTExfVFJFRSwgTlVMTF9UUkVFKTsKICAg cl9zYXZlID0gZXhwYW5kX2V4cHIgKHRfc2F2ZSwgTlVMTF9SVFgsIFZPSURt b2RlLCBFWFBBTkRfV1JJVEUpOwogCmRpZmYgLS1naXQgYS9nY2MvZnVuY3Rp b24uYyBiL2djYy9mdW5jdGlvbi5jCmluZGV4IDgxYzRkMzkuLjEzMWJjMDkg MTAwNjQ0Ci0tLSBhL2djYy9mdW5jdGlvbi5jCisrKyBiL2djYy9mdW5jdGlv bi5jCkBAIC00NzgwLDcgKzQ3ODAsNyBAQCBleHBhbmRfZnVuY3Rpb25fc3Rh cnQgKHRyZWUgc3VicikKIAkJICAgICAgIGNmdW4tPm5vbmxvY2FsX2dvdG9f c2F2ZV9hcmVhLAogCQkgICAgICAgaW50ZWdlcl96ZXJvX25vZGUsIE5VTExf VFJFRSwgTlVMTF9UUkVFKTsKICAgICAgIHJfc2F2ZSA9IGV4cGFuZF9leHBy ICh0X3NhdmUsIE5VTExfUlRYLCBWT0lEbW9kZSwgRVhQQU5EX1dSSVRFKTsK LSAgICAgIHJfc2F2ZSA9IGNvbnZlcnRfbWVtb3J5X2FkZHJlc3MgKFBtb2Rl LCByX3NhdmUpOworICAgICAgcl9zYXZlID0gYWRqdXN0X2FkZHJlc3MgKHJf c2F2ZSwgUG1vZGUsIDApOwogCiAgICAgICBlbWl0X21vdmVfaW5zbiAocl9z YXZlLCB0YXJnZXRtLmJ1aWx0aW5fc2V0am1wX2ZyYW1lX3ZhbHVlICgpKTsK ICAgICAgIHVwZGF0ZV9ub25sb2NhbF9nb3RvX3NhdmVfYXJlYSAoKTsK --00151761c926fd638904a5c58747--