From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14942 invoked by alias); 8 Apr 2011 06:06:14 -0000 Received: (qmail 14929 invoked by uid 22791); 8 Apr 2011 06:06: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,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 06:06:09 +0000 Received: from kpbe16.cbf.corp.google.com (kpbe16.cbf.corp.google.com [172.25.105.80]) by smtp-out.google.com with ESMTP id p38667PR019112 for ; Thu, 7 Apr 2011 23:06:08 -0700 Received: from vxc40 (vxc40.prod.google.com [10.241.33.168]) by kpbe16.cbf.corp.google.com with ESMTP id p38666GL024745 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for ; Thu, 7 Apr 2011 23:06:06 -0700 Received: by vxc40 with SMTP id 40so2921173vxc.30 for ; Thu, 07 Apr 2011 23:06:05 -0700 (PDT) MIME-Version: 1.0 Received: by 10.52.73.105 with SMTP id k9mr2594783vdv.83.1302242765863; Thu, 07 Apr 2011 23:06:05 -0700 (PDT) Received: by 10.220.126.225 with HTTP; Thu, 7 Apr 2011 23:06:05 -0700 (PDT) Date: Fri, 08 Apr 2011 06:06:00 -0000 Message-ID: Subject: FDO usability -- sanity check indirect call target From: Xinliang David Li To: GCC Patches Content-Type: multipart/mixed; boundary=bcaec501c5c0787c9704a06205db 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/msg00600.txt.bz2 --bcaec501c5c0787c9704a06205db Content-Type: text/plain; charset=ISO-8859-1 Content-length: 800 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? 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. --bcaec501c5c0787c9704a06205db Content-Type: application/octet-stream; name="check_ic.p" Content-Disposition: attachment; filename="check_ic.p" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gm8pp1v20 Content-length: 3461 SW5kZXg6IHZhbHVlLXByb2YuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSB2YWx1ZS1wcm9mLmMJKHJldmlzaW9uIDE3MTk1OSkKKysrIHZhbHVlLXBy b2YuYwkod29ya2luZyBjb3B5KQpAQCAtMTA5MCw2ICsxMDkwLDYyIEBAIGZp bmRfZnVuY19ieV9waWQgKGludAlwaWQpCiAgIHJldHVybiBwaWRfbWFwIFtw aWRdOwogfQogCisvKiBDb3VudHMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMg aW4gdGhlIGZ1bmN0aW9uX2RlY2wgRk5fREVDTC4KKworICAgUmV0dXJucyB0 aGUgbnVtYmVyIG9mIGFyZ3VtZW50cy4gICovCitzdGF0aWMgdW5zaWduZWQK K2Z1bmN0aW9uX2RlY2xfbnVtX2FyZ3MgKHRyZWUgZm5fZGVjbCkKK3sKKyAg dHJlZSBhcmc7CisgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgZm9yIChhcmcg PSBERUNMX0FSR1VNRU5UUyAoZm5fZGVjbCk7IGFyZzsgYXJnID0gVFJFRV9D SEFJTiAoYXJnKSkKKyAgICBjb3VudCsrOworICByZXR1cm4gY291bnQ7Cit9 CisKKy8qIFBlcmZvcm0gc2FuaXR5IGNoZWNrIG9uIHRoZSBpbmRpcmVjdCBj YWxsIHRhcmdldC4gRHVlIHRvIHJhY2UgY29uZGl0aW9ucywKKyAgIGZhbHNl IGZ1bmN0aW9uIHRhcmdldCBtYXkgYmUgYXR0cmlidXRlZCB0byBhbiBpbmRp cmVjdCBjYWxsIHNpdGUuIElmIHRoZQorICAgY2FsbCBleHByZXNzaW9uIHR5 cGUgbWlzbWF0Y2hlcyB3aXRoIHRoZSB0YXJnZXQgZnVuY3Rpb24ncyB0eXBl LCBleHBhbmRfY2FsbAorICAgbWF5IElDRS4gSGVyZSB3ZSBvbmx5IGRvIHZl cnkgbWluaW1hbCBzYW5pdHkgY2hlY2sganVzdCB0byBtYWtlIGNvbXBpbGVy IGhhcHB5LgorICAgUmV0dXJucyB0cnVlIGlmIFRBUkdFVCBpcyBjb25zaWRl cmVkIG9rIGZvciBjYWxsIENBTExfU1RNVC4gICovCisKK3N0YXRpYyBib29s CitjaGVja19pY190YXJnZXQgKGdpbXBsZSBjYWxsX3N0bXQsIHN0cnVjdCBj Z3JhcGhfbm9kZSAqdGFyZ2V0KQoreworICB0cmVlIHRndF9kZWNsOworICAv KiBSZXR1cm4gdHlwZXMuICAqLworICB0cmVlIGljYWxsX3R5cGUsIHRndF90 eXBlOyAKKyAgdHJlZSBjYWxsX2V4cHI7CisKKyAgdGd0X2RlY2wgPSB0YXJn ZXQtPmRlY2w7CisgIHRndF90eXBlID0gVFJFRV9UWVBFIChUUkVFX1RZUEUg KHRndF9kZWNsKSk7CisKKyAgY2FsbF9leHByID0gZ2ltcGxlX2NhbGxfZm4g KGNhbGxfc3RtdCk7CisgIGljYWxsX3R5cGUgPSBUUkVFX1RZUEUgKGNhbGxf ZXhwcik7CisgIGlmIChQT0lOVEVSX1RZUEVfUCAoaWNhbGxfdHlwZSkpCisg ICAgaWNhbGxfdHlwZSA9IFRSRUVfVFlQRSAoaWNhbGxfdHlwZSk7CisgIGlj YWxsX3R5cGUgPSBUUkVFX1RZUEUgKGljYWxsX3R5cGUpOworCisgIGlmIChU UkVFX0NPREUgKGljYWxsX3R5cGUpICE9IFRSRUVfQ09ERSAodGd0X3R5cGUp CisgICAgICB8fCBUWVBFX01PREUgKGljYWxsX3R5cGUpICE9IFRZUEVfTU9E RSAodGd0X3R5cGUpKQorICAgIHJldHVybiBmYWxzZTsKKworICAvKiBWZXJp ZnkgdGhhdCBDQUxMX1NUTVQgaGFzIHRoZSBzYW1lIG51bWJlciBvZiBhcmd1 bWVudHMgYXMgVEdUX1RZUEUuICovCisgIGlmIChnaW1wbGVfY2FsbF9udW1f YXJncyAoY2FsbF9zdG10KSAhPSBmdW5jdGlvbl9kZWNsX251bV9hcmdzICh0 Z3RfZGVjbCkpCisgICAgcmV0dXJuIGZhbHNlOworCisgIC8qIFJlY29yZCB0 eXBlcyBzaG91bGQgaGF2ZSBtYXRjaGluZyBzaXplcy4gKi8KKyAgaWYgKFRS RUVfQ09ERSAoaWNhbGxfdHlwZSkgPT0gUkVDT1JEX1RZUEUKKyAgICAgICYm IFRZUEVfU0laRSAoaWNhbGxfdHlwZSkgIT0gTlVMTF9UUkVFCisgICAgICAm JiBUWVBFX1NJWkUgKHRndF90eXBlKSAhPSBOVUxMX1RSRUUKKyAgICAgICYm IFRSRUVfQ09ERSAoVFlQRV9TSVpFIChpY2FsbF90eXBlKSkgPT0gSU5URUdF Ul9DU1QKKyAgICAgICYmIChUUkVFX0NPREUgKFRZUEVfU0laRSAodGd0X3R5 cGUpKSAhPSBJTlRFR0VSX0NTVCB8fAorCSAgIXRyZWVfaW50X2NzdF9lcXVh bCAoVFlQRV9TSVpFIChpY2FsbF90eXBlKSwgVFlQRV9TSVpFICh0Z3RfdHlw ZSkpKSkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgcmV0dXJuIHRydWU7Cit9 CisKIC8qIERvIHRyYW5zZm9ybWF0aW9uCiAKICAgaWYgKGFjdHVhbF9jYWxs ZWVfYWRkcmVzcyA9PSBhZGRyZXNzX29mX21vc3RfY29tbW9uX2Z1bmN0aW9u L21ldGhvZCkKQEAgLTEyNzEsNiArMTMyNyw5IEBAIGdpbXBsZV9pY190cmFu c2Zvcm0gKGdpbXBsZSBzdG10KQogICBpZiAoZGlyZWN0X2NhbGwgPT0gTlVM TCkKICAgICByZXR1cm4gZmFsc2U7CiAKKyAgaWYgKCFjaGVja19pY190YXJn ZXQgKHN0bXQsIGRpcmVjdF9jYWxsKSkKKyAgICByZXR1cm4gZmFsc2U7CisK ICAgbW9kaWZ5ID0gZ2ltcGxlX2ljIChzdG10LCBkaXJlY3RfY2FsbCwgcHJv YiwgY291bnQsIGFsbCk7CiAKICAgaWYgKGR1bXBfZmlsZSkKQEAgLTE3NTEs NCArMTgxMCwzIEBAIGdpbXBsZV9maW5kX3ZhbHVlc190b19wcm9maWxlICho aXN0b2dyYW0KICAgICAgICAgfQogICAgIH0KIH0KLQo= --bcaec501c5c0787c9704a06205db--