From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20662 invoked by alias); 20 Aug 2012 14:55:02 -0000 Received: (qmail 20542 invoked by uid 22791); 20 Aug 2012 14:54:58 -0000 X-SWARE-Spam-Status: No, hits=-2.8 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,KHOP_THREADED,RCVD_IN_DNSWL_NONE,RCVD_IN_HOSTKARMA_NO,RP_MATCHES_RCVD,TW_CP X-Spam-Check-By: sourceware.org Received: from mailout-de.gmx.net (HELO mailout-de.gmx.net) (213.165.64.23) by sourceware.org (qpsmtpd/0.43rc1) with SMTP; Mon, 20 Aug 2012 14:54:44 +0000 Received: (qmail invoked by alias); 20 Aug 2012 14:54:43 -0000 Received: from teras.ics.forth.gr (EHLO teras.ics.forth.gr) [139.91.70.93] by mail.gmx.net (mp019) with SMTP; 20 Aug 2012 16:54:43 +0200 Date: Mon, 20 Aug 2012 14:55:00 -0000 From: Dimitrios Apostolou To: gcc-patches@gcc.gnu.org cc: Paolo Bonzini , Andrey Belevantsev , Michael Matz Subject: [DF] RFC: obstacks in DF In-Reply-To: Message-ID: References: User-Agent: Alpine 2.02 (LNX 1266 2009-07-14) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-216077921-1345474483=:20463" X-IsSubscribed: yes 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 X-SW-Source: 2012-08/txt/msg01356.txt.bz2 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-216077921-1345474483=:20463 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII Content-length: 1146 Hi, while I was happy using obstacks in other parts of the compiler I thought they would provide a handy solution for the XNEWVECs/XRESIZEVECs in df-scan.c, especially df_install_refs() which is the heaviest malloc() user after the rest of my patches. In the process I realised that obstacks weren't exactly suitable (thanks matz for helping on IRC), nevertheless I have a patch which is stable, a bit faster and more memory friendly (don't know why, but RSS memory for common non-pathological compilations, was smaller). However after trying various incorrect changes I'm aware that there are leaks in there that can't be closed without dirty hacks, so I gave up. I'm posting the simplest but stable version of my changes and would really like to hear ideas. There are "holes" in the obstack that should have been free'd, but in the end I didn't see memory increase. I don't know what would happen for huge functions that keep the obstack alive for long, I didn't have such testcase. Finally, I think my next try will involve converting the chains to pool_alloc'ed linked list, do you think that makes sense? Thanks, Dimitris --8323328-216077921-1345474483=:20463 Content-Type: TEXT/plain; name=df-obstacks.2.diff Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=df-obstacks.2.diff Content-length: 5812 PT09IG1vZGlmaWVkIGZpbGUgJ2djYy9kZi1zY2FuLmMnDQotLS0gZ2NjL2Rm LXNjYW4uYwkyMDEyLTA3LTE2IDExOjMyOjQyICswMDAwDQorKysgZ2NjL2Rm LXNjYW4uYwkyMDEyLTA4LTIwIDE0OjAxOjU5ICswMDAwDQpAQCAtMTg0LDYg KzE4NCwxNyBAQCBzdHJ1Y3QgZGZfc2Nhbl9wcm9ibGVtX2RhdGENCiAgIGJp dG1hcF9vYnN0YWNrIGluc25fYml0bWFwczsNCiB9Ow0KIA0KKy8qIE9ic3Rh Y2sgZm9yIHN0b3JpbmcgYWxsIG9mIGFsbCBvZg0KKyAgIGluc25faW5mby0+ e2RlZnMsdXNlcyxlcV91c2VzLG13X2hhcmRyZWdzfSBhbmQNCisgICBiYl9p bmZvLT5hcnRpZmljaWFsX3tkZWZzLHVzZXN9LiAgKi8NCitzdGF0aWMgc3Ry dWN0IG9ic3RhY2sgZGZfcmVmc19vYnN0YWNrOw0KKw0KKy8qIEtlZXAgdGhl IG9ic3RhY2sgaW5pdGlhbGlzZWQgKG9ubHkgNGsgb3ZlcmhlYWQpIGFuZCB1 c2UgdGhpcyBwb2ludGVyIHRvDQorICAgYWN0dWFsbHkgZW1wdHkgaXQgZmFz dC4gICovDQorc3RhdGljIHZvaWQgKmRmX2ZpcnN0X3JlZnNfb2JqOw0KK3N0 YXRpYyBpbnQgZGZfcmVmc19vYnN0YWNrX2lzX2luaXQ7DQorDQorDQogdHlw ZWRlZiBzdHJ1Y3QgZGZfc2Nhbl9iYl9pbmZvICpkZl9zY2FuX2JiX2luZm9f dDsNCiANCiANCkBAIC0xOTMsMzYgKzIwNCwxMyBAQCBkZl9zY2FuX2ZyZWVf aW50ZXJuYWwgKHZvaWQpDQogew0KICAgc3RydWN0IGRmX3NjYW5fcHJvYmxl bV9kYXRhICpwcm9ibGVtX2RhdGENCiAgICAgPSAoc3RydWN0IGRmX3NjYW5f cHJvYmxlbV9kYXRhICopIGRmX3NjYW4tPnByb2JsZW1fZGF0YTsNCi0gIHVu c2lnbmVkIGludCBpOw0KLSAgYmFzaWNfYmxvY2sgYmI7DQogDQotICAvKiBU aGUgdmVjdG9ycyB0aGF0IGhvbGQgdGhlIHJlZnMgYXJlIG5vdCBwb29sIGFs bG9jYXRlZCBiZWNhdXNlDQotICAgICB0aGV5IGNvbWUgaW4gbWFueSBzaXpl cy4gIFRoaXMgbWFrZXMgdGhlbSBpbXBvc3NpYmxlIHRvIGRlbGV0ZQ0KLSAg ICAgYWxsIGF0IG9uY2UuICAqLw0KLSAgZm9yIChpID0gMDsgaSA8IERGX0lO U05fU0laRSgpOyBpKyspDQotICAgIHsNCi0gICAgICBzdHJ1Y3QgZGZfaW5z bl9pbmZvICppbnNuX2luZm8gPSBERl9JTlNOX1VJRF9HRVQoaSk7DQotICAg ICAgLyogU2tpcCB0aGUgaW5zbnMgdGhhdCBoYXZlIG5vIGluc25faW5mbyBv ciBoYXZlIGJlZW4NCi0JIGRlbGV0ZWQuICAqLw0KLSAgICAgIGlmIChpbnNu X2luZm8pDQotCXsNCi0JICBkZl9zY2FuX2ZyZWVfcmVmX3ZlYyAoaW5zbl9p bmZvLT5kZWZzKTsNCi0JICBkZl9zY2FuX2ZyZWVfcmVmX3ZlYyAoaW5zbl9p bmZvLT51c2VzKTsNCi0JICBkZl9zY2FuX2ZyZWVfcmVmX3ZlYyAoaW5zbl9p bmZvLT5lcV91c2VzKTsNCi0JICBkZl9zY2FuX2ZyZWVfbXdzX3ZlYyAoaW5z bl9pbmZvLT5td19oYXJkcmVncyk7DQotCX0NCi0gICAgfQ0KLQ0KLSAgRk9S X0FMTF9CQiAoYmIpDQotICAgIHsNCi0gICAgICB1bnNpZ25lZCBpbnQgYmJf aW5kZXggPSBiYi0+aW5kZXg7DQotICAgICAgc3RydWN0IGRmX3NjYW5fYmJf aW5mbyAqYmJfaW5mbyA9IGRmX3NjYW5fZ2V0X2JiX2luZm8gKGJiX2luZGV4 KTsNCi0gICAgICBpZiAoYmJfaW5mbykNCi0Jew0KLQkgIGRmX3NjYW5fZnJl ZV9yZWZfdmVjIChiYl9pbmZvLT5hcnRpZmljaWFsX2RlZnMpOw0KLQkgIGRm X3NjYW5fZnJlZV9yZWZfdmVjIChiYl9pbmZvLT5hcnRpZmljaWFsX3VzZXMp Ow0KLQl9DQotICAgIH0NCisgIC8qIERlbGV0ZSBhdCBvbmNlIGFsbCB2ZWN0 b3JzIHRoYXQgaG9sZCB0aGUgcmVmcyAoYWxsIG9mDQorICAgICBpbnNuX2lu Zm8tPntkZWZzLHVzZXMsZXFfdXNlcyxtd19oYXJkcmVnc30gYW5kDQorICAg ICBiYl9pbmZvLT5hcnRpZmljaWFsX3tkZWZzLHVzZXN9KSBidXQga2VlcCB0 aGUgb2JzdGFjayBpbml0aWFsaXNlZCwgc28NCisgICAgIHRoYXQgaXQncyBy ZWFkeSBmb3IgbW9yZSBCQnMuICAqLw0KKyAgb2JzdGFja19mcmVlICgmZGZf cmVmc19vYnN0YWNrLCBkZl9maXJzdF9yZWZzX29iaik7DQorICBkZl9maXJz dF9yZWZzX29iaiA9IE5VTEw7DQogDQogICBmcmVlIChkZi0+ZGVmX2luZm8u cmVmcyk7DQogICBmcmVlIChkZi0+ZGVmX2luZm8uYmVnaW4pOw0KQEAgLTM2 NCw2ICszNTIsMTQgQEAgZGZfc2Nhbl9hbGxvYyAoYml0bWFwIGFsbF9ibG9j a3MgQVRUUklCVQ0KICAgICAgIGJiX2luZm8tPmFydGlmaWNpYWxfdXNlcyA9 IE5VTEw7DQogICAgIH0NCiANCisgIGlmICghIGRmX3JlZnNfb2JzdGFja19p c19pbml0KQ0KKyAgICB7DQorICAgICAgb2JzdGFja19pbml0ICgmZGZfcmVm c19vYnN0YWNrKTsNCisgICAgICBkZl9yZWZzX29ic3RhY2tfaXNfaW5pdCA9 IDE7DQorICAgIH0NCisgIGdjY19hc3NlcnQgKGRmX2ZpcnN0X3JlZnNfb2Jq ID09IE5VTEwpOw0KKyAgZGZfZmlyc3RfcmVmc19vYmogPSBYT0JORVcgKCZk Zl9yZWZzX29ic3RhY2ssIHZvaWQgKik7DQorDQogICBiaXRtYXBfaW5pdGlh bGl6ZSAoJmRmLT5oYXJkd2FyZV9yZWdzX3VzZWQsICZwcm9ibGVtX2RhdGEt PnJlZ19iaXRtYXBzKTsNCiAgIGJpdG1hcF9pbml0aWFsaXplICgmZGYtPnJl Z3VsYXJfYmxvY2tfYXJ0aWZpY2lhbF91c2VzLCAmcHJvYmxlbV9kYXRhLT5y ZWdfYml0bWFwcyk7DQogICBiaXRtYXBfaW5pdGlhbGl6ZSAoJmRmLT5laF9i bG9ja19hcnRpZmljaWFsX3VzZXMsICZwcm9ibGVtX2RhdGEtPnJlZ19iaXRt YXBzKTsNCkBAIC03OTEsOSArNzg3LDE1IEBAIGRmX2luc3RhbGxfcmVmX2lu Y3JlbWVudGFsIChkZl9yZWYgcmVmKQ0KICAgICB9DQogDQogICByZWZfcmVj ID0gKnJlZl9yZWNfcHRyOw0KKyAgLyogZnByaW50ZiAoc3RkZXJyLCAiY291 bnQ6JWQgcmVmX3JlYzolcFxuIiwgY291bnQsIHJlZl9yZWMpOyAqLw0KICAg aWYgKGNvdW50KQ0KICAgICB7DQotICAgICAgcmVmX3JlYyA9IFhSRVNJWkVW RUMgKGRmX3JlZiwgcmVmX3JlYywgY291bnQrMik7DQorICAgICAgLyogSW1w b3NzaWJsZSB0byBhY3R1YWxseSBrbm93IGlmIHJlZl9yZWMgd2FzIG1hbGxv YydlZCBvciBvYnN0YWNrJ2VkDQorCSB0aHVzIHdlIG1pZ2h0IGhhdmUgYSBs ZWFrIGhlcmUhICAqLw0KKyAgICAgIGRmX3JlZiAqcmVmX3JlYzIgPSBYT0JO RVdWRUMgKCZkZl9yZWZzX29ic3RhY2ssIGRmX3JlZiwgY291bnQrMik7DQor ICAgICAgbWVtY3B5IChyZWZfcmVjMiwgcmVmX3JlYywgY291bnQqc2l6ZW9m KGRmX3JlZikpOw0KKyAgICAgIC8qIGZyZWUgKHJlZl9yZWMpOyAqLw0KKyAg ICAgIHJlZl9yZWMgPSByZWZfcmVjMjsNCiAgICAgICAqcmVmX3JlY19wdHIg PSByZWZfcmVjOw0KICAgICAgIHJlZl9yZWNbY291bnRdID0gcmVmOw0KICAg ICAgIHJlZl9yZWNbY291bnQrMV0gPSBOVUxMOw0KQEAgLTgwMSw3ICs4MDMs NyBAQCBkZl9pbnN0YWxsX3JlZl9pbmNyZW1lbnRhbCAoZGZfcmVmIHJlZikN CiAgICAgfQ0KICAgZWxzZQ0KICAgICB7DQotICAgICAgZGZfcmVmICpyZWZf cmVjID0gWE5FV1ZFQyAoZGZfcmVmLCAyKTsNCisgICAgICByZWZfcmVjID0g WE9CTkVXVkVDICgmZGZfcmVmc19vYnN0YWNrLCBkZl9yZWYsIDIpOw0KICAg ICAgIHJlZl9yZWNbMF0gPSByZWY7DQogICAgICAgcmVmX3JlY1sxXSA9IE5V TEw7DQogICAgICAgKnJlZl9yZWNfcHRyID0gcmVmX3JlYzsNCkBAIC0xMDcw LDggKzEwNzIsOSBAQCBkZl9yZWZfY2hhaW5fZGVsZXRlIChkZl9yZWYgKnJl Zl9yZWMpDQogDQogICAvKiBJZiB0aGUgbGlzdCBpcyBlbXB0eSwgaXQgaGFz IGEgc3BlY2lhbCBzaGFyZWQgZWxlbWVudCB0aGF0IGlzIG5vdA0KICAgICAg dG8gYmUgZGVsZXRlZC4gICovDQotICBpZiAoKnN0YXJ0KQ0KLSAgICBmcmVl IChzdGFydCk7DQorICAvKiBpZiAoKnN0YXJ0KSAqLw0KKyAgLyogICBmcmVl IChzdGFydCk7ICovDQorICAvKiBvYnN0YWNrX2ZyZWUnZCBhbGx0b2dldGhl ciBpbiB0aGUgZW5kIG9mIGRmIHBhc3MuICAqLw0KIH0NCiANCiANCkBAIC0y NjExLDcgKzI2MTUsNyBAQCBkZl9pbnN0YWxsX3JlZnMgKGJhc2ljX2Jsb2Nr IGJiLA0KICAgY291bnQgPSBWRUNfbGVuZ3RoIChkZl9yZWYsIG9sZF92ZWMp Ow0KICAgaWYgKGNvdW50KQ0KICAgICB7DQotICAgICAgZGZfcmVmICpuZXdf dmVjID0gWE5FV1ZFQyAoZGZfcmVmLCBjb3VudCArIDEpOw0KKyAgICAgIGRm X3JlZiAqbmV3X3ZlYyA9IFhPQk5FV1ZFQyAoJmRmX3JlZnNfb2JzdGFjaywg ZGZfcmVmLCBjb3VudCArIDEpOw0KICAgICAgIGJvb2wgYWRkX3RvX3RhYmxl Ow0KICAgICAgIGRmX3JlZiB0aGlzX3JlZjsNCiAgICAgICB1bnNpZ25lZCBp bnQgaXg7DQoNCg== --8323328-216077921-1345474483=:20463--