From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 101128 invoked by alias); 19 May 2016 23:52:05 -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 101104 invoked by uid 89); 19 May 2016 23:52:04 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=2016-05-20, 20160520, GIMPLE_NOP, gimple_nop X-HELO: mail-qk0-f169.google.com Received: from mail-qk0-f169.google.com (HELO mail-qk0-f169.google.com) (209.85.220.169) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Thu, 19 May 2016 23:51:54 +0000 Received: by mail-qk0-f169.google.com with SMTP id y126so22558315qke.1 for ; Thu, 19 May 2016 16:51:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=AMkVhzxvUzZVNjms4VRHn5cnYVY/htUeSrFl+7WGa+g=; b=dH/EZlNJdcL4PluOedz9SrS3Zl4r0H/c28M+jGhDh0mFMJ3aDSQ3XfeI6jl5WRMyeo g9nsjmKJmwVpStnW4gnmt0IwbMpg2SoHWEUebVUOtDqd5JV+kGKY4/4nX14c5NnsTt4b L112qekdUel1tIj4bHZ7HeFctORHIaFRRcnFXsCBP/JzrYiT4zrOGDfYRGgyZdWxzkPv rbptiDFRKFFo/PqteAE4/X0jv6f5+FtGQ0ptrd5mKtPsvcX3JtBskzKqn342l2uAxhnS 6alpAv2S43WDqREX6MdqGhl8tCROEQSXuIEij8B2yPOpKMFWfMqYMH1WB/bb50ZY/8Qp UppA== X-Gm-Message-State: AOPr4FVQYW+b4iF4femqV74pI4FJjhVvfGM43XcxkHgrmeZIkLapKAcAN+kbo4SKyvDmf1q+pSKd5XjI/DI4bDfz MIME-Version: 1.0 X-Received: by 10.55.172.6 with SMTP id v6mr70636qke.98.1463701911863; Thu, 19 May 2016 16:51:51 -0700 (PDT) Received: by 10.200.42.71 with HTTP; Thu, 19 May 2016 16:51:51 -0700 (PDT) In-Reply-To: References: <573D7394.5050208@suse.cz> <573D78CE.6020900@linaro.org> Date: Thu, 19 May 2016 23:52:00 -0000 Message-ID: Subject: Re: [PATCH] Fix PR tree-optimization/71170 From: Kugan Vivekanandarajah To: Richard Biener Cc: =?UTF-8?Q?Martin_Li=C5=A1ka?= , GCC Patches Content-Type: multipart/mixed; boundary=94eb2c08f8a283dde905333aa88f X-IsSubscribed: yes X-SW-Source: 2016-05/txt/msg01592.txt.bz2 --94eb2c08f8a283dde905333aa88f Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 1327 Hi Richard, > I think it should have the same rank as op or op + 1 which is the current > behavior. Sth else doesn't work correctly here I think, like inserting t= he > multiplication not near the definition of op. > > Well, the whole "clever insertion" logic is simply flawed. What I meant to say was that the simple logic we have now wouldn=E2=80=99t work. "clever logic" is knowing where exactly where it is needed and inserting there. I think thats what you are suggesting below in a simple to implement way. > I'd say that ideally we would delay inserting the multiplication to > rewrite_expr_tree time. For example by adding a ops->stmt_to_insert > member. > Here is an implementation based on above. Bootstrap on x86-linux-gnu is OK. regression testing is ongoing. Thanks, Kugan gcc/ChangeLog: 2016-05-20 Kugan Vivekanandarajah * tree-ssa-reassoc.c (struct operand_entry): Add field stmt_to_insert. (add_to_ops_vec): Add stmt_to_insert. (add_repeat_to_ops_vec): Init stmt_to_insert. (transform_add_to_multiply): Remove mult_stmt insertion and add it to ops vector. (get_ops): Init stmt_to_insert. (maybe_optimize_range_tests): Likewise. (rewrite_expr_tree): Insert stmt_to_insert before use stmt. (rewrite_expr_tree_parallel): Likewise. --94eb2c08f8a283dde905333aa88f Content-Type: text/plain; charset=US-ASCII; name="p.txt" Content-Disposition: attachment; filename="p.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ioeybfah0 Content-length: 7756 ZGlmZiAtLWdpdCBhL2djYy90cmVlLXNzYS1yZWFzc29jLmMgYi9nY2MvdHJl ZS1zc2EtcmVhc3NvYy5jCmluZGV4IDNiNWYzNmIuLjY5NDQxY2UgMTAwNjQ0 Ci0tLSBhL2djYy90cmVlLXNzYS1yZWFzc29jLmMKKysrIGIvZ2NjL3RyZWUt c3NhLXJlYXNzb2MuYwpAQCAtMTk1LDYgKzE5NSw3IEBAIHN0cnVjdCBvcGVy YW5kX2VudHJ5CiAgIGludCBpZDsKICAgdHJlZSBvcDsKICAgdW5zaWduZWQg aW50IGNvdW50OworICBnaW1wbGUgKnN0bXRfdG9faW5zZXJ0OwogfTsKIAog c3RhdGljIG9iamVjdF9hbGxvY2F0b3I8b3BlcmFuZF9lbnRyeT4gb3BlcmFu ZF9lbnRyeV9wb29sCkBAIC01NTMsNyArNTU0LDcgQEAgc29ydF9ieV9vcGVy YW5kX3JhbmsgKGNvbnN0IHZvaWQgKnBhLCBjb25zdCB2b2lkICpwYikKIC8q IEFkZCBhbiBvcGVyYW5kIGVudHJ5IHRvICpPUFMgZm9yIHRoZSB0cmVlIG9w ZXJhbmQgT1AuICAqLwogCiBzdGF0aWMgdm9pZAotYWRkX3RvX29wc192ZWMg KHZlYzxvcGVyYW5kX2VudHJ5ICo+ICpvcHMsIHRyZWUgb3ApCithZGRfdG9f b3BzX3ZlYyAodmVjPG9wZXJhbmRfZW50cnkgKj4gKm9wcywgdHJlZSBvcCwg Z2ltcGxlICpzdG10X3RvX2luc2VydCA9IE5VTEwpCiB7CiAgIG9wZXJhbmRf ZW50cnkgKm9lID0gb3BlcmFuZF9lbnRyeV9wb29sLmFsbG9jYXRlICgpOwog CkBAIC01NjEsNiArNTYyLDcgQEAgYWRkX3RvX29wc192ZWMgKHZlYzxvcGVy YW5kX2VudHJ5ICo+ICpvcHMsIHRyZWUgb3ApCiAgIG9lLT5yYW5rID0gZ2V0 X3JhbmsgKG9wKTsKICAgb2UtPmlkID0gbmV4dF9vcGVyYW5kX2VudHJ5X2lk Kys7CiAgIG9lLT5jb3VudCA9IDE7CisgIG9lLT5zdG10X3RvX2luc2VydCA9 IHN0bXRfdG9faW5zZXJ0OwogICBvcHMtPnNhZmVfcHVzaCAob2UpOwogfQog CkBAIC01NzcsNiArNTc5LDcgQEAgYWRkX3JlcGVhdF90b19vcHNfdmVjICh2 ZWM8b3BlcmFuZF9lbnRyeSAqPiAqb3BzLCB0cmVlIG9wLAogICBvZS0+cmFu ayA9IGdldF9yYW5rIChvcCk7CiAgIG9lLT5pZCA9IG5leHRfb3BlcmFuZF9l bnRyeV9pZCsrOwogICBvZS0+Y291bnQgPSByZXBlYXQ7CisgIG9lLT5zdG10 X3RvX2luc2VydCA9IE5VTEw7CiAgIG9wcy0+c2FmZV9wdXNoIChvZSk7CiAK ICAgcmVhc3NvY2lhdGVfc3RhdHMucG93c19lbmNvdW50ZXJlZCsrOwpAQCAt MTgxMCwyMSArMTgxMywxMiBAQCB0cmFuc2Zvcm1fYWRkX3RvX211bHRpcGx5 IChnaW1wbGUgKnN0bXQsIHZlYzxvcGVyYW5kX2VudHJ5ICo+ICpvcHMpCiAJ b3BzLT51bm9yZGVyZWRfcmVtb3ZlIChpKTsKICAgICAgIHRyZWUgdG1wID0g bWFrZV9zc2FfbmFtZSAoVFJFRV9UWVBFIChvcCkpOwogICAgICAgdHJlZSBj c3QgPSBidWlsZF9pbnRfY3N0IChpbnRlZ2VyX3R5cGVfbm9kZSwgY291bnQp OwotICAgICAgZ2ltcGxlICpkZWZfc3RtdCA9IFNTQV9OQU1FX0RFRl9TVE1U IChvcCk7CiAgICAgICBnYXNzaWduICptdWxfc3RtdAogCT0gZ2ltcGxlX2J1 aWxkX2Fzc2lnbiAodG1wLCBNVUxUX0VYUFIsCiAJCQkgICAgICAgb3AsIGZv bGRfY29udmVydCAoVFJFRV9UWVBFIChvcCksIGNzdCkpOwotICAgICAgaWYg KGdpbXBsZV9jb2RlIChkZWZfc3RtdCkgPT0gR0lNUExFX05PUAotCSAgfHwg Z2ltcGxlX2JiIChzdG10KSAhPSBnaW1wbGVfYmIgKGRlZl9zdG10KSkKLQl7 Ci0JICBnaW1wbGVfc3RtdF9pdGVyYXRvciBnc2kgPSBnc2lfZm9yX3N0bXQg KHN0bXQpOwotCSAgZ2ltcGxlX3NldF91aWQgKG11bF9zdG10LCBnaW1wbGVf dWlkIChzdG10KSk7Ci0JICBnc2lfaW5zZXJ0X2JlZm9yZSAoJmdzaSwgbXVs X3N0bXQsIEdTSV9ORVdfU1RNVCk7Ci0JfQotICAgICAgZWxzZQotCWluc2Vy dF9zdG10X2FmdGVyIChtdWxfc3RtdCwgZGVmX3N0bXQpOworICAgICAgZ2lt cGxlX3NldF91aWQgKG11bF9zdG10LCBnaW1wbGVfdWlkIChzdG10KSk7CiAg ICAgICBnaW1wbGVfc2V0X3Zpc2l0ZWQgKG11bF9zdG10LCB0cnVlKTsKLSAg ICAgIGFkZF90b19vcHNfdmVjIChvcHMsIHRtcCk7CisgICAgICBhZGRfdG9f b3BzX3ZlYyAob3BzLCB0bXAsIG11bF9zdG10KTsKICAgICAgIGNoYW5nZWQg PSB0cnVlOwogICAgIH0KIApAQCAtMzIyNCw2ICszMjE4LDcgQEAgZ2V0X29w cyAodHJlZSB2YXIsIGVudW0gdHJlZV9jb2RlIGNvZGUsIHZlYzxvcGVyYW5k X2VudHJ5ICo+ICpvcHMsCiAJb2UtPnJhbmsgPSBjb2RlOwogCW9lLT5pZCA9 IDA7CiAJb2UtPmNvdW50ID0gMTsKKwlvZS0+c3RtdF90b19pbnNlcnQgPSBO VUxMOwogCW9wcy0+c2FmZV9wdXNoIChvZSk7CiAgICAgICB9CiAgIHJldHVy biB0cnVlOwpAQCAtMzQ2NCw2ICszNDU5LDcgQEAgbWF5YmVfb3B0aW1pemVf cmFuZ2VfdGVzdHMgKGdpbXBsZSAqc3RtdCkKIAkgICAgICBvZS0+cmFuayA9 IGNvZGU7CiAJICAgICAgb2UtPmlkID0gMDsKIAkgICAgICBvZS0+Y291bnQg PSAxOworCSAgICAgIG9lLT5zdG10X3RvX2luc2VydCA9IE5VTEw7CiAJICAg ICAgb3BzLnNhZmVfcHVzaCAob2UpOwogCSAgICAgIGJiX2VudC5sYXN0X2lk eCsrOwogCSAgICB9CkBAIC0zNTAxLDYgKzM0OTcsNyBAQCBtYXliZV9vcHRp bWl6ZV9yYW5nZV90ZXN0cyAoZ2ltcGxlICpzdG10KQogCSAgICAgaXMuICAq LwogCSAgb2UtPmlkID0gYmItPmluZGV4OwogCSAgb2UtPmNvdW50ID0gMTsK KwkgIG9lLT5zdG10X3RvX2luc2VydCA9IE5VTEw7CiAJICBvcHMuc2FmZV9w dXNoIChvZSk7CiAJICBiYl9lbnQub3AgPSBOVUxMOwogCSAgYmJfZW50Lmxh c3RfaWR4Kys7CkBAIC0zNzk4LDYgKzM3OTUsMTkgQEAgcmV3cml0ZV9leHBy X3RyZWUgKGdpbXBsZSAqc3RtdCwgdW5zaWduZWQgaW50IG9waW5kZXgsCiAg ICAgICBvZTEgPSBvcHNbb3BpbmRleF07CiAgICAgICBvZTIgPSBvcHNbb3Bp bmRleCArIDFdOwogCisgICAgICAvKiBJZiB0aGUgc3RtdCB0aGF0IGRlZmlu ZXMgb3BlcmFuZCBoYXMgdG8gYmUgaW5zZXJ0ZWQsIGluc2VydCBpdAorCSBi ZWZvcmUgdGhlIHVzZS4gICovCisgICAgICBpZiAob2UxLT5zdG10X3RvX2lu c2VydCkKKwl7CisJICBnaW1wbGVfc3RtdF9pdGVyYXRvciBnc2kgPSBnc2lf Zm9yX3N0bXQgKHN0bXQpOworCSAgZ3NpX2luc2VydF9iZWZvcmUgKCZnc2ks IG9lMS0+c3RtdF90b19pbnNlcnQsIEdTSV9ORVdfU1RNVCk7CisJfQorICAg ICAgaWYgKG9lMi0+c3RtdF90b19pbnNlcnQpCisJeworCSAgZ2ltcGxlX3N0 bXRfaXRlcmF0b3IgZ3NpID0gZ3NpX2Zvcl9zdG10IChzdG10KTsKKwkgIGdz aV9pbnNlcnRfYmVmb3JlICgmZ3NpLCBvZTItPnN0bXRfdG9faW5zZXJ0LCBH U0lfTkVXX1NUTVQpOworCX0KKwogICAgICAgaWYgKHJoczEgIT0gb2UxLT5v cCB8fCByaHMyICE9IG9lMi0+b3ApCiAJewogCSAgZ2ltcGxlX3N0bXRfaXRl cmF0b3IgZ3NpID0gZ3NpX2Zvcl9zdG10IChzdG10KTsKQEAgLTM4NTUsNiAr Mzg2NSwxNCBAQCByZXdyaXRlX2V4cHJfdHJlZSAoZ2ltcGxlICpzdG10LCB1 bnNpZ25lZCBpbnQgb3BpbmRleCwKICAgLyogUmV3cml0ZSB0aGUgbmV4dCBv cGVyYXRvci4gICovCiAgIG9lID0gb3BzW29waW5kZXhdOwogCisgIC8qIElm IHRoZSBzdG10IHRoYXQgZGVmaW5lcyBvcGVyYW5kIGhhcyB0byBiZSBpbnNl cnRlZCwgaW5zZXJ0IGl0CisgICAgIGJlZm9yZSB0aGUgdXNlLiAgKi8KKyAg aWYgKG9lLT5zdG10X3RvX2luc2VydCkKKyAgICB7CisgICAgICBnaW1wbGVf c3RtdF9pdGVyYXRvciBnc2kgPSBnc2lfZm9yX3N0bXQgKHN0bXQpOworICAg ICAgZ3NpX2luc2VydF9iZWZvcmUgKCZnc2ksIG9lLT5zdG10X3RvX2luc2Vy dCwgR1NJX05FV19TVE1UKTsKKyAgICB9CisKICAgLyogUmVjdXJzZSBvbiB0 aGUgTEhTIG9mIHRoZSBiaW5hcnkgb3BlcmF0b3IsIHdoaWNoIGlzIGd1YXJh bnRlZWQgdG8KICAgICAgYmUgdGhlIG5vbi1sZWFmIHNpZGUuICAqLwogICB0 cmVlIG5ld19yaHMxCkBAIC0zOTk5LDYgKzQwMTcsNyBAQCByZXdyaXRlX2V4 cHJfdHJlZV9wYXJhbGxlbCAoZ2Fzc2lnbiAqc3RtdCwgaW50IHdpZHRoLAog ICBpbnQgc3RtdF9pbmRleCA9IDA7CiAgIGludCByZWFkeV9zdG10c19lbmQg PSAwOwogICBpbnQgaSA9IDA7CisgIGdpbXBsZSAqc3RtdDEgPSBOVUxMLCAq c3RtdDIgPSBOVUxMOwogICB0cmVlIGxhc3RfcmhzMSA9IGdpbXBsZV9hc3Np Z25fcmhzMSAoc3RtdCk7CiAKICAgLyogV2Ugc3RhcnQgZXhwcmVzc2lvbiBy ZXdyaXRpbmcgZnJvbSB0aGUgdG9wIHN0YXRlbWVudHMuCkBAIC00MDI3LDcg KzQwNDYsMTEgQEAgcmV3cml0ZV9leHByX3RyZWVfcGFyYWxsZWwgKGdhc3Np Z24gKnN0bXQsIGludCB3aWR0aCwKIAkgIGlmIChyZWFkeV9zdG10c19lbmQg PiBzdG10X2luZGV4KQogCSAgICBvcDIgPSBnaW1wbGVfYXNzaWduX2xocyAo c3RtdHNbc3RtdF9pbmRleCsrXSk7CiAJICBlbHNlIGlmIChvcF9pbmRleCA+ PSAwKQotCSAgICBvcDIgPSBvcHNbb3BfaW5kZXgtLV0tPm9wOworCSAgICB7 CisJICAgICAgb3BlcmFuZF9lbnRyeSAqb2UgPSBvcHNbb3BfaW5kZXgtLV07 CisJICAgICAgc3RtdDIgPSBvZS0+c3RtdF90b19pbnNlcnQ7CisJICAgICAg b3AyID0gb2UtPm9wOworCSAgICB9CiAJICBlbHNlCiAJICAgIHsKIAkgICAg ICBnY2NfYXNzZXJ0IChzdG10X2luZGV4IDwgaSk7CkBAIC00MDQxLDggKzQw NjQsMTIgQEAgcmV3cml0ZV9leHByX3RyZWVfcGFyYWxsZWwgKGdhc3NpZ24g KnN0bXQsIGludCB3aWR0aCwKIAl7CiAJICBpZiAob3BfaW5kZXggPiAxKQog CSAgICBzd2FwX29wc19mb3JfYmluYXJ5X3N0bXQgKG9wcywgb3BfaW5kZXgg LSAyLCBOVUxMKTsKLQkgIG9wMiA9IG9wc1tvcF9pbmRleC0tXS0+b3A7Ci0J ICBvcDEgPSBvcHNbb3BfaW5kZXgtLV0tPm9wOworCSAgb3BlcmFuZF9lbnRy eSAqb2UyID0gb3BzW29wX2luZGV4LS1dOworCSAgb3BlcmFuZF9lbnRyeSAq b2UxID0gb3BzW29wX2luZGV4LS1dOworCSAgb3AyID0gb2UyLT5vcDsKKwkg IHN0bXQyID0gb2UyLT5zdG10X3RvX2luc2VydDsKKwkgIG9wMSA9IG9lMS0+ b3A7CisJICBzdG10MSA9IG9lMS0+c3RtdF90b19pbnNlcnQ7CiAJfQogCiAg ICAgICAvKiBJZiB3ZSBlbWl0IHRoZSBsYXN0IHN0YXRlbWVudCB0aGVuIHdl IHNob3VsZCBwdXQKQEAgLTQwNTcsNiArNDA4NCwxOSBAQCByZXdyaXRlX2V4 cHJfdHJlZV9wYXJhbGxlbCAoZ2Fzc2lnbiAqc3RtdCwgaW50IHdpZHRoLAog CSAgcHJpbnRfZ2ltcGxlX3N0bXQgKGR1bXBfZmlsZSwgc3RtdHNbaV0sIDAs IDApOwogCX0KIAorICAgICAgLyogSWYgdGhlIHN0bXQgdGhhdCBkZWZpbmVz IG9wZXJhbmQgaGFzIHRvIGJlIGluc2VydGVkLCBpbnNlcnQgaXQKKwkgYmVm b3JlIHRoZSB1c2UuICAqLworICAgICAgaWYgKHN0bXQxKQorCXsKKwkgIGdp bXBsZV9zdG10X2l0ZXJhdG9yIGdzaSA9IGdzaV9mb3Jfc3RtdCAoc3RtdHNb aV0pOworCSAgZ3NpX2luc2VydF9iZWZvcmUgKCZnc2ksIHN0bXQxLCBHU0lf TkVXX1NUTVQpOworCX0KKyAgICAgIGlmIChzdG10MikKKwl7CisJICBnaW1w bGVfc3RtdF9pdGVyYXRvciBnc2kgPSBnc2lfZm9yX3N0bXQgKHN0bXRzW2ld KTsKKwkgIGdzaV9pbnNlcnRfYmVmb3JlICgmZ3NpLCBzdG10MiwgR1NJX05F V19TVE1UKTsKKwl9CisKICAgICAgIC8qIFdlIGtlZXAgb3JpZ2luYWwgc3Rh dGVtZW50IG9ubHkgZm9yIHRoZSBsYXN0IG9uZS4gIEFsbAogCSBvdGhlcnMg YXJlIHJlY3JlYXRlZC4gICovCiAgICAgICBpZiAoaSA9PSBzdG10X251bSAt IDEpCg== --94eb2c08f8a283dde905333aa88f--