From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18858 invoked by alias); 15 Jun 2015 10:15:11 -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 18840 invoked by uid 89); 15 Jun 2015 10:15:10 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 X-HELO: fencepost.gnu.org Received: from fencepost.gnu.org (HELO fencepost.gnu.org) (208.118.235.10) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Mon, 15 Jun 2015 10:15:08 +0000 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42270) by fencepost.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1Z4RQ2-0001NO-3Z for gcc-patches@gnu.org; Mon, 15 Jun 2015 06:15:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z4RPw-00058A-Mg for gcc-patches@gnu.org; Mon, 15 Jun 2015 06:15:05 -0400 Received: from mail-la0-x234.google.com ([2a00:1450:4010:c03::234]:33314) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z4RPw-00057x-9l for gcc-patches@gnu.org; Mon, 15 Jun 2015 06:15:00 -0400 Received: by laka10 with SMTP id a10so6885835lak.0 for ; Mon, 15 Jun 2015 03:14:59 -0700 (PDT) X-Received: by 10.112.204.199 with SMTP id la7mr26393875lbc.114.1434363299594; Mon, 15 Jun 2015 03:14:59 -0700 (PDT) Received: from [192.168.123.200] ([77.41.78.126]) by mx.google.com with ESMTPSA id g8sm2610986laf.24.2015.06.15.03.14.58 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 15 Jun 2015 03:14:58 -0700 (PDT) Message-ID: <557EA598.9040902@gmail.com> Date: Mon, 15 Jun 2015 10:26:00 -0000 From: Mikhail Maltsev User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: gcc-patches , Richard Biener , Marek Polacek Subject: [PATCH, RFC] PR middle-end/55299, contract bitnot through ASR and rotations Content-Type: multipart/mixed; boundary="------------010704060103060502090303" X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4010:c03::234 X-IsSubscribed: yes X-SW-Source: 2015-06/txt/msg01000.txt.bz2 This is a multi-part message in MIME format. --------------010704060103060502090303 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-length: 1099 Hi. The attached patch adds new match-and-simplify patterns, which fold ~((~a) >> b) into (a >> b) for arithmetic shifts (i.e. when A is signed) and perform similar folds for rotations. It also fixes PR tree-optimization/54579 (because we already fold (-a - 1) into ~a). A couple of questions: 1. Should we limit folding to this special case or rather introduce some canonical order of bitnot and shifts (when they are commutative)? In the latter case, which order is better: bitnot as shift/rotate operand or vise-versa? 2. I noticed that some rotation patterns are folded on tree, while other are folded rather late (during second forward propagation). For example on LP64: #define INT_BITS (sizeof (int) * 8) unsigned int rol(unsigned int a, unsigned int b) { return a << b | a >> (INT_BITS - b); } INT_BITS has type unsigned long, so b and (INT_BITS - b) have different types and tree folding fails (if I change int to long, everything is OK). Should this be addressed somehow? 3. Do the new patterns require any special handling of nop-conversions? -- Regards, Mikhail Maltsev --------------010704060103060502090303 Content-Type: text/plain; charset=windows-1251; name="fold_asr.clog" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="fold_asr.clog" Content-length: 545 Z2NjL0NoYW5nZUxvZzoKCjIwMTUtMDYtMTUgIE1pa2hhaWwgTWFsdHNldiAg PG1hbHRzZXZtQGdtYWlsLmNvbT4KCgkqIG1hdGNoLnBkOiAofigoflgpID4+ IFkpIC0+IFggPj4gWSk6IE5ldyBwYXR0ZXJuLgoJKH4oKH5YKSByPj4gWSkg LT4gWCByPj4gWSk6IE5ldyBwYXR0ZXJuLgoJKH4oKH5YKSByPDwgWSkgLT4g WCByPDwgWSk6IE5ldyBwYXR0ZXJuLgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VM b2c6CgoyMDE1LTA2LTE1ICBNaWtoYWlsIE1hbHRzZXYgIDxtYWx0c2V2bUBn bWFpbC5jb20+CgoJKiBnY2MuZGcvZm9sZC1ub3Ryb3RhdGUtMS5jOiBOZXcg dGVzdC4KCSogZ2NjLmRnL2ZvbGQtbm90c2hpZnQtMS5jOiBOZXcgdGVzdC4K CSogZ2NjLmRnL2ZvbGQtbm90c2hpZnQtMi5jOiBOZXcgdGVzdC4KCgo= --------------010704060103060502090303 Content-Type: text/plain; charset=windows-1251; name="fold_asr.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="fold_asr.patch" Content-length: 4376 ZGlmZiAtLWdpdCBhL2djYy9tYXRjaC5wZCBiL2djYy9tYXRjaC5wZAppbmRl eCAxYWIyYjFjLi40ODdhZjcyIDEwMDY0NAotLS0gYS9nY2MvbWF0Y2gucGQK KysrIGIvZ2NjL21hdGNoLnBkCkBAIC02OTYsNiArNjk2LDIxIEBAIGFsb25n IHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2Vl CiAJJiYgd2k6OmVxX3AgKHdpOjpsc2hpZnQgKEAwLCBjYW5kKSwgQDIpKQog ICAgIChjbXAgQDEgeyBidWlsZF9pbnRfY3N0IChUUkVFX1RZUEUgKEAxKSwg Y2FuZCk7IH0pKSkpKQogCisvKiB+KCh+WCkgPj4gWSkgLT4gWCA+PiBZIChm b3IgYXJpdGhtZXRpYyBzaGlmdCkuICAqLworKHNpbXBsaWZ5CisgKGJpdF9u b3QgKHJzaGlmdCAoYml0X25vdCBAMCkgQDEpKQorICAoaWYgKCFUWVBFX1VO U0lHTkVEIChUUkVFX1RZUEUgKEAwKSkpCisgICAocnNoaWZ0IEAwIEAxKSkp CisKKy8qIFNhbWUgYXMgYWJvdmUsIGJ1dCBmb3Igcm90YXRpb25zLiAgKi8K Kyhmb3Igcm90YXRlIChscm90YXRlIHJyb3RhdGUpCisgKHNpbXBsaWZ5Cisg IChiaXRfbm90IChyb3RhdGUgKGJpdF9ub3QgQDApIEAxKSkKKyAgIChyb3Rh dGUgQDAgQDEpKSkKKworLyogVE9ETzogfigoLVggKyBDU1QpID4+IFkpIC0+ IChYIC0gKENTVCArIDEpKSA+PiBZLAorICAgaWYgb3ZlcmZsb3cgZG9lcyBu b3QgdHJhcC4gICovCisKIC8qIFNpbXBsaWZpY2F0aW9ucyBvZiBjb252ZXJz aW9ucy4gICovCiAKIC8qIEJhc2ljIHN0cmlwLXVzZWxlc3MtdHlwZS1jb252 ZXJzaW9ucyAvIHN0cmlwX25vcHMuICAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvZm9sZC1ub3Ryb3RhdGUtMS5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvZm9sZC1ub3Ryb3RhdGUtMS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmYzQzZDQKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9mb2xkLW5vdHJvdGF0ZS0xLmMK QEAgLTAsMCArMSwzNiBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLU8gLWZkdW1wLXRyZWUtb3B0aW1pemVkIiB9ICov CisKKyNkZWZpbmUgSU5UX0JJVFMgIChzaXplb2YgKGludCkgKiBfX0NIQVJf QklUX18pCisjZGVmaW5lIFJPTCh4LCB5KSAoKHgpIDw8ICh5KSB8ICh4KSA+ PiAoSU5UX0JJVFMgLSAoeSkpKQorI2RlZmluZSBST1IoeCwgeSkgKCh4KSA+ PiAoeSkgfCAoeCkgPDwgKElOVF9CSVRTIC0gKHkpKSkKKwordW5zaWduZWQg aW50Cityb2wgKHVuc2lnbmVkIGludCBhLCB1bnNpZ25lZCBpbnQgYikKK3sK KyAgcmV0dXJuIH5ST0wgKH5hLCBiKTsKK30KKwordW5zaWduZWQgaW50City b3IgKHVuc2lnbmVkIGludCBhLCB1bnNpZ25lZCBpbnQgYikKK3sKKyAgcmV0 dXJuIH5ST1IgKH5hLCBiKTsKK30KKworI2RlZmluZSBMT05HX0JJVFMgIChz aXplb2YgKGxvbmcpICogX19DSEFSX0JJVF9fKQorI2RlZmluZSBST0xMKHgs IHkpICgoeCkgPDwgKHkpIHwgKHgpID4+IChMT05HX0JJVFMgLSAoeSkpKQor I2RlZmluZSBST1JMKHgsIHkpICgoeCkgPj4gKHkpIHwgKHgpIDw8IChMT05H X0JJVFMgLSAoeSkpKQorCit1bnNpZ25lZCBsb25nCityb2xsICh1bnNpZ25l ZCBsb25nIGEsIHVuc2lnbmVkIGxvbmcgYikKK3sKKyAgcmV0dXJuIH5ST0xM ICh+YSwgYik7Cit9CisKK3Vuc2lnbmVkIGxvbmcKK3JvcmwgKHVuc2lnbmVk IGxvbmcgYSwgdW5zaWduZWQgbG9uZyBiKQoreworICByZXR1cm4gflJPUkwg KH5hLCBiKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LW5vdCAifiIgIm9wdGltaXplZCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy5kZy9mb2xkLW5vdHNoaWZ0LTEuYyBiL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL2ZvbGQtbm90c2hpZnQtMS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyYTU1YTAKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9mb2xkLW5vdHNoaWZ0LTEuYwpA QCAtMCwwICsxLDQ0IEBACisvKiBQUiB0cmVlLW9wdGltaXphdGlvbi81NDU3 OQorICAgUFIgbWlkZGxlLWVuZC81NTI5OSAqLworCisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtZmR1bXAtdHJlZS1j ZGRjZTEiIH0gKi8KKworaW50Cithc3IxIChpbnQgYSwgaW50IGIpCit7Cisg IHJldHVybiB+KCh+YSkgPj4gYik7Cit9CisKK2xvbmcKK2FzcjFsIChsb25n IGEsIGxvbmcgYikKK3sKKyAgcmV0dXJuIH4oKH5hKSA+PiBiKTsKK30KKwor aW50Cithc3IyIChpbnQgYSwgaW50IGIpCit7CisgIHJldHVybiAtKCgtYSAt IDEpID4+IGIpIC0gMTsKK30KKworaW50Cithc3IzIChpbnQgYSwgaW50IGIp Cit7CisgIHJldHVybiBhIDwgMCA/IH4oKH5hKSA+PiBiKSA6IGEgPj4gYjsK K30KKworbG9uZworYXNyM2wgKGxvbmcgYSwgaW50IGIpCit7CisgIHJldHVy biBhIDwgMCA/IH4oKH5hKSA+PiBiKSA6IGEgPj4gYjsKK30KKworaW50Cith c3I0IChpbnQgYSwgaW50IGIpCit7CisgIHJldHVybiBhIDwgMCA/IC0oLWEg LSAxID4+IGIpIC0gMSA6IGEgPj4gYjsKK30KKworLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzICI+PiIgNiAiY2RkY2UxIiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgIn4iICJjZGRj ZTEiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv Zm9sZC1ub3RzaGlmdC0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9mb2xk LW5vdHNoaWZ0LTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi41Mjg3NjEwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvZm9sZC1ub3RzaGlmdC0yLmMKQEAgLTAsMCArMSwxOCBAQAor LyogUFIgbWlkZGxlLWVuZC81NTI5OSAqLworCisvKiB7IGRnLWRvIGNvbXBp bGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtZmR1bXAtdHJlZS1jZGRj ZTEiIH0gKi8KKwordW5zaWduZWQgaW50Citsc3IgKHVuc2lnbmVkIGludCBh LCB1bnNpZ25lZCBpbnQgYikKK3sKKyAgcmV0dXJuIH4oKH5hKSA+PiBiKTsK K30KKworaW50CitzbCAoaW50IGEsIGludCBiKQoreworICByZXR1cm4gfigo fmEpIDw8IGIpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgIn4iIDQgImNkZGNlMSIgfSB9ICovCg== --------------010704060103060502090303--