From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28027 invoked by alias); 23 Oct 2009 14:02:23 -0000 Received: (qmail 27774 invoked by uid 22791); 23 Oct 2009 14:02:20 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-vw0-f178.google.com (HELO mail-vw0-f178.google.com) (209.85.212.178) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 23 Oct 2009 14:02:12 +0000 Received: by vws8 with SMTP id 8so457030vws.0 for ; Fri, 23 Oct 2009 07:02:10 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.124.226 with SMTP id v34mr6063557vcr.68.1256306530430; Fri, 23 Oct 2009 07:02:10 -0700 (PDT) In-Reply-To: <84fc9c000910230541w319f2e48r21a73a37de88c14e@mail.gmail.com> References: <84fc9c000910230221g43c9a7f1o2086d50d9c21be71@mail.gmail.com> <84fc9c000910230529qcb226afi7d10fbc7180e2578@mail.gmail.com> <84fc9c000910230541w319f2e48r21a73a37de88c14e@mail.gmail.com> Date: Fri, 23 Oct 2009 14:28:00 -0000 Message-ID: <84fc9c000910230702u56d1a7a3v62c7d0bf6bc25e1@mail.gmail.com> Subject: Re: Alias sets for VLAs and strict aliasing warnings (PR 41673) From: Richard Guenther To: "Joseph S. Myers" Cc: gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary=0016e68f9f3679af0704769aa80a 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: 2009-10/txt/msg01471.txt.bz2 --0016e68f9f3679af0704769aa80a Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 2537 On Fri, Oct 23, 2009 at 2:41 PM, Richard Guenther wrote: > On Fri, Oct 23, 2009 at 2:40 PM, Joseph S. Myers > wrote: >> On Fri, 23 Oct 2009, Richard Guenther wrote: >> >>> On Fri, Oct 23, 2009 at 2:21 PM, Joseph S. Myers >>> wrote: >>> > On Fri, 23 Oct 2009, Richard Guenther wrote: >>> > >>> >> The change is ok, but I wonder why the C FE sets >>> >> TYPE_STRUCTURAL_EQUALITY_P on VLAs. =A0As you can see >>> > >>> > It's not the front end setting it - tree.c:build_index_type sets it f= or >>> > the index type with nonconstant bounds, while tree.c:build_array_type= sets >>> > it for arrays if it is set for either the element type or the index t= ype. >>> >>> Ah, ok. =A0I wonder if it is better to handle the trivial cases like th= is >>> in alias.c and fall back to the structurally canonical type for >>> getting the alias set in case of TYPE_STRUCTURAL_EQUALITY_P >>> then. =A0Which would be for example type_for_mode () for all >>> integral types, the element type for array types and void * >>> for pointer types. >>> >>> That might be a better approach anyway. >> >> I don't know why alias.c stops where it does for >> TYPE_STRUCTURAL_EQUALITY_P, but reverting the c-common.c change as part = of >> changes to make this work in alias.c (that keep the testcase working) is >> preapproved. > > Thanks. =A0I'll look into this. Thus, I'm playing with the following. It's assuming that structural equality applies recursively, thus if it is set on the array type then the element types also have to be compared structurally. At least I can't see how it could be correct to for S[n] use the alias set of S if the array type has TYPE_STRUCTURAL_EQUALITY_P set. This of course means that this patch will likely uncover the original problem on a different testcase. The patch defines structural equality based on mode equivalence (excluding BLKmode and VOIDmode) and uses component types where the non-structural path does (in addition it also does so for complex types). The patch assumes that TYPE_STRUCTURAL_EQUALITY_P build a self-contained group, so there is no aliasing between a type that has TYPE_STRUCTURAL_EQUALITY_P and a type that has not set TYPE_STRUCTURAL_EQUALITY_P. Otherwise a type with TYPE_STRUCTURAL_EQUALITY_P would implicitly make all structural equivalent types subject to structural comparison - which of course does not work if we compute alias-sets incrementally and on-demand as we do now. Comments? Thanks, Richard. --0016e68f9f3679af0704769aa80a Content-Type: text/plain; charset=US-ASCII; name="p.txt" Content-Disposition: attachment; filename="p.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g150gc6d0 Content-length: 5706 MjAwOS0xMC0yMyAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNl LmRlPgoKCSogYWxpYXMuYyAoZ2V0X21vZGVfYWxpYXNfc2V0KTogTmV3IGZ1 bmN0aW9uLgoJKGdldF9hbGlhc19zZXQpOiBVc2UgaXQgZm9yIHN0cnVjdHVy YWwgY2Fub25pY2FsaXphdGlvbi4KCSogYy1jb21tb24uYyAoY19jb21tb25f Z2V0X2FsaWFzX3NldCk6IFJlbW92ZSBzcGVjaWFsLWNhc2luZwoJb2YgYXJy YXkgdHlwZXMgd2l0aCBzdHJ1Y3R1cmFsIGVxdWFsaXR5LgoKSW5kZXg6IGdj Yy9hbGlhcy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKioqIGdjYy9hbGlh cy5jCShyZXZpc2lvbiAxNTM0OTYpCi0tLSBnY2MvYWxpYXMuYwkod29ya2lu ZyBjb3B5KQoqKioqKioqKioqKioqKiogY29tcG9uZW50X3VzZXNfcGFyZW50 X2FsaWFzX3NldCAoY29uc3RfdAoqKiogNTcyLDU3NyAqKioqCi0tLSA1NzIs NjA0IC0tLS0KICAgICAgfQogIH0KICAKKyAvKiBSZXR1cm4gdGhlIGFsaWFz IHNldCBmb3IgTU9ERSBvciAtMSBpZiBpdCBpcyBub3QgcG9zc2libGUgdG8g Y29tcHV0ZS4gICovCisgCisgc3RhdGljIGFsaWFzX3NldF90eXBlCisgZ2V0 X21vZGVfYWxpYXNfc2V0IChlbnVtIG1hY2hpbmVfbW9kZSBtb2RlKQorIHsK KyAgIHRyZWUgdHlwZTsKKyAKKyAgIC8qIFdlIGNhbm5vdCBkZWFsIHdpdGgg YWdncmVnYXRlcyBhbmQgaW5jb21wbGV0ZSB0eXBlcy4gICovCisgICBpZiAo bW9kZSA9PSBCTEttb2RlCisgICAgICAgfHwgbW9kZSA9PSBWT0lEbW9kZSkK KyAgICAgcmV0dXJuIC0xOworIAorICAgLyogQXNrIHRoZSBGRSBmb3IgdGhl IHN0cnVjdHVyYWwgY2Fub25pY2FsIHR5cGUgZm9yIHRoaXMgbW9kZS4KKyAg ICAgIElmIHRoZXJlIGlzIG5vbmUsIGdpdmUgdXAuICAqLworICAgdHlwZSA9 IGxhbmdfaG9va3MudHlwZXMudHlwZV9mb3JfbW9kZSAobW9kZSwgMCk7Cisg ICBpZiAoIXR5cGUpCisgICAgIHJldHVybiAtMTsKKyAKKyAgIGdjY19hc3Nl cnQgKFRZUEVfTU9ERSAodHlwZSkgPT0gbW9kZSk7CisgCisgICAvKiBBdm9p ZCBlbmRsZXNzIHJlY3Vyc2lvbi4gICovCisgICBpZiAoVFlQRV9TVFJVQ1RV UkFMX0VRVUFMSVRZX1AgKHR5cGUpKQorICAgICByZXR1cm4gLTE7CisgCisg ICByZXR1cm4gZ2V0X2FsaWFzX3NldCAodHlwZSk7CisgfQorIAogIC8qIFJl dHVybiB0aGUgYWxpYXMgc2V0IGZvciB0aGUgbWVtb3J5IHBvaW50ZWQgdG8g YnkgVCwgd2hpY2ggbWF5IGJlCiAgICAgZWl0aGVyIGEgdHlwZSBvciBhbiBl eHByZXNzaW9uLiAgUmV0dXJuIC0xIGlmIHRoZXJlIGlzIG5vdGhpbmcKICAg ICBzcGVjaWFsIGFib3V0IGRlcmVmZXJlbmNpbmcgVC4gICovCioqKioqKioq KioqKioqKiBnZXRfYWxpYXNfc2V0ICh0cmVlIHQpCioqKiA2ODcsNzA1ICoq KioKICAgICAgIHZhcmlhbnQuICAqLwogICAgdCA9IFRZUEVfTUFJTl9WQVJJ QU5UICh0KTsKICAKISAgIC8qIEFsd2F5cyB1c2UgdGhlIGNhbm9uaWNhbCB0 eXBlIGFzIHdlbGwuICBJZiB0aGlzIGlzIGEgdHlwZSB0aGF0CiEgICAgICBy ZXF1aXJlcyBzdHJ1Y3R1cmFsIGNvbXBhcmlzb25zIHRvIGlkZW50aWZ5IGNv bXBhdGlibGUgdHlwZXMKISAgICAgIHVzZSBhbGlhcyBzZXQgemVyby4gICov CiAgICBpZiAoVFlQRV9TVFJVQ1RVUkFMX0VRVUFMSVRZX1AgKHQpKQogICAg ICB7CiAgICAgICAgLyogQWxsb3cgdGhlIGxhbmd1YWdlIHRvIHNwZWNpZnkg YW5vdGhlciBhbGlhcyBzZXQgZm9yIHRoaXMKICAJIHR5cGUuICAqLwogICAg ICAgIHNldCA9IGxhbmdfaG9va3MuZ2V0X2FsaWFzX3NldCAodCk7CiAgICAg ICAgaWYgKHNldCAhPSAtMSkKICAJcmV0dXJuIHNldDsKICAgICAgICByZXR1 cm4gMDsKICAgICAgfQogICAgdCA9IFRZUEVfQ0FOT05JQ0FMICh0KTsKICAg IC8qIENhbm9uaWNhbCB0eXBlcyBzaG91bGRuJ3QgZm9ybSBhIHRyZWUgbm9y IHNob3VsZCB0aGUgY2Fub25pY2FsCiAgICAgICB0eXBlIHJlcXVpcmUgc3Ry dWN0dXJhbCBlcXVhbGl0eSBjaGVja3MuICAqLwogICAgZ2NjX2Fzc2VydCAo IVRZUEVfU1RSVUNUVVJBTF9FUVVBTElUWV9QICh0KSAmJiBUWVBFX0NBTk9O SUNBTCAodCkgPT0gdCk7Ci0tLSA3MTQsNzUwIC0tLS0KICAgICAgIHZhcmlh bnQuICAqLwogICAgdCA9IFRZUEVfTUFJTl9WQVJJQU5UICh0KTsKICAKISAg IC8qIElmIHRoaXMgaXMgYSB0eXBlIHRoYXQgcmVxdWlyZXMgc3RydWN0dXJh bCBjb21wYXJpc29ucyB0byBpZGVudGlmeQohICAgICAgY29tcGF0aWJsZSB0 eXBlcyBjYW5vbmljYWxpemUgdG8gYSBzdHJ1Y3R1cmFsIGVxdWl2YWxlbnQg dHlwZSBvcgohICAgICAgdXNlIGFsaWFzIHNldCB6ZXJvIGFzIGEgZmFsbGJh Y2suICAqLwogICAgaWYgKFRZUEVfU1RSVUNUVVJBTF9FUVVBTElUWV9QICh0 KSkKICAgICAgeworICAgICAgIHRyZWUgaW5uZXIgPSB0OworIAorICAgICAg IC8qIFN0cnVjdHVyYWwgZXF1aXZhbGVuY2Ugb24gc2ltcGxlIGFnZ3JlZ2F0 ZSB0eXBlcyBpcyBiYXNlZCBvbgorIAkgdGhlIG1vZGUgb2YgdGhlaXIgdWx0 aW1hdGUgY29udGFpbmVkIGVsZW1lbnQgdHlwZS4gICovCisgICAgICAgd2hp bGUgKFRSRUVfQ09ERSAoaW5uZXIpID09IEFSUkFZX1RZUEUpCisgCWlubmVy ID0gVFJFRV9UWVBFIChpbm5lcik7CisgICAgICAgaWYgKFRSRUVfQ09ERSAo aW5uZXIpID09IFZFQ1RPUl9UWVBFCisgCSAgfHwgVFJFRV9DT0RFIChpbm5l cikgPT0gQ09NUExFWF9UWVBFKQorIAlpbm5lciA9IFRSRUVfVFlQRSAoaW5u ZXIpOworICAgICAgIHNldCA9IGdldF9tb2RlX2FsaWFzX3NldCAoVFlQRV9N T0RFIChpbm5lcikpOworICAgICAgIGlmIChzZXQgIT0gLTEpCisgCXJldHVy biBzZXQ7CisgCiAgICAgICAgLyogQWxsb3cgdGhlIGxhbmd1YWdlIHRvIHNw ZWNpZnkgYW5vdGhlciBhbGlhcyBzZXQgZm9yIHRoaXMKICAJIHR5cGUuICAq LwogICAgICAgIHNldCA9IGxhbmdfaG9va3MuZ2V0X2FsaWFzX3NldCAodCk7 CiAgICAgICAgaWYgKHNldCAhPSAtMSkKICAJcmV0dXJuIHNldDsKKyAKKyAg ICAgICAvKiBGYWxsIGJhY2sgdG8gYWxpYXMtc2V0IHplcm8uICAqLwogICAg ICAgIHJldHVybiAwOwogICAgICB9CisgCisgICAvKiBBbHdheXMgdXNlIHRo ZSBjYW5vbmljYWwgdHlwZSBhcyB3ZWxsLiAgKi8KICAgIHQgPSBUWVBFX0NB Tk9OSUNBTCAodCk7CisgCiAgICAvKiBDYW5vbmljYWwgdHlwZXMgc2hvdWxk bid0IGZvcm0gYSB0cmVlIG5vciBzaG91bGQgdGhlIGNhbm9uaWNhbAogICAg ICAgdHlwZSByZXF1aXJlIHN0cnVjdHVyYWwgZXF1YWxpdHkgY2hlY2tzLiAg Ki8KICAgIGdjY19hc3NlcnQgKCFUWVBFX1NUUlVDVFVSQUxfRVFVQUxJVFlf UCAodCkgJiYgVFlQRV9DQU5PTklDQUwgKHQpID09IHQpOwpJbmRleDogZ2Nj L2MtY29tbW9uLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoqKiogZ2NjL2Mt Y29tbW9uLmMJKHJldmlzaW9uIDE1MzQ5NikKLS0tIGdjYy9jLWNvbW1vbi5j CSh3b3JraW5nIGNvcHkpCioqKioqKioqKioqKioqKiBjX2NvbW1vbl9nZXRf YWxpYXNfc2V0ICh0cmVlIHQpCioqKiA0MTgzLDQxOTcgKioqKgogICAgdHJl ZSB1OwogICAgUFRSICpzbG90OwogIAotICAgLyogRm9yIFZMQXMsIHVzZSB0 aGUgYWxpYXMgc2V0IG9mIHRoZSBlbGVtZW50IHR5cGUgcmF0aGVyIHRoYW4g dGhlCi0gICAgICBkZWZhdWx0IG9mIGFsaWFzIHNldCAwIGZvciB0eXBlcyBj b21wYXJlZCBzdHJ1Y3R1cmFsbHkuICAqLwotICAgaWYgKFRZUEVfUCAodCkg JiYgVFlQRV9TVFJVQ1RVUkFMX0VRVUFMSVRZX1AgKHQpKQotICAgICB7Ci0g ICAgICAgaWYgKFRSRUVfQ09ERSAodCkgPT0gQVJSQVlfVFlQRSkKLSAJcmV0 dXJuIGdldF9hbGlhc19zZXQgKFRSRUVfVFlQRSAodCkpOwotICAgICAgIHJl dHVybiAtMTsKLSAgICAgfQotIAogICAgLyogUGVybWl0IHR5cGUtcHVubmlu ZyB3aGVuIGFjY2Vzc2luZyBhIHVuaW9uLCBwcm92aWRlZCB0aGUgYWNjZXNz CiAgICAgICBpcyBkaXJlY3RseSB0aHJvdWdoIHRoZSB1bmlvbi4gIEZvciBl eGFtcGxlLCB0aGlzIGNvZGUgZG9lcyBub3QKICAgICAgIHBlcm1pdCB0YWtp bmcgdGhlIGFkZHJlc3Mgb2YgYSB1bmlvbiBtZW1iZXIgYW5kIHRoZW4gc3Rv cmluZwotLS0gNDE4Myw0MTg4IC0tLS0K --0016e68f9f3679af0704769aa80a--