From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12891 invoked by alias); 16 Oct 2014 11:52:24 -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 12880 invoked by uid 89); 16 Oct 2014 11:52:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.9 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-wi0-f173.google.com Received: from mail-wi0-f173.google.com (HELO mail-wi0-f173.google.com) (209.85.212.173) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Thu, 16 Oct 2014 11:52:22 +0000 Received: by mail-wi0-f173.google.com with SMTP id fb4so1254247wid.12 for ; Thu, 16 Oct 2014 04:52:19 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.194.81.70 with SMTP id y6mr1016575wjx.113.1413460339843; Thu, 16 Oct 2014 04:52:19 -0700 (PDT) Received: by 10.216.174.194 with HTTP; Thu, 16 Oct 2014 04:52:19 -0700 (PDT) Date: Thu, 16 Oct 2014 11:56:00 -0000 Message-ID: Subject: [PATCH] Simple improvement for predicate computation in if-convert phase. From: Yuri Rumyantsev To: gcc-patches , Igor Zamyatin , Richard Biener Content-Type: multipart/mixed; boundary=047d7bf0ca4a761e18050588e1bd X-SW-Source: 2014-10/txt/msg01546.txt.bz2 --047d7bf0ca4a761e18050588e1bd Content-Type: text/plain; charset=UTF-8 Content-length: 747 Hi All, Here is a simple enhancement for predicate computation in if-convert phase: We use notion of cd equivalence to get simpler predicate for join block, e.g. if join block has 2 predecessors with predicates p1 & p2 and p1 & !p2, we'd like to get p1 for it instead of p1 & p2 | p1 & !p2. Bootstrap and regression testing did not show any new failures. Is it OK for trunk? gcc/ChangeLog 2014-10-16 Yuri Rumyantsev * tree-if-conv.c (add_to_predicate_list): Check unconditionally that bb is always executed to early exit. Use predicate of cd-equivalent block for join blocks if it exists. (if_convertible_loop_p_1): Recompute POST_DOMINATOR tree. (tree_if_conversion): Free post-dominance information. --047d7bf0ca4a761e18050588e1bd Content-Type: application/octet-stream; name="if-conv.patch" Content-Disposition: attachment; filename="if-conv.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i1c1qzv80 Content-length: 3388 SW5kZXg6IHRyZWUtaWYtY29udi5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIHRyZWUtaWYtY29udi5jCShyZXZpc2lvbiAyMTYyMTcpCisrKyB0cmVl LWlmLWNvbnYuYwkod29ya2luZyBjb3B5KQpAQCAtMzk2LDI1ICszOTYsNTEg QEAKIH0KIAogLyogQWRkIGNvbmRpdGlvbiBOQyB0byB0aGUgcHJlZGljYXRl IGxpc3Qgb2YgYmFzaWMgYmxvY2sgQkIuICBMT09QIGlzCi0gICB0aGUgbG9v cCB0byBiZSBpZi1jb252ZXJ0ZWQuICAqLworICAgdGhlIGxvb3AgdG8gYmUg aWYtY29udmVydGVkLiBVc2UgcHJlZGljYXRlIG9mIGNkLWVxdWl2YWxlbnQg YmxvY2sKKyAgIGZvciBqb2luIGJiIGlmIGl0IGV4aXN0cy4gICovCiAKIHN0 YXRpYyBpbmxpbmUgdm9pZAogYWRkX3RvX3ByZWRpY2F0ZV9saXN0IChzdHJ1 Y3QgbG9vcCAqbG9vcCwgYmFzaWNfYmxvY2sgYmIsIHRyZWUgbmMpCiB7CiAg IHRyZWUgYmMsICp0cDsKKyAgYmFzaWNfYmxvY2sgZG9tX2JiOworICBzdGF0 aWMgYmFzaWNfYmxvY2sgam9pbl9iYiA9IE5VTEw7CiAKICAgaWYgKGlzX3Ry dWVfcHJlZGljYXRlIChuYykpCiAgICAgcmV0dXJuOwogCi0gIGlmICghaXNf cHJlZGljYXRlZCAoYmIpKQorICAvKiBJZiBkb21pbmFuY2UgdGVsbHMgdXMg dGhpcyBiYXNpYyBibG9jayBpcyBhbHdheXMgZXhlY3V0ZWQsCisgICAgIGRv bid0IHJlY29yZCBhbnkgcHJlZGljYXRlcyBmb3IgaXQuICAqLworICBpZiAo ZG9taW5hdGVkX2J5X3AgKENESV9ET01JTkFUT1JTLCBsb29wLT5sYXRjaCwg YmIpKQorICAgIHJldHVybjsKKworICAvKiBJZiBwcmVkaWNhdGUgaGFzIGJl ZW4gYWxyZWFkeSBzZXQgdXAgZm9yIGdpdmVuIGJiIHVzaW5nIGNkLWVxdWl2 YWxlbnQKKyAgICAgYmxvY2sgcHJlZGljYXRlLCBzaW1wbHkgZXNjYXBlLiAg Ki8KKyAgaWYgKGpvaW5fYmIgPT0gYmIpCisgICAgcmV0dXJuOworICBkb21f YmIgPSBnZXRfaW1tZWRpYXRlX2RvbWluYXRvciAoQ0RJX0RPTUlOQVRPUlMs IGJiKTsKKyAgLyogV2UgdXNlIG5vdGlvbiBvZiBjZCBlcXVpdmFsZW5jZSB0 byBnZXQgc2ltcGxlciBwcmVkaWNhdGUgZm9yCisgICAgIGpvaW4gYmxvY2ss IGUuZy4gaWYgam9pbiBibG9jayBoYXMgMiBwcmVkZWNlc3NvcnMgd2l0aCBw cmVkaWNhdGVzCisgICAgIHAxICYgcDIgYW5kIHAxICYgIXAyLCB3ZSdkIGxp a2UgdG8gZ2V0IHAxIGZvciBpdCBpbnN0ZWFkIG9mCisgICAgIHAxICYgcDIg fCBwMSAmICFwMi4gICovCisgIGlmIChkb21fYmIgIT0gbG9vcC0+aGVhZGVy CisgICAgICAmJiBnZXRfaW1tZWRpYXRlX2RvbWluYXRvciAoQ0RJX1BPU1Rf RE9NSU5BVE9SUywgZG9tX2JiKSA9PSBiYikKICAgICB7Ci0gICAgICAvKiBJ ZiBkb21pbmFuY2UgdGVsbHMgdXMgdGhpcyBiYXNpYyBibG9jayBpcyBhbHdh eXMgZXhlY3V0ZWQsIGRvbid0Ci0JIHJlY29yZCBhbnkgcHJlZGljYXRlcyBm b3IgaXQuICAqLwotICAgICAgaWYgKGRvbWluYXRlZF9ieV9wIChDRElfRE9N SU5BVE9SUywgbG9vcC0+bGF0Y2gsIGJiKSkKLQlyZXR1cm47CisgICAgICBn Y2NfYXNzZXJ0IChmbG93X2JiX2luc2lkZV9sb29wX3AgKGxvb3AsIGRvbV9i YikpOworICAgICAgYmMgPSBiYl9wcmVkaWNhdGUgKGRvbV9iYik7CisgICAg ICBnY2NfYXNzZXJ0ICghaXNfdHJ1ZV9wcmVkaWNhdGUgKGJjKSk7CisgICAg ICBzZXRfYmJfcHJlZGljYXRlIChiYiwgYmMpOworICAgICAgaWYgKGR1bXBf ZmlsZSAmJiAoZHVtcF9mbGFncyAmIFRERl9ERVRBSUxTKSkKKwlmcHJpbnRm IChkdW1wX2ZpbGUsICJVc2UgcHJlZGljYXRlIG9mIGJiIyVkIGZvciBiYiMl ZFxuIiwKKwkJIGRvbV9iYi0+aW5kZXgsIGJiLT5pbmRleCk7CiAKLSAgICAg IGJjID0gbmM7CisgICAgICAvKiBTYXZlIGJiIGluIGpvaW5fYmIgdG8gbm90 IGhhbmRsZSBpdCBvbmNlIG1vcmUuICAqLworICAgICAgam9pbl9iYiA9IGJi OworICAgICAgcmV0dXJuOwogICAgIH0KKworICBpZiAoIWlzX3ByZWRpY2F0 ZWQgKGJiKSkKKyAgICBiYyA9IG5jOwogICBlbHNlCiAgICAgewogICAgICAg YmMgPSBiYl9wcmVkaWNhdGUgKGJiKTsKQEAgLTExNzYsNiArMTIwMiw3IEBA CiAgICAgcmV0dXJuIGZhbHNlOwogCiAgIGNhbGN1bGF0ZV9kb21pbmFuY2Vf aW5mbyAoQ0RJX0RPTUlOQVRPUlMpOworICBjYWxjdWxhdGVfZG9taW5hbmNl X2luZm8gKENESV9QT1NUX0RPTUlOQVRPUlMpOwogCiAgIC8qIEFsbG93IHN0 YXRlbWVudHMgdGhhdCBjYW4gYmUgaGFuZGxlZCBkdXJpbmcgaWYtY29udmVy c2lvbi4gICovCiAgIGlmY19iYnMgPSBnZXRfbG9vcF9ib2R5X2luX2lmX2Nv bnZfb3JkZXIgKGxvb3ApOwpAQCAtMjE0OCw2ICsyMTc1LDcgQEAKICAgICAg IGZyZWUgKGlmY19iYnMpOwogICAgICAgaWZjX2JicyA9IE5VTEw7CiAgICAg fQorICBmcmVlX2RvbWluYW5jZV9pbmZvIChDRElfUE9TVF9ET01JTkFUT1JT KTsKIAogICByZXR1cm4gdG9kbzsKIH0K --047d7bf0ca4a761e18050588e1bd--