From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6507 invoked by alias); 8 Apr 2011 21:42:14 -0000 Received: (qmail 6498 invoked by uid 22791); 8 Apr 2011 21:42:13 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_PASS,TW_FN,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.44.51) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 08 Apr 2011 21:42:08 +0000 Received: from hpaq11.eem.corp.google.com (hpaq11.eem.corp.google.com [172.25.149.11]) by smtp-out.google.com with ESMTP id p38Lg6cU011092 for ; Fri, 8 Apr 2011 14:42:07 -0700 Received: from gyf1 (gyf1.prod.google.com [10.243.50.65]) by hpaq11.eem.corp.google.com with ESMTP id p38Lfh0M028504 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for ; Fri, 8 Apr 2011 14:42:05 -0700 Received: by gyf1 with SMTP id 1so1613372gyf.6 for ; Fri, 08 Apr 2011 14:42:05 -0700 (PDT) MIME-Version: 1.0 Received: by 10.90.248.11 with SMTP id v11mr2510392agh.37.1302298925061; Fri, 08 Apr 2011 14:42:05 -0700 (PDT) Received: by 10.91.53.20 with HTTP; Fri, 8 Apr 2011 14:42:04 -0700 (PDT) In-Reply-To: References: Date: Fri, 08 Apr 2011 21:42:00 -0000 Message-ID: Subject: Re: FDO usability -- sanity check indirect call target From: Xinliang David Li To: Richard Guenther Cc: GCC Patches Content-Type: multipart/mixed; boundary=0016363b8bd2d1d7cc04a06f18c3 X-System-Of-Record: true 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: 2011-04/txt/msg00666.txt.bz2 --0016363b8bd2d1d7cc04a06f18c3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1765 Please review this patch. Regression test is ok. I will do more application testing to make sure the check is not too strict (filtering out legal ic targets). Thanks, David 2011-04-07 Xinliang David Li * value-profile.c (function_decl_num_args): New function. (check_ic_target): New function. (gimple_ic_transform): Sanity check indirect call target. * gimple-low.c (gimple_check_call_args): Interface change. (gimple_check_call_matching_types): New function. * tree-inline.c (tree_can_inline_p): Call new function. On Fri, Apr 8, 2011 at 2:27 AM, Richard Guenther wrote: > On Fri, Apr 8, 2011 at 8:06 AM, Xinliang David Li wr= ote: >> Hi, due to race conditions, it is common that the value profile >> information for an indirect call site is 'corrupted' -- resulting in >> false target function to be recorded. The value profile transformation >> won't cause runtime problem as the path will never be executed, >> however it may cause compile time ICE because of the incompatible >> signature of the callee target. The attached patch does minimal sanity >> check to make compiler happy in such cases. The fix was tested with >> lots of MT programs and works really well in practice. >> >> Ok for trunk after testing? > > Please instead refactor and re-use gimple_check_call_args (). > Also look at tree_can_inline_p () which has code to deal with > result mismatches. > > Richard. > >> Thanks, >> >> David >> >> 2011-04-07 =A0Xinliang David Li =A0 >> >> =A0 =A0 =A0 =A0* value-profile.c (function_decl_num_args): New function. >> =A0 =A0 =A0 =A0(check_ic_target): New function. >> =A0 =A0 =A0 =A0(gimple_ic_transform): Sanity check indirect call target. >> > --0016363b8bd2d1d7cc04a06f18c3 Content-Type: text/x-pascal; charset=US-ASCII; name="check_ic2.p" Content-Disposition: attachment; filename="check_ic2.p" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gm9n52370 Content-length: 6373 SW5kZXg6IHZhbHVlLXByb2YuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSB2YWx1ZS1wcm9mLmMJKHJldmlzaW9uIDE3MjIxMSkKKysrIHZhbHVlLXBy b2YuYwkod29ya2luZyBjb3B5KQpAQCAtMTA5MCw2ICsxMDkwLDI1IEBAIGZp bmRfZnVuY19ieV9waWQgKGludAlwaWQpCiAgIHJldHVybiBwaWRfbWFwIFtw aWRdOwogfQogCisvKiBQZXJmb3JtIHNhbml0eSBjaGVjayBvbiB0aGUgaW5k aXJlY3QgY2FsbCB0YXJnZXQuIER1ZSB0byByYWNlIGNvbmRpdGlvbnMsCisg ICBmYWxzZSBmdW5jdGlvbiB0YXJnZXQgbWF5IGJlIGF0dHJpYnV0ZWQgdG8g YW4gaW5kaXJlY3QgY2FsbCBzaXRlLiBJZiB0aGUKKyAgIGNhbGwgZXhwcmVz c2lvbiB0eXBlIG1pc21hdGNoZXMgd2l0aCB0aGUgdGFyZ2V0IGZ1bmN0aW9u J3MgdHlwZSwgZXhwYW5kX2NhbGwKKyAgIG1heSBJQ0UuIEhlcmUgd2Ugb25s eSBkbyB2ZXJ5IG1pbmltYWwgc2FuaXR5IGNoZWNrIGp1c3QgdG8gbWFrZSBj b21waWxlciBoYXBweS4KKyAgIFJldHVybnMgdHJ1ZSBpZiBUQVJHRVQgaXMg Y29uc2lkZXJlZCBvayBmb3IgY2FsbCBDQUxMX1NUTVQuICAqLworCitzdGF0 aWMgYm9vbAorY2hlY2tfaWNfdGFyZ2V0IChnaW1wbGUgY2FsbF9zdG10LCBz dHJ1Y3QgY2dyYXBoX25vZGUgKnRhcmdldCkKK3sKKyAgIGxvY2F0aW9uX3Qg bG9jdXM7CisgICBpZiAoZ2ltcGxlX2NoZWNrX2NhbGxfbWF0Y2hpbmdfdHlw ZXMgKGNhbGxfc3RtdCwgdGFyZ2V0LT5kZWNsKSkKKyAgICAgcmV0dXJuIHRy dWU7CisKKyAgIGxvY3VzID0gIGdpbXBsZV9sb2NhdGlvbiAoY2FsbF9zdG10 KTsKKyAgIGluZm9ybSAobG9jdXMsICJTa2lwcGluZyB0YXJnZXQgJXMgd2l0 aCBtaXNtYXRjaGluZyB0eXBlcyBmb3IgaWNhbGwgIiwKKyAgICAgICAgICAg Y2dyYXBoX25vZGVfbmFtZSAodGFyZ2V0KSk7CisgICByZXR1cm4gZmFsc2U7 Cit9CisKIC8qIERvIHRyYW5zZm9ybWF0aW9uCiAKICAgaWYgKGFjdHVhbF9j YWxsZWVfYWRkcmVzcyA9PSBhZGRyZXNzX29mX21vc3RfY29tbW9uX2Z1bmN0 aW9uL21ldGhvZCkKQEAgLTEyNjgsNiArMTI4Nyw5IEBAIGdpbXBsZV9pY190 cmFuc2Zvcm0gKGdpbXBsZSBzdG10KQogICBpZiAoZGlyZWN0X2NhbGwgPT0g TlVMTCkKICAgICByZXR1cm4gZmFsc2U7CiAKKyAgaWYgKCFjaGVja19pY190 YXJnZXQgKHN0bXQsIGRpcmVjdF9jYWxsKSkKKyAgICByZXR1cm4gZmFsc2U7 CisKICAgbW9kaWZ5ID0gZ2ltcGxlX2ljIChzdG10LCBkaXJlY3RfY2FsbCwg cHJvYiwgY291bnQsIGFsbCk7CiAKICAgaWYgKGR1bXBfZmlsZSkKQEAgLTE3 NDgsNCArMTc3MCwzIEBAIGdpbXBsZV9maW5kX3ZhbHVlc190b19wcm9maWxl IChoaXN0b2dyYW0KICAgICAgICAgfQogICAgIH0KIH0KLQpJbmRleDogZ2lt cGxlLWxvdy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdpbXBsZS1s b3cuYwkocmV2aXNpb24gMTcyMjExKQorKysgZ2ltcGxlLWxvdy5jCSh3b3Jr aW5nIGNvcHkpCkBAIC0yMDgsMjAgKzIwOCwyMCBAQCBzdHJ1Y3QgZ2ltcGxl X29wdF9wYXNzIHBhc3NfbG93ZXJfY2YgPQogfTsKIAogCisKIC8qIFZlcmlm eSBpZiB0aGUgdHlwZSBvZiB0aGUgYXJndW1lbnQgbWF0Y2hlcyB0aGF0IG9m IHRoZSBmdW5jdGlvbgogICAgZGVjbGFyYXRpb24uICBJZiB3ZSBjYW5ub3Qg dmVyaWZ5IHRoaXMgb3IgdGhlcmUgaXMgYSBtaXNtYXRjaCwKICAgIHJldHVy biBmYWxzZS4gICovCiAKLWJvb2wKLWdpbXBsZV9jaGVja19jYWxsX2FyZ3Mg KGdpbXBsZSBzdG10KQorc3RhdGljIGJvb2wKK2dpbXBsZV9jaGVja19jYWxs X2FyZ3MgKGdpbXBsZSBzdG10LCB0cmVlIGZuZGVjbCkKIHsKLSAgdHJlZSBm bmRlY2wsIHBhcm1zLCBwOworICB0cmVlIHBhcm1zLCBwOwogICB1bnNpZ25l ZCBpbnQgaSwgbmFyZ3M7CiAKICAgbmFyZ3MgPSBnaW1wbGVfY2FsbF9udW1f YXJncyAoc3RtdCk7CiAKICAgLyogR2V0IGFyZ3VtZW50IHR5cGVzIGZvciB2 ZXJpZmljYXRpb24uICAqLwotICBmbmRlY2wgPSBnaW1wbGVfY2FsbF9mbmRl Y2wgKHN0bXQpOwogICBpZiAoZm5kZWNsKQogICAgIHBhcm1zID0gVFlQRV9B UkdfVFlQRVMgKFRSRUVfVFlQRSAoZm5kZWNsKSk7CiAgIGVsc2UKQEAgLTI3 Miw2ICsyNzIsMjUgQEAgZ2ltcGxlX2NoZWNrX2NhbGxfYXJncyAoZ2ltcGxl IHN0bXQpCiAgIHJldHVybiB0cnVlOwogfQogCisvKiBWZXJpZnkgaWYgdGhl IHR5cGUgb2YgdGhlIGFyZ3VtZW50IGFuZCBsaHMgb2YgQ0FMTF9TVE1UIG1h dGNoZXMKKyAgIHRoYXQgb2YgdGhlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIENB TExFRS4KKyAgIElmIHdlIGNhbm5vdCB2ZXJpZnkgdGhpcyBvciB0aGVyZSBp cyBhIG1pc21hdGNoLCByZXR1cm4gZmFsc2UuICAqLworCitib29sCitnaW1w bGVfY2hlY2tfY2FsbF9tYXRjaGluZ190eXBlcyAoZ2ltcGxlIGNhbGxfc3Rt dCwgdHJlZSBjYWxsZWUpCit7CisgIHRyZWUgbGhzOworCisgIGlmICgoREVD TF9SRVNVTFQgKGNhbGxlZSkKKyAgICAgICAmJiAhREVDTF9CWV9SRUZFUkVO Q0UgKERFQ0xfUkVTVUxUIChjYWxsZWUpKQorICAgICAgICYmIChsaHMgPSBn aW1wbGVfY2FsbF9saHMgKGNhbGxfc3RtdCkpICE9IE5VTExfVFJFRQorICAg ICAgICYmICF1c2VsZXNzX3R5cGVfY29udmVyc2lvbl9wIChUUkVFX1RZUEUg KERFQ0xfUkVTVUxUIChjYWxsZWUpKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVFJFRV9UWVBFIChsaHMpKQorICAgICAgICYm ICFmb2xkX2NvbnZlcnRpYmxlX3AgKFRSRUVfVFlQRSAoREVDTF9SRVNVTFQg KGNhbGxlZSkpLCBsaHMpKQorICAgICAgfHwgIWdpbXBsZV9jaGVja19jYWxs X2FyZ3MgKGNhbGxfc3RtdCwgY2FsbGVlKSkKKyAgICByZXR1cm4gZmFsc2U7 CisgIHJldHVybiB0cnVlOworfQogCiAvKiBMb3dlciBzZXF1ZW5jZSBTRVEu ICBVbmxpa2UgZ2ltcGxpZmljYXRpb24gdGhlIHN0YXRlbWVudHMgYXJlIG5v dCByZWxvd2VyZWQKICAgIHdoZW4gdGhleSBhcmUgY2hhbmdlZCAtLSBpZiB0 aGlzIGhhcyB0byBiZSBkb25lLCB0aGUgbG93ZXJpbmcgcm91dGluZSBtdXN0 CkluZGV4OiB0cmVlLWlubGluZS5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIHRyZWUtaW5saW5lLmMJKHJldmlzaW9uIDE3MjIxMSkKKysrIHRyZWUt aW5saW5lLmMJKHdvcmtpbmcgY29weSkKQEAgLTUzMjUsNyArNTMyNSw3IEBA IHRyZWVfY2FuX2lubGluZV9wIChzdHJ1Y3QgY2dyYXBoX2VkZ2UgKmUKIAly ZXR1cm4gZmFsc2U7CiAgICAgfQogI2VuZGlmCi0gIHRyZWUgY2FsbGVyLCBj YWxsZWUsIGxoczsKKyAgdHJlZSBjYWxsZXIsIGNhbGxlZTsKIAogICBjYWxs ZXIgPSBlLT5jYWxsZXItPmRlY2w7CiAgIGNhbGxlZSA9IGUtPmNhbGxlZS0+ ZGVjbDsKQEAgLTUzNTIsMTMgKzUzNTIsNyBAQCB0cmVlX2Nhbl9pbmxpbmVf cCAoc3RydWN0IGNncmFwaF9lZGdlICplCiAgIC8qIERvIG5vdCBpbmxpbmUg Y2FsbHMgd2hlcmUgd2UgY2Fubm90IHRyaXZpYWxsIHdvcmsgYXJvdW5kIG1p c21hdGNoZXMKICAgICAgaW4gYXJndW1lbnQgb3IgcmV0dXJuIHR5cGVzLiAg Ki8KICAgaWYgKGUtPmNhbGxfc3RtdAotICAgICAgJiYgKChERUNMX1JFU1VM VCAoY2FsbGVlKQotCSAgICYmICFERUNMX0JZX1JFRkVSRU5DRSAoREVDTF9S RVNVTFQgKGNhbGxlZSkpCi0JICAgJiYgKGxocyA9IGdpbXBsZV9jYWxsX2xo cyAoZS0+Y2FsbF9zdG10KSkgIT0gTlVMTF9UUkVFCi0JICAgJiYgIXVzZWxl c3NfdHlwZV9jb252ZXJzaW9uX3AgKFRSRUVfVFlQRSAoREVDTF9SRVNVTFQg KGNhbGxlZSkpLAotCQkJCQkgIFRSRUVfVFlQRSAobGhzKSkKLQkgICAmJiAh Zm9sZF9jb252ZXJ0aWJsZV9wIChUUkVFX1RZUEUgKERFQ0xfUkVTVUxUIChj YWxsZWUpKSwgbGhzKSkKLQkgIHx8ICFnaW1wbGVfY2hlY2tfY2FsbF9hcmdz IChlLT5jYWxsX3N0bXQpKSkKKyAgICAgICYmICFnaW1wbGVfY2hlY2tfY2Fs bF9tYXRjaGluZ190eXBlcyAoZS0+Y2FsbF9zdG10LCBjYWxsZWUpKQogICAg IHsKICAgICAgIGUtPmlubGluZV9mYWlsZWQgPSBDSUZfTUlTTUFUQ0hFRF9B UkdVTUVOVFM7CiAgICAgICBpZiAoZS0+Y2FsbF9zdG10KQpJbmRleDogdHJl ZS1mbG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdHJlZS1mbG93 LmgJKHJldmlzaW9uIDE3MjIxMSkKKysrIHRyZWUtZmxvdy5oCSh3b3JraW5n IGNvcHkpCkBAIC01MTUsNyArNTE1LDcgQEAgZXh0ZXJuIHZvaWQgcmVjb3Jk X3ZhcnNfaW50byAodHJlZSwgdHJlZQogZXh0ZXJuIHZvaWQgcmVjb3JkX3Zh cnMgKHRyZWUpOwogZXh0ZXJuIGJvb2wgZ2ltcGxlX3NlcV9tYXlfZmFsbHRo cnUgKGdpbXBsZV9zZXEpOwogZXh0ZXJuIGJvb2wgZ2ltcGxlX3N0bXRfbWF5 X2ZhbGx0aHJ1IChnaW1wbGUpOwotZXh0ZXJuIGJvb2wgZ2ltcGxlX2NoZWNr X2NhbGxfYXJncyAoZ2ltcGxlKTsKK2V4dGVybiBib29sIGdpbXBsZV9jaGVj a19jYWxsX21hdGNoaW5nX3R5cGVzIChnaW1wbGUsIHRyZWUpOwogCiAKIC8q IEluIHRyZWUtc3NhLmMgICovCg== --0016363b8bd2d1d7cc04a06f18c3--