From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 107381 invoked by alias); 30 Apr 2015 03:52:40 -0000 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 Received: (qmail 107367 invoked by uid 89); 30 Apr 2015 03:52:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Thu, 30 Apr 2015 03:52:38 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (Postfix) with ESMTPS id 9D389AC7A6 for ; Thu, 30 Apr 2015 03:52:37 +0000 (UTC) Received: from localhost.localdomain (ovpn-113-143.phx2.redhat.com [10.3.113.143]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t3U3qblC029927 for ; Wed, 29 Apr 2015 23:52:37 -0400 Message-ID: <5541A704.3070502@redhat.com> Date: Thu, 30 Apr 2015 03:57:00 -0000 From: Jeff Law User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: gcc-patches@gcc.gnu.org Subject: More type narrowing in match.pd Content-Type: multipart/mixed; boundary="------------060209000501050402050208" X-IsSubscribed: yes X-SW-Source: 2015-04/txt/msg01958.txt.bz2 This is a multi-part message in MIME format. --------------060209000501050402050208 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 600 This is an incremental improvement to the type narrowing in match.pd. It's largely based on the pattern I added to fix 47477. Basically if we have (bit_and (arith_op (convert A) (convert B)) mask) Where the conversions are widening and the mask turns off all bits outside the original types of A & B, then we can turn that into (bit_and (arith_op A B) mask) We may need to convert A & B to an unsigned type with the same width/precision as their original type, but that's still better than a widening conversion. Bootstrapped and regression tested on x86_64-linux-gnu. OK for the trunk? --------------060209000501050402050208 Content-Type: text/plain; charset=UTF-8; name="patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="patch" Content-length: 6694 ZGlmZiAtLWdpdCBhL2djYy9DaGFuZ2VMb2cgYi9nY2MvQ2hhbmdlTG9nCmlu ZGV4IDVjNzU1OGEuLjUxZjY4YWIgMTAwNjQ0Ci0tLSBhL2djYy9DaGFuZ2VM b2cKKysrIGIvZ2NjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDggQEAKKzIwMTUt MDQtMjkgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CisKKwkqIG1hdGNo LnBkIChiaXRfYW5kIChwbHVzL21pbnVzIChjb252ZXJ0IEAwKSAoY29udmVy dCBAMSkgbWFzayk6IE5ldworCXNpbXBsaWZpZXIgdG8gbmFycm93IGFyaXRo bWV0aWMuCisKIDIwMTUtMDQtMjkgIE1pa2hhaWwgTWFsdHNldiAgPG1hbHRz ZXZtQGdtYWlsLmNvbT4KIAogCSogZG9qdW1wLmMgKGRvX2NvbXBhcmVfcnR4 X2FuZF9qdW1wKTogVXNlIHN0ZDo6c3dhcCBpbnN0ZWFkIG9mCmRpZmYgLS1n aXQgYS9nY2MvbWF0Y2gucGQgYi9nY2MvbWF0Y2gucGQKaW5kZXggZmMzNzRk ZS4uMzU3ZTc2NyAxMDA2NDQKLS0tIGEvZ2NjL21hdGNoLnBkCisrKyBiL2dj Yy9tYXRjaC5wZApAQCAtMTA2OCwzICsxMDY4LDQxIEBAIGFsb25nIHdpdGgg R0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAJKGNv bnZlcnQgKG9wIEAwIEAxKSkpCiAgICAgICAod2l0aCB7IHRyZWUgdXR5cGUg PSB1bnNpZ25lZF90eXBlX2ZvciAoVFJFRV9UWVBFIChAMCkpOyB9CiAJKGNv bnZlcnQgKG9wIChjb252ZXJ0OnV0eXBlIEAwKSAoY29udmVydDp1dHlwZSBA MSkpKSkpKSkKKworLyogVGhpcyBpcyBhbm90aGVyIGNhc2Ugb2YgbmFycm93 aW5nLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGVyZSdzIGFuIG91dGVyCisgICBC SVRfQU5EX0VYUFIgd2hpY2ggbWFza3Mgb2ZmIGJpdHMgb3V0c2lkZSB0aGUg dHlwZSBvZiB0aGUgaW5uZXJtb3N0CisgICBvcGVyYW5kcy4gICBMaWtlIHRo ZSBwcmV2aW91cyBjYXNlIHdlIGhhdmUgdG8gY29udmVydCB0aGUgb3BlcmFu ZHMKKyAgIHRvIHVuc2lnbmVkIHR5cGVzIHRvIGF2b2lkIGludHJvZHVjaW5n IHVuZGVmaW5lZCBiZWhhdmlvdXIgZm9yIHRoZQorICAgYXJpdGhtZXRpYyBv cGVyYXRpb24uICAqLworKGZvciBvcCAobWludXMgcGx1cykKKyAgKHNpbXBs aWZ5CisgICAgKGJpdF9hbmQgKG9wIChjb252ZXJ0QDIgQDApIChjb252ZXJ0 QDMgQDEpKSBJTlRFR0VSX0NTVEA0KQorICAgIChpZiAoSU5URUdSQUxfVFlQ RV9QICh0eXBlKQorCSAvKiBXZSBjaGVjayBmb3IgdHlwZSBjb21wYXRpYmls aXR5IGJldHdlZW4gQDAgYW5kIEAxIGJlbG93LAorCSAgICBzbyB0aGVyZSdz IG5vIG5lZWQgdG8gY2hlY2sgdGhhdCBAMS9AMyBhcmUgaW50ZWdyYWwgdHlw ZXMuICAqLworCSAmJiBJTlRFR1JBTF9UWVBFX1AgKFRSRUVfVFlQRSAoQDAp KQorCSAmJiBJTlRFR1JBTF9UWVBFX1AgKFRSRUVfVFlQRSAoQDIpKQorCSAv KiBUaGUgcHJlY2lzaW9uIG9mIHRoZSB0eXBlIG9mIGVhY2ggb3BlcmFuZCBt dXN0IG1hdGNoIHRoZQorCSAgICBwcmVjaXNpb24gb2YgdGhlIG1vZGUgb2Yg ZWFjaCBvcGVyYW5kLCBzaW1pbGFybHkgZm9yIHRoZQorCSAgICByZXN1bHQu ICAqLworCSAmJiAoVFlQRV9QUkVDSVNJT04gKFRSRUVfVFlQRSAoQDApKQor CSAgICAgPT0gR0VUX01PREVfUFJFQ0lTSU9OIChUWVBFX01PREUgKFRSRUVf VFlQRSAoQDApKSkpCisJICYmIChUWVBFX1BSRUNJU0lPTiAoVFJFRV9UWVBF IChAMSkpCisJICAgICA9PSBHRVRfTU9ERV9QUkVDSVNJT04gKFRZUEVfTU9E RSAoVFJFRV9UWVBFIChAMSkpKSkKKwkgJiYgVFlQRV9QUkVDSVNJT04gKHR5 cGUpID09IEdFVF9NT0RFX1BSRUNJU0lPTiAoVFlQRV9NT0RFICh0eXBlKSkK KwkgLyogVGhlIGlubmVyIGNvbnZlcnNpb24gbXVzdCBiZSBhIHdpZGVuaW5n IGNvbnZlcnNpb24uICAqLworCSAmJiBUWVBFX1BSRUNJU0lPTiAoVFJFRV9U WVBFIChAMikpID4gVFlQRV9QUkVDSVNJT04gKFRSRUVfVFlQRSAoQDApKQor CSAmJiAoKEdFTkVSSUMgCisJICAgICAgJiYgKFRZUEVfTUFJTl9WQVJJQU5U IChUUkVFX1RZUEUgKEAwKSkKKwkJICA9PSBUWVBFX01BSU5fVkFSSUFOVCAo VFJFRV9UWVBFIChAMSkpKSkKKwkgICAgIHx8IChHSU1QTEUKKwkJICYmIHR5 cGVzX2NvbXBhdGlibGVfcCAoVFJFRV9UWVBFIChAMCksIFRSRUVfVFlQRSAo QDEpKSkpCisJICYmICh0cmVlX2ludF9jc3RfbWluX3ByZWNpc2lvbiAoQDQs IFVOU0lHTkVEKQorCSAgICAgPD0gVFlQRV9QUkVDSVNJT04gKFRSRUVfVFlQ RSAoQDApKSkpCisgICAgICAoaWYgKFRZUEVfT1ZFUkZMT1dfV1JBUFMgKFRS RUVfVFlQRSAoQDApKSkKKwkod2l0aCB7IHRyZWUgbnR5cGUgPSBUUkVFX1RZ UEUgKEAwKTsgfQorCSAgKGNvbnZlcnQgKGJpdF9hbmQgKG9wIEAwIEAxKSAo Y29udmVydDpudHlwZSBANCkpKSkpCisgICAgICAod2l0aCB7IHRyZWUgdXR5 cGUgPSB1bnNpZ25lZF90eXBlX2ZvciAoVFJFRV9UWVBFIChAMCkpOyB9CisJ KGNvbnZlcnQgKGJpdF9hbmQgKG9wIChjb252ZXJ0OnV0eXBlIEAwKSAoY29u dmVydDp1dHlwZSBAMSkpCisJCQkgIChjb252ZXJ0OnV0eXBlIEA0KSkpKSkp KQorCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL0NoYW5nZUxvZyBiL2dj Yy90ZXN0c3VpdGUvQ2hhbmdlTG9nCmluZGV4IDdhZWJmZWMuLjlkZjc2YzYg MTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvQ2hhbmdlTG9nCisrKyBiL2dj Yy90ZXN0c3VpdGUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNyBAQAorMjAxNS0w NC0yOSAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KKworCSogZ2NjLmRn L3RyZWUtc3NhL3Nob3J0ZW4tMS5jOiBOZXcgdGVzdC4KKwogMjAxNS0wNC0y OSAgUGV0YXIgSm92YW5vdmljICA8cGV0YXIuam92YW5vdmljQHJ0LXJrLmNv bT4KIAogCSogZ2NjLnRhcmdldC9taXBzL2NhbGwtZnJvbS1pbml0LmM6IE5l dyB0ZXN0LgpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJl ZS1zc2Evc2hvcnRlbi0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVl LXNzYS9zaG9ydGVuLTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5jZWNkZDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdHJlZS1zc2Evc2hvcnRlbi0xLmMKQEAgLTAsMCArMSw3 OCBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLU8yIC1mZHVtcC10cmVlLW9wdGltaXplZCIgfSAqLworCitleHRlcm4g Y29uc3QgdW5zaWduZWQgY2hhciBtb2RlX2liaXRbXTsKK2V4dGVybiBjb25z dCB1bnNpZ25lZCBjaGFyIG1vZGVfZmJpdFtdOworZXh0ZXJuIGNvbnN0IHNp Z25lZCBjaGFyIHNtb2RlX2liaXRbXTsKK2V4dGVybiBjb25zdCBzaWduZWQg Y2hhciBzbW9kZV9mYml0W107CisKKy8qIFdlIHVzZSBiaXQtYW5kIHJhdGhl ciB0aGFuIG1vZHVsbyB0byBlbnN1cmUgd2UncmUgYWN0dWFsbHkKKyAgIHRl c3RpbmcgdGhlIGRlc2lyZWQgbWF0Y2gucGQgcGF0dGVybi4gICovCit1bnNp Z25lZCBjaGFyCittdXVmdWJhciAoaW50IGluZHgpCit7CisgIGludCByZXQg PSAobW9kZV9mYml0IFtpbmR4XSAtIG1vZGVfaWJpdCBbaW5keF0pICYgMzsK KyAgcmV0dXJuIHJldDsKK30KKworc2lnbmVkIGNoYXIKK21zdWZ1YmFyIChp bnQgaW5keCkKK3sKKyAgaW50IHJldCA9IChtb2RlX2ZiaXQgW2luZHhdIC0g bW9kZV9pYml0IFtpbmR4XSkgJiAzOworICByZXR1cm4gcmV0OworfQorCit1 bnNpZ25lZCBjaGFyCittdXNmdWJhciAoaW50IGluZHgpCit7CisgIGludCBy ZXQgPSAoc21vZGVfZmJpdCBbaW5keF0gLSBzbW9kZV9pYml0IFtpbmR4XSkg JiAzOworICByZXR1cm4gcmV0OworfQorCitzaWduZWQgY2hhcgorbXNzZnVi YXIgKGludCBpbmR4KQoreworICBpbnQgcmV0ID0gKHNtb2RlX2ZiaXQgW2lu ZHhdIC0gc21vZGVfaWJpdCBbaW5keF0pICYgMzsKKyAgcmV0dXJuIHJldDsK K30KKworCit1bnNpZ25lZCBjaGFyCitwdXVmdWJhciAoaW50IGluZHgpCit7 CisgIGludCByZXQgPSAobW9kZV9mYml0IFtpbmR4XSArIG1vZGVfaWJpdCBb aW5keF0pICYgMzsKKyAgcmV0dXJuIHJldDsKK30KKworc2lnbmVkIGNoYXIK K3BzdWZ1YmFyIChpbnQgaW5keCkKK3sKKyAgaW50IHJldCA9IChtb2RlX2Zi aXQgW2luZHhdICsgbW9kZV9pYml0IFtpbmR4XSkgJiAzOworICByZXR1cm4g cmV0OworfQorCit1bnNpZ25lZCBjaGFyCitwdXNmdWJhciAoaW50IGluZHgp Cit7CisgIGludCByZXQgPSAoc21vZGVfZmJpdCBbaW5keF0gKyBzbW9kZV9p Yml0IFtpbmR4XSkgJiAzOworICByZXR1cm4gcmV0OworfQorCitzaWduZWQg Y2hhcgorcHNzZnViYXIgKGludCBpbmR4KQoreworICBpbnQgcmV0ID0gKHNt b2RlX2ZiaXQgW2luZHhdICsgc21vZGVfaWJpdCBbaW5keF0pICYgMzsKKyAg cmV0dXJuIHJldDsKK30KKworLyogVGhlIHNob3J0ZW5pbmcgcGF0dGVybnMg aW4gbWF0Y2gucGQgc2hvdWxkIGFycmFuZ2UgdG8gZG8gdGhlCisgICBhcml0 aG1ldGljIGluIGNoYXIgbW9kZXMgYW5kIHRodXMgYW55IGNhc3RzIHRvIGlu dHMgc2hvdWxkCisgICBoYXZlIGJlZW4gcmVtb3ZlZC4gICovCisvKiB7IGRn LWZpbmFsIHtzY2FuLXRyZWUtZHVtcC1ub3QgIlxcKGludFxcKSIgIm9wdGlt aXplZCJ9IH0gKi8KKworLyogV2Ugc2hvdWxkIGhhdmUgY2FzdGVkIDQgb3Bl cmFuZHMgZnJvbSBzaWduZWQgdG8gdW5zaWduZWQgY2hhciB0eXBlcy4gICov CisvKiB7IGRnLWZpbmFsIHtzY2FuLXRyZWUtZHVtcC10aW1lcyAiXFwodW5z aWduZWQgY2hhclxcKSIgOCAib3B0aW1pemVkIiB9IH0gKi8KKworLyogQW5k IHR3byByZXR1cm4gdmFsdWVzIHNob3VsZCBoYXZlIGJlZW4gY2FzdGVkIGZy b20gdW5zaWduZWQgY2hhciB0bworICAgYSBub3JtYWwgY2hhci4gICovCisv KiB7IGRnLWZpbmFsIHtzY2FuLXRyZWUtZHVtcC10aW1lcyAiXFwoc2lnbmVk IGNoYXJcXCkiIDQgIm9wdGltaXplZCIgfSB9ICovCg== --------------060209000501050402050208--