From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14546 invoked by alias); 17 Jul 2014 14:08:10 -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 14511 invoked by uid 89); 17 Jul 2014 14:08:09 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-pa0-f45.google.com Received: from mail-pa0-f45.google.com (HELO mail-pa0-f45.google.com) (209.85.220.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Thu, 17 Jul 2014 14:08:06 +0000 Received: by mail-pa0-f45.google.com with SMTP id eu11so3446648pac.32 for ; Thu, 17 Jul 2014 07:08:04 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.70.89.139 with SMTP id bo11mr27177176pdb.50.1405606084561; Thu, 17 Jul 2014 07:08:04 -0700 (PDT) Received: by 10.70.128.74 with HTTP; Thu, 17 Jul 2014 07:08:04 -0700 (PDT) In-Reply-To: <53C55264.7070404@grosser.es> References: <53C27B10.6050703@grosser.es> <53C55264.7070404@grosser.es> Date: Thu, 17 Jul 2014 14:11:00 -0000 Message-ID: Subject: Re: [GSoC] generation of Gimple code from isl_ast_node_user From: Roman Gareev To: Tobias Grosser Cc: Mircea Namolaru , gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary=001a11c2e40a5d69c604fe642bbe X-SW-Source: 2014-07/txt/msg01220.txt.bz2 --001a11c2e40a5d69c604fe642bbe Content-Type: text/plain; charset=UTF-8 Content-length: 1229 > I see. Could you use vec_safe_grow_cleared(iv_map, loop_num) instead? > This shows probably better that you zero initialize the vector. If I am not mistaken, vec_safe_grow_cleared has the following declaration: vec_safe_grow_cleared (vec *&v, unsigned len CXX_MEM_STAT_INFO) Should we rewrite all the functions, which interact with iv_map? I've added test cases, which produce the following ISL code: isl-ast-gen-single-loop-1.c for (int c1 = 0; c1 <= 49; c1 += 1) S_3(c1); isl-ast-gen-single-loop-2.c for (int c1 = 0; c1 <= -n.0 + 69; c1 += 1) S_5(c1); isl-ast-gen-single-loop-3.c for (int c1 = 0; c1 < n.0; c1 += 1) S_5(c1); The second and the third one use arrays. I wanted to make them similar to the first one, but inability to handle blocks prevented this. For example, /* { dg-do run } */ /* { dg-options "-O2 -fgraphite-identity -fgraphite-code-generator=isl" } */ int n = 25; int foo () { int i, res; for (i = n, res = 0; i < 50; i++) res += i; return res; } extern void abort (); int main (void) { int res = foo (); if (res != 1225) abort (); return 0; } produces the following code: { S_6(); for (int c1 = 0; c1 <= -i + 49; c1 += 1) S_4(c1); } --001a11c2e40a5d69c604fe642bbe Content-Type: text/plain; charset=US-ASCII; name="ChangeLog_entry.txt" Content-Disposition: attachment; filename="ChangeLog_entry.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hxq5dirj0 Content-length: 643 MjAxNC0wNy0xMiAgUm9tYW4gR2FyZWV2ICA8Z2FyZWV2cm9tYW5AZ21haWwu Y29tPgoKCWdjYy8KCSogZ3JhcGhpdGUtaXNsLWFzdC10by1naW1wbGUuYzoK CUFkZCBpbmNsdXNpb24gb2YgZ2ltcGxlLXNzYS5oLCB0cmVlLWludG8tc3Nh LmguCgkoaXZzX3BhcmFtc19jbGVhcik6CgkoYnVpbGRfaXZfbWFwcGluZyk6 IE5ldyBmdW5jdGlvbi4KCSh0cmFuc2xhdGVfaXNsX2FzdF9ub2RlX3VzZXIp OiBMaWtld2lzZS4KCSh0cmFuc2xhdGVfaXNsX2FzdCk6IEFkZCBjYWxsaW5n IG9mIHRyYW5zbGF0ZV9pc2xfYXN0X25vZGVfdXNlci4KCglnY2MvdGVzdHN1 aXRlL2djYy5kZy9ncmFwaGl0ZS8KCSogaXNsLWFzdC1nZW4tc2luZ2xlLWxv b3AtMS5jOiBOZXcgdGVzdGNhc2UuCgkqIGlzbC1hc3QtZ2VuLXNpbmdsZS1s b29wLTIuYzogTmV3IHRlc3RjYXNlLgoJKiBpc2wtYXN0LWdlbi1zaW5nbGUt bG9vcC0zLmM6IE5ldyB0ZXN0Y2FzZS4K --001a11c2e40a5d69c604fe642bbe Content-Type: text/plain; charset=US-ASCII; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hxq5diry1 Content-length: 7239 SW5kZXg6IGdjYy9ncmFwaGl0ZS1pc2wtYXN0LXRvLWdpbXBsZS5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9ncmFwaGl0ZS1pc2wtYXN0LXRv LWdpbXBsZS5jCShyZXZpc2lvbiAyMTI3NTYpCisrKyBnY2MvZ3JhcGhpdGUt aXNsLWFzdC10by1naW1wbGUuYwkod29ya2luZyBjb3B5KQpAQCAtNTEsNiAr NTEsOCBAQAogI2luY2x1ZGUgInNlc2UuaCIKICNpbmNsdWRlICJ0cmVlLXNz YS1sb29wLW1hbmlwLmgiCiAjaW5jbHVkZSAidHJlZS1zY2FsYXItZXZvbHV0 aW9uLmgiCisjaW5jbHVkZSAiZ2ltcGxlLXNzYS5oIgorI2luY2x1ZGUgInRy ZWUtaW50by1zc2EuaCIKICNpbmNsdWRlIDxtYXA+CiAKICNpZmRlZiBIQVZF X2Nsb29nCkBAIC01NDEsNiArNTQzLDcyIEBACiAgIHJldHVybiBsYXN0X2U7 CiB9CiAKKy8qIEluc2VydHMgaW4gaXZfbWFwIGEgdHVwbGUgKE9MRF9MT09Q LT5udW0sIE5FV19OQU1FKSBmb3IgdGhlIGluZHVjdGlvbgorICAgdmFyaWFi bGVzIG9mIHRoZSBsb29wcyBhcm91bmQgR0JCIGluIFNFU0UuCisgCisgICBG SVhNRTogSW5zdGVhZCBvZiB1c2luZyBhIHZlYzx0cmVlPiB0aGF0IG1hcHMg ZWFjaCBsb29wIGlkIHRvIGEgcG9zc2libGUKKyAgIGNocmVjLCB3ZSBjb3Vs ZCBjb25zaWRlciB1c2luZyBhIG1hcDxpbnQsIHRyZWU+IHRoYXQgbWFwcyBs b29wIGlkcyB0byB0aGUKKyAgIGNvcnJlc3BvbmRpbmcgdHJlZSBleHByZXNz aW9ucy4gICovCisKK3N0YXRpYyB2b2lkCitidWlsZF9pdl9tYXBwaW5nICh2 ZWM8dHJlZT4gaXZfbWFwLCBnaW1wbGVfYmJfcCBnYmIsCisJCSAgX19pc2xf a2VlcCBpc2xfYXN0X2V4cHIgKnVzZXJfZXhwciwgaXZzX3BhcmFtcyAmaXAs CisJCSAgc2VzZSByZWdpb24pCit7CisgIGdjY19hc3NlcnQgKGlzbF9hc3Rf ZXhwcl9nZXRfdHlwZSAodXNlcl9leHByKSA9PSBpc2xfYXN0X2V4cHJfb3Ag JiYKKyAgICAgICAgICAgICAgaXNsX2FzdF9leHByX2dldF9vcF90eXBlICh1 c2VyX2V4cHIpID09IGlzbF9hc3Rfb3BfY2FsbCk7CisgIGludCBpOworICBp c2xfYXN0X2V4cHIgKmFyZ19leHByOworICBmb3IgKGkgPSAxOyBpIDwgaXNs X2FzdF9leHByX2dldF9vcF9uX2FyZyAodXNlcl9leHByKTsgaSsrKQorICAg IHsKKyAgICAgIGFyZ19leHByID0gaXNsX2FzdF9leHByX2dldF9vcF9hcmcg KHVzZXJfZXhwciwgaSk7CisgICAgICB0cmVlIHR5cGUgPSAqZ3JhcGhpdGVf ZXhwcmVzc2lvbl9zaXplX3R5cGU7CisgICAgICB0cmVlIHQgPSBnY2NfZXhw cmVzc2lvbl9mcm9tX2lzbF9leHByZXNzaW9uICh0eXBlLCBhcmdfZXhwciwg aXApOworICAgICAgbG9vcF9wIG9sZF9sb29wID0gZ2JiX2xvb3BfYXRfaW5k ZXggKGdiYiwgcmVnaW9uLCBpIC0gMSk7CisgICAgICBpdl9tYXBbb2xkX2xv b3AtPm51bV0gPSB0OworICAgIH0KKworfQorCisvKiBUcmFuc2xhdGVzIGFu IGlzbF9hc3Rfbm9kZV91c2VyIHRvIEdpbXBsZS4gKi8KKworc3RhdGljIGVk Z2UKK3RyYW5zbGF0ZV9pc2xfYXN0X25vZGVfdXNlciAoX19pc2xfa2VlcCBp c2xfYXN0X25vZGUgKm5vZGUsCisJCQkgICAgIGVkZ2UgbmV4dF9lLCBpdnNf cGFyYW1zICZpcCkKK3sKKyAgZ2NjX2Fzc2VydCAoaXNsX2FzdF9ub2RlX2dl dF90eXBlIChub2RlKSA9PSBpc2xfYXN0X25vZGVfdXNlcik7CisgIGlzbF9h c3RfZXhwciAqdXNlcl9leHByID0gaXNsX2FzdF9ub2RlX3VzZXJfZ2V0X2V4 cHIgKG5vZGUpOworICBpc2xfYXN0X2V4cHIgKm5hbWVfZXhwciA9IGlzbF9h c3RfZXhwcl9nZXRfb3BfYXJnICh1c2VyX2V4cHIsIDApOworICBnY2NfYXNz ZXJ0IChpc2xfYXN0X2V4cHJfZ2V0X3R5cGUgKG5hbWVfZXhwcikgPT0gaXNs X2FzdF9leHByX2lkKTsKKyAgaXNsX2lkICpuYW1lX2lkID0gaXNsX2FzdF9l eHByX2dldF9pZCAobmFtZV9leHByKTsKKyAgcG9seV9iYl9wIHBiYiA9IChw b2x5X2JiX3ApIGlzbF9pZF9nZXRfdXNlciAobmFtZV9pZCk7CisgIGdjY19h c3NlcnQgKHBiYik7CisgIGdpbXBsZV9iYl9wIGdiYiA9IFBCQl9CTEFDS19C T1ggKHBiYik7CisgIHZlYzx0cmVlPiBpdl9tYXA7CisgIGlzbF9hc3RfZXhw cl9mcmVlIChuYW1lX2V4cHIpOworICBpc2xfaWRfZnJlZSAobmFtZV9pZCk7 CisKKyAgZ2NjX2Fzc2VydCAoR0JCX0JCIChnYmIpICE9IEVOVFJZX0JMT0NL X1BUUl9GT1JfRk4gKGNmdW4pICYmCisJICAgICAgIlRoZSBlbnRyeSBibG9j ayBzaG91bGQgbm90IGV2ZW4gYXBwZWFyIHdpdGhpbiBhIHNjb3AiKTsKKwor ICBsb29wX3AgbG9vcCA9IGdiYl9sb29wIChnYmIpOworICBpdl9tYXAuY3Jl YXRlIChsb29wLT5udW0gKyAxKTsKKyAgaW50IGk7CisgIGZvciAoaSA9IDA7 IGkgPCBsb29wLT5udW0gKyAxOyBpKyspCisgICAgaXZfbWFwLnF1aWNrX3B1 c2ggKE5VTExfVFJFRSk7CisKKyAgYnVpbGRfaXZfbWFwcGluZyAoaXZfbWFw LCBnYmIsIHVzZXJfZXhwciwgaXAsIFNDT1BfUkVHSU9OIChwYmItPnNjb3Ap KTsKKyAgaXNsX2FzdF9leHByX2ZyZWUgKHVzZXJfZXhwcik7CisgIG5leHRf ZSA9IGNvcHlfYmJfYW5kX3NjYWxhcl9kZXBlbmRlbmNlcyAoR0JCX0JCIChn YmIpLAorCQkJCQkgICBTQ09QX1JFR0lPTiAocGJiLT5zY29wKSwgbmV4dF9l LAorCQkJCQkgICBpdl9tYXAsCisJCQkJCSAgICZncmFwaGl0ZV9yZWdlbmVy YXRlX2Vycm9yKTsKKyAgaXZfbWFwLnJlbGVhc2UgKCk7CisgIG1hcmtfdmly dHVhbF9vcGVyYW5kc19mb3JfcmVuYW1pbmcgKGNmdW4pOworICB1cGRhdGVf c3NhIChUT0RPX3VwZGF0ZV9zc2EpOworICByZXR1cm4gbmV4dF9lOworfQor CiAvKiBUcmFuc2xhdGVzIGFuIElTTCBBU1Qgbm9kZSBOT0RFIHRvIEdDQyBy ZXByZXNlbnRhdGlvbiBpbiB0aGUKICAgIGNvbnRleHQgb2YgYSBTRVNFLiAg Ki8KIApAQCAtNTYxLDcgKzYyOSw3IEBACiAgICAgICByZXR1cm4gbmV4dF9l OwogCiAgICAgY2FzZSBpc2xfYXN0X25vZGVfdXNlcjoKLSAgICAgIHJldHVy biBuZXh0X2U7CisgICAgICByZXR1cm4gdHJhbnNsYXRlX2lzbF9hc3Rfbm9k ZV91c2VyIChub2RlLCBuZXh0X2UsIGlwKTsKIAogICAgIGNhc2UgaXNsX2Fz dF9ub2RlX2Jsb2NrOgogICAgICAgcmV0dXJuIG5leHRfZTsKSW5kZXg6IGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL2dyYXBoaXRlL2lzbC1hc3QtZ2VuLXNpbmds ZS1sb29wLTEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVz dHN1aXRlL2djYy5kZy9ncmFwaGl0ZS9pc2wtYXN0LWdlbi1zaW5nbGUtbG9v cC0xLmMJKHJldmlzaW9uIDApCisrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9n cmFwaGl0ZS9pc2wtYXN0LWdlbi1zaW5nbGUtbG9vcC0xLmMJKHdvcmtpbmcg Y29weSkKQEAgLTAsMCArMSwyOCBAQAorLyogeyBkZy1kbyBydW4gfSAqLwor LyogeyBkZy1vcHRpb25zICItTzIgLWZncmFwaGl0ZS1pZGVudGl0eSAtZmdy YXBoaXRlLWNvZGUtZ2VuZXJhdG9yPWlzbCIgfSAqLworCitpbnQgbiA9IDI1 OworCitpbnQKK2ZvbyAoKQoreworICBpbnQgaSwgcmVzOworCisgIGZvciAo aSA9IG4sIHJlcyA9IDA7IGkgPCA1MDsgaSsrKQorICAgICAgcmVzICs9IGk7 CisKKyAgcmV0dXJuIHJlczsKK30KKworZXh0ZXJuIHZvaWQgYWJvcnQgKCk7 CisKK2ludAorbWFpbiAodm9pZCkKK3sgCisgIGludCByZXMgPSBmb28gKCk7 CisKKyAgaWYgKHJlcyAhPSAxMjI1KQorICAgIGFib3J0ICgpOworCisgIHJl dHVybiAwOworfQpJbmRleDogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZ3JhcGhp dGUvaXNsLWFzdC1nZW4tc2luZ2xlLWxvb3AtMi5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2dyYXBoaXRlL2lz bC1hc3QtZ2VuLXNpbmdsZS1sb29wLTIuYwkocmV2aXNpb24gMCkKKysrIGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL2dyYXBoaXRlL2lzbC1hc3QtZ2VuLXNpbmds ZS1sb29wLTIuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACisv KiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZmdy YXBoaXRlLWlkZW50aXR5IC1mZ3JhcGhpdGUtY29kZS1nZW5lcmF0b3I9aXNs IiB9ICovCitpbnQgbiA9IDUwOworCit2b2lkCitmb28gKGludCBhW10pCit7 CisgIGludCBpOworICBmb3IgKGkgPSBuIC0gMjA7IGkgPCA1MDsgaSsrKQor ICAgIGFbaV0gPSBpOworfQorCitpbnQKK2FycmF5X3N1bSAoaW50IGFbXSkK K3sKKyAgaW50IGk7CisgIGludCByZXMgPSAwOworICBmb3IoaSA9IG4gLSAy MDsgaSA8IG47IGkgKj0gMikKKyAgICByZXMgKz0gYVtpXTsKKyAgcmV0dXJu IHJlczsKK30KKworZXh0ZXJuIHZvaWQgYWJvcnQgKCk7CisKK2ludAorbWFp biAodm9pZCkKK3sKKyAgaW50IGFbNTBdOworICBmb28gKGEpOworICBpbnQg cmVzID0gYXJyYXlfc3VtIChhKTsKKyAgaWYgKHJlcyAhPSAzMCkKKyAgICBh Ym9ydCAoKTsKKyAgcmV0dXJuIDA7Cit9CkluZGV4OiBnY2MvdGVzdHN1aXRl L2djYy5kZy9ncmFwaGl0ZS9pc2wtYXN0LWdlbi1zaW5nbGUtbG9vcC0zLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvZ3JhcGhpdGUvaXNsLWFzdC1nZW4tc2luZ2xlLWxvb3AtMy5jCShyZXZp c2lvbiAwKQorKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZ3JhcGhpdGUvaXNs LWFzdC1nZW4tc2luZ2xlLWxvb3AtMy5jCSh3b3JraW5nIGNvcHkpCkBAIC0w LDAgKzEsMzQgQEAKKy8qIHsgZGctZG8gcnVuIH0gKi8KKy8qIHsgZGctb3B0 aW9ucyAiLU8yIC1mZ3JhcGhpdGUtaWRlbnRpdHkgLWZncmFwaGl0ZS1jb2Rl LWdlbmVyYXRvcj1pc2wiIH0gKi8KK2ludCBuID0gNTA7CisKK3ZvaWQKK2Zv byAoaW50IGFbXSkKK3sKKyAgaW50IGk7CisgIGZvciAoaSA9IDA7IGkgPCBu OyBpKyspCisgICAgYVtpXSA9IGk7Cit9CisKK2ludAorYXJyYXlfc3VtIChp bnQgYVtdKQoreworICBpbnQgaTsKKyAgaW50IHJlcyA9IDA7CisgIGZvcihp ID0gMTsgaSA8IG47IGkgKj0gMikKKyAgICByZXMgKz0gYVtpXTsKKyAgcmV0 dXJuIHJlczsKK30KKworZXh0ZXJuIHZvaWQgYWJvcnQgKCk7CisKK2ludAor bWFpbiAodm9pZCkKK3sKKyAgaW50IGFbNTBdOworICBmb28gKGEpOworICBp bnQgcmVzID0gYXJyYXlfc3VtIChhKTsKKyAgaWYgKHJlcyAhPSA2MykKKyAg ICBhYm9ydCAoKTsKKyAgcmV0dXJuIDA7Cit9Cg== --001a11c2e40a5d69c604fe642bbe--