From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25376 invoked by alias); 16 Aug 2010 21:40:46 -0000 Received: (qmail 25359 invoked by uid 22791); 16 Aug 2010 21:40:45 -0000 X-SWARE-Spam-Status: No, hits=-0.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE X-Spam-Check-By: sourceware.org Received: from mail-bw0-f47.google.com (HELO mail-bw0-f47.google.com) (209.85.214.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 16 Aug 2010 21:40:39 +0000 Received: by bwz12 with SMTP id 12so2476740bwz.20 for ; Mon, 16 Aug 2010 14:40:36 -0700 (PDT) MIME-Version: 1.0 Received: by 10.204.6.75 with SMTP id 11mr3787919bky.95.1281994832185; Mon, 16 Aug 2010 14:40:32 -0700 (PDT) Received: by 10.204.143.154 with HTTP; Mon, 16 Aug 2010 14:40:32 -0700 (PDT) Date: Mon, 16 Aug 2010 21:42:00 -0000 Message-ID: Subject: [Patch, Fortran, F08] PR45290: pointer initialization From: Janus Weil To: gfortran , gcc-patches Content-Type: multipart/mixed; boundary=000e0cd1d1249389a8048df7aea1 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: 2010-08/txt/msg01205.txt.bz2 --000e0cd1d1249389a8048df7aea1 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2152 Hi all, here is a patch which implements the new pointer initialization capabilities of F08. While in F03 all pointers had to be initialized to NULL(), F08 allows non-NULL initialization values for data pointers as well as procedure pointers. The patch contains some parsing bits in decl.c, a couple of diagnostic checks in resolve.c and check.c and a small hunk in trans-expr.c which handles the translation to the middle end. I hope everything should work as advertised. Regtesting was successful on x86_64-unknown-linux-gnu (except for the continuing failure of array_memcpy_3.f90, cf. PR45266). Ok for trunk? Btw: While the most obvious benefit of this patch of course is the availability of pointer initialization as a useful feature in itself (and another YES in the F08 compatibility table), my actual motivation for implementing this was the fact that it will enable me to improve the OOP implementation by making the vtabs statically initialized, instead of having to initialize all the PPCs dynamically at run time (and making sure this happens before the vtab is used). This is what I will work on next, after the pointer init patch has landed ... Cheers, Janus 2010-08-16 Janus Weil PR fortran/45290 * decl.c (add_init_expr_to_sym): Defer checking of proc pointer init. (match_pointer_init): New function to match F08 pointer initialization. (variable_decl,match_procedure_decl,match_ppc_decl): Use 'match_pointer_init'. * expr.c (gfc_check_assign_symbol): Extra checks for pointer initialization. * primary.c (gfc_variable_attr): Handle SAVE attribute. * resolve.c (resolve_structure_cons): Add new argument and do pointer initialization checks. (gfc_resolve_expr): Modified call to 'resolve_structure_cons'. (resolve_values): Call 'resolve_structure_cons' directly with init arg. * trans-expr.c (gfc_conv_initializer): Implement non-NULL pointer initialization. 2010-08-16 Janus Weil PR fortran/45290 * gfortran.dg/proc_ptr_comp_3.f90: Modified. * gfortran.dg/pointer_init_2.f90: New. * gfortran.dg/pointer_init_3.f90: New. * gfortran.dg/pointer_init_4.f90: New. --000e0cd1d1249389a8048df7aea1 Content-Type: application/octet-stream; name="pr45290.diff" Content-Disposition: attachment; filename="pr45290.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gcxujnn50 Content-length: 12099 SW5kZXg6IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcHJvY19wdHJfY29t cF8zLmY5MAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1 aXRlL2dmb3J0cmFuLmRnL3Byb2NfcHRyX2NvbXBfMy5mOTAJKHJldmlzaW9u IDE2MzI4MSkKKysrIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcHJvY19w dHJfY29tcF8zLmY5MAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBA QCB0eXBlIDo6IHQKICAgcHJvY2VkdXJlKCksIHBvaW50ZXIsIG5vcGFzcyBw dHI0ICAgICAgICAgICAgICAhIHsgZGctZXJyb3IgIkV4cGVjdGVkICc6Oici IH0KICAgcHJvY2VkdXJlKCksIHBvaW50ZXIsIG5vcGFzcywgcG9pbnRlciA6 OiBwdHI1ICAhIHsgZGctZXJyb3IgIkR1cGxpY2F0ZSIgfQogICBwcm9jZWR1 cmUsIHBvaW50ZXIsIG5vcGFzcyA6OiBwdHI2ICAgICAgICAgICAgICEgeyBk Zy1lcnJvciAiU3ludGF4IGVycm9yIiB9Ci0gIHByb2NlZHVyZSgpLCBwb2lu dGVyLCBub3Bhc3MgOjogcHRyNyA9PiBwdHIyICAgISB7IGRnLWVycm9yICJy ZXF1aXJlcyBhIE5VTEwiIH0KICAgcHJvY2VkdXJlKCksIG5vcGFzcyA6OiBw dHI4ICAgICAgICAgICAgICAgICAgICAhIHsgZGctZXJyb3IgIlBPSU5URVIg YXR0cmlidXRlIGlzIHJlcXVpcmVkIiB9CiAgIHByb2NlZHVyZShwcCksIHBv aW50ZXIsIG5vcGFzcyA6OiBwdHI5ICAgICAgICAgISB7IGRnLWVycm9yICJk ZWNsYXJlZCBpbiBhIGxhdGVyIFBST0NFRFVSRSBzdGF0ZW1lbnQiIH0KICAg cHJvY2VkdXJlKGFhYXJnaCksIHBvaW50ZXIsIG5vcGFzcyA6OiBwdHIxMCAg ICAhIHsgZGctZXJyb3IgIm11c3QgYmUgZXhwbGljaXQiIH0KSW5kZXg6IGdj Yy9mb3J0cmFuL3RyYW5zLWV4cHIuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBnY2MvZm9ydHJhbi90cmFucy1leHByLmMJKHJldmlzaW9uIDE2MzI4 MSkKKysrIGdjYy9mb3J0cmFuL3RyYW5zLWV4cHIuYwkod29ya2luZyBjb3B5 KQpAQCAtMzk4Miw3ICszOTgyLDE3IEBAIGdmY19jb252X2luaXRpYWxpemVy IChnZmNfZXhwciAqIGV4cHIsIGdmY190eXBlc3BlCiAJcmV0dXJuIGdmY19j b252X2FycmF5X2luaXRpYWxpemVyICh0eXBlLCBleHByKTsKICAgICB9CiAg IGVsc2UgaWYgKHBvaW50ZXIpCi0gICAgcmV0dXJuIGZvbGRfY29udmVydCAo dHlwZSwgbnVsbF9wb2ludGVyX25vZGUpOworICAgIHsKKyAgICAgIGlmICgh ZXhwciB8fCBleHByLT5leHByX3R5cGUgPT0gRVhQUl9OVUxMKQorCXJldHVy biBmb2xkX2NvbnZlcnQgKHR5cGUsIG51bGxfcG9pbnRlcl9ub2RlKTsKKyAg ICAgIGVsc2UKKwl7CisJICBnZmNfaW5pdF9zZSAoJnNlLCBOVUxMKTsKKwkg IHNlLndhbnRfcG9pbnRlciA9IDE7CisJICBnZmNfY29udl9leHByICgmc2Us IGV4cHIpOworCSAgcmV0dXJuIHNlLmV4cHI7CisJfQorICAgIH0KICAgZWxz ZQogICAgIHsKICAgICAgIHN3aXRjaCAodHMtPnR5cGUpCkluZGV4OiBnY2Mv Zm9ydHJhbi9kZWNsLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2Nj L2ZvcnRyYW4vZGVjbC5jCShyZXZpc2lvbiAxNjMyODEpCisrKyBnY2MvZm9y dHJhbi9kZWNsLmMJKHdvcmtpbmcgY29weSkKQEAgLTEzMTIsOSArMTMxMiwx MCBAQCBhZGRfaW5pdF9leHByX3RvX3N5bSAoY29uc3QgY2hhciAqbmFtZSwg Z2ZjX2V4cHIgKgogCX0KIAogICAgICAgLyogQ2hlY2sgaWYgdGhlIGFzc2ln bm1lbnQgY2FuIGhhcHBlbi4gVGhpcyBoYXMgdG8gYmUgcHV0IG9mZgotCSB1 bnRpbCBsYXRlciBmb3IgYSBkZXJpdmVkIHR5cGUgdmFyaWFibGUuICAqLwor CSB1bnRpbCBsYXRlciBmb3IgZGVyaXZlZCB0eXBlIHZhcmlhYmxlcyBhbmQg cHJvY2VkdXJlIHBvaW50ZXJzLiAgKi8KICAgICAgIGlmIChzeW0tPnRzLnR5 cGUgIT0gQlRfREVSSVZFRCAmJiBpbml0LT50cy50eXBlICE9IEJUX0RFUklW RUQKIAkgICYmIHN5bS0+dHMudHlwZSAhPSBCVF9DTEFTUyAmJiBpbml0LT50 cy50eXBlICE9IEJUX0NMQVNTCisJICAmJiAhc3ltLT5hdHRyLnByb2NfcG9p bnRlciAKIAkgICYmIGdmY19jaGVja19hc3NpZ25fc3ltYm9sIChzeW0sIGlu aXQpID09IEZBSUxVUkUpCiAJcmV0dXJuIEZBSUxVUkU7CiAKQEAgLTE2NTIs NiArMTY1Myw0OCBAQCBnZmNfbWF0Y2hfbnVsbCAoZ2ZjX2V4cHIgKipyZXN1 bHQpCiB9CiAKIAorLyogTWF0Y2ggdGhlIGluaXRpYWxpemF0aW9uIGV4cHIg Zm9yIGEgZGF0YSBwb2ludGVyIG9yIHByb2NlZHVyZSBwb2ludGVyLiAgKi8K Kworc3RhdGljIG1hdGNoCittYXRjaF9wb2ludGVyX2luaXQgKGdmY19leHBy ICoqaW5pdCwgaW50IHByb2NwdHIpCit7CisgIG1hdGNoIG07CisKKyAgaWYg KGdmY19wdXJlIChOVUxMKSAmJiBnZmNfc3RhdGVfc3RhY2stPnN0YXRlICE9 IENPTVBfREVSSVZFRCkKKyAgICB7CisgICAgICBnZmNfZXJyb3IgKCJJbml0 aWFsaXphdGlvbiBvZiBwb2ludGVyIGF0ICVDIGlzIG5vdCBhbGxvd2VkIGlu ICIKKwkJICJhIFBVUkUgcHJvY2VkdXJlIik7CisgICAgICByZXR1cm4gTUFU Q0hfRVJST1I7CisgICAgfQorCisgIC8qIE1hdGNoIE5VTEwoKSBpbml0aWxp emF0aW9uLiAgKi8KKyAgbSA9IGdmY19tYXRjaF9udWxsIChpbml0KTsKKyAg aWYgKG0gIT0gTUFUQ0hfTk8pCisgICAgcmV0dXJuIG07CisKKyAgLyogTWF0 Y2ggbm9uLU5VTEwgaW5pdGlhbGl6YXRpb24uICAqLworICBnZmNfbWF0Y2hp bmdfcHJvY3B0cl9hc3NpZ25tZW50ID0gcHJvY3B0cjsKKyAgbSA9IGdmY19t YXRjaF9ydmFsdWUgKGluaXQpOworICBnZmNfbWF0Y2hpbmdfcHJvY3B0cl9h c3NpZ25tZW50ID0gMDsKKyAgaWYgKG0gPT0gTUFUQ0hfRVJST1IpCisgICAg cmV0dXJuIE1BVENIX0VSUk9SOworICBlbHNlIGlmIChtID09IE1BVENIX05P KQorICAgIHsKKyAgICAgIGdmY19lcnJvciAoIkVycm9yIGluIHBvaW50ZXIg aW5pdGlhbGl6YXRpb24gYXQgJUMiKTsKKyAgICAgIHJldHVybiBNQVRDSF9F UlJPUjsKKyAgICB9CisKKyAgaWYgKCFwcm9jcHRyKQorICAgIGdmY19yZXNv bHZlX2V4cHIgKCppbml0KTsKKyAgCisgIGlmIChnZmNfbm90aWZ5X3N0ZCAo R0ZDX1NURF9GMjAwOCwgIkZvcnRyYW4gMjAwODogbm9uLU5VTEwgcG9pbnRl ciAiCisJCSAgICAgICJpbml0aWFsaXphdGlvbiBhdCAlQyIpID09IEZBSUxV UkUpCisgICAgcmV0dXJuIE1BVENIX0VSUk9SOworCisgIHJldHVybiBNQVRD SF9ZRVM7Cit9CisKKwogLyogTWF0Y2ggYSB2YXJpYWJsZSBuYW1lIHdpdGgg YW4gb3B0aW9uYWwgaW5pdGlhbGl6ZXIuICBXaGVuIHRoaXMKICAgIHN1YnJv dXRpbmUgaXMgY2FsbGVkLCBhIHZhcmlhYmxlIGlzIGV4cGVjdGVkIHRvIGJl IHBhcnNlZCBuZXh0LgogICAgRGVwZW5kaW5nIG9uIHdoYXQgaXMgaGFwcGVu aW5nIGF0IHRoZSBtb21lbnQsIHVwZGF0ZXMgZWl0aGVyIHRoZQpAQCAtMTg5 OSwyMyArMTk0Miw5IEBAIHZhcmlhYmxlX2RlY2wgKGludCBlbGVtKQogCSAg ICAgIGdvdG8gY2xlYW51cDsKIAkgICAgfQogCi0JICBtID0gZ2ZjX21hdGNo X251bGwgKCZpbml0aWFsaXplcik7Ci0JICBpZiAobSA9PSBNQVRDSF9OTykK LQkgICAgewotCSAgICAgIGdmY19lcnJvciAoIlBvaW50ZXIgaW5pdGlhbGl6 YXRpb24gcmVxdWlyZXMgYSBOVUxMKCkgYXQgJUMiKTsKLQkgICAgICBtID0g TUFUQ0hfRVJST1I7Ci0JICAgIH0KLQotCSAgaWYgKGdmY19wdXJlIChOVUxM KSAmJiBnZmNfc3RhdGVfc3RhY2stPnN0YXRlICE9IENPTVBfREVSSVZFRCkK LQkgICAgewotCSAgICAgIGdmY19lcnJvciAoIkluaXRpYWxpemF0aW9uIG9m IHBvaW50ZXIgYXQgJUMgaXMgbm90IGFsbG93ZWQgaW4gIgotCQkJICJhIFBV UkUgcHJvY2VkdXJlIik7Ci0JICAgICAgbSA9IE1BVENIX0VSUk9SOwotCSAg ICB9Ci0KKwkgIG0gPSBtYXRjaF9wb2ludGVyX2luaXQgKCZpbml0aWFsaXpl ciwgMCk7CiAJICBpZiAobSAhPSBNQVRDSF9ZRVMpCiAJICAgIGdvdG8gY2xl YW51cDsKLQogCX0KICAgICAgIGVsc2UgaWYgKGdmY19tYXRjaF9jaGFyICgn PScpID09IE1BVENIX1lFUykKIAl7CkBAIC00Njc1LDIwICs0NzA0LDcgQEAg bWF0Y2hfcHJvY2VkdXJlX2RlY2wgKHZvaWQpCiAJICAgICAgZ290byBjbGVh bnVwOwogCSAgICB9CiAKLQkgIG0gPSBnZmNfbWF0Y2hfbnVsbCAoJmluaXRp YWxpemVyKTsKLQkgIGlmIChtID09IE1BVENIX05PKQotCSAgICB7Ci0JICAg ICAgZ2ZjX2Vycm9yICgiUG9pbnRlciBpbml0aWFsaXphdGlvbiByZXF1aXJl cyBhIE5VTEwoKSBhdCAlQyIpOwotCSAgICAgIG0gPSBNQVRDSF9FUlJPUjsK LQkgICAgfQotCi0JICBpZiAoZ2ZjX3B1cmUgKE5VTEwpKQotCSAgICB7Ci0J ICAgICAgZ2ZjX2Vycm9yICgiSW5pdGlhbGl6YXRpb24gb2YgcG9pbnRlciBh dCAlQyBpcyBub3QgYWxsb3dlZCBpbiAiCi0JCQkgImEgUFVSRSBwcm9jZWR1 cmUiKTsKLQkgICAgICBtID0gTUFUQ0hfRVJST1I7Ci0JICAgIH0KLQorCSAg bSA9IG1hdGNoX3BvaW50ZXJfaW5pdCAoJmluaXRpYWxpemVyLCAxKTsKIAkg IGlmIChtICE9IE1BVENIX1lFUykKIAkgICAgZ290byBjbGVhbnVwOwogCkBA IC00ODE1LDE4ICs0ODMxLDcgQEAgbWF0Y2hfcHBjX2RlY2wgKHZvaWQpCiAK ICAgICAgIGlmIChnZmNfbWF0Y2ggKCIgPT4iKSA9PSBNQVRDSF9ZRVMpCiAJ ewotCSAgbSA9IGdmY19tYXRjaF9udWxsICgmaW5pdGlhbGl6ZXIpOwotCSAg aWYgKG0gPT0gTUFUQ0hfTk8pCi0JICAgIHsKLQkgICAgICBnZmNfZXJyb3Ig KCJQb2ludGVyIGluaXRpYWxpemF0aW9uIHJlcXVpcmVzIGEgTlVMTCgpIGF0 ICVDIik7Ci0JICAgICAgbSA9IE1BVENIX0VSUk9SOwotCSAgICB9Ci0JICBp ZiAoZ2ZjX3B1cmUgKE5VTEwpKQotCSAgICB7Ci0JICAgICAgZ2ZjX2Vycm9y ICgiSW5pdGlhbGl6YXRpb24gb2YgcG9pbnRlciBhdCAlQyBpcyBub3QgYWxs b3dlZCBpbiAiCi0JCQkgImEgUFVSRSBwcm9jZWR1cmUiKTsKLQkgICAgICBt ID0gTUFUQ0hfRVJST1I7Ci0JICAgIH0KKwkgIG0gPSBtYXRjaF9wb2ludGVy X2luaXQgKCZpbml0aWFsaXplciwgMSk7CiAJICBpZiAobSAhPSBNQVRDSF9Z RVMpCiAJICAgIHsKIAkgICAgICBnZmNfZnJlZV9leHByIChpbml0aWFsaXpl cik7CkluZGV4OiBnY2MvZm9ydHJhbi9leHByLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vZXhwci5jCShyZXZpc2lvbiAxNjMy ODEpCisrKyBnY2MvZm9ydHJhbi9leHByLmMJKHdvcmtpbmcgY29weSkKQEAg LTM1NTIsNyArMzU1MiwyOCBAQCBnZmNfY2hlY2tfYXNzaWduX3N5bWJvbCAo Z2ZjX3N5bWJvbCAqc3ltLCBnZmNfZXhwcgogCiAgIGdmY19mcmVlIChsdmFs dWUuc3ltdHJlZSk7CiAKLSAgcmV0dXJuIHI7CisgIGlmIChyID09IEZBSUxV UkUpCisgICAgcmV0dXJuIHI7CisgIAorICBpZiAoc3ltLT5hdHRyLnBvaW50 ZXIgJiYgcnZhbHVlLT5leHByX3R5cGUgIT0gRVhQUl9OVUxMKQorICAgIHsK KyAgICAgIC8qIEYwODpDNDYxLiBBZGRpdGlvbmFsIGNoZWNrcyBmb3IgcG9p bnRlciBpbml0aWFsaXphdGlvbi4gICovCisgICAgICBzeW1ib2xfYXR0cmli dXRlIGF0dHI7CisgICAgICBhdHRyID0gZ2ZjX2V4cHJfYXR0ciAocnZhbHVl KTsKKyAgICAgIGlmIChhdHRyLmFsbG9jYXRhYmxlKQorCXsKKwkgIGdmY19l cnJvciAoIlBvaW50ZXIgaW5pdGlhbGl6YXRpb24gdGFyZ2V0IGF0ICVDICIK KwkgICAgICAgICAgICAgIm11c3Qgbm90IGJlIEFMTE9DQVRBQkxFICIpOwor CSAgcmV0dXJuIEZBSUxVUkU7CisJfQorICAgICAgaWYgKCFhdHRyLnNhdmUp CisJeworCSAgZ2ZjX2Vycm9yICgiUG9pbnRlciBpbml0aWFsaXphdGlvbiB0 YXJnZXQgYXQgJUMgbXVzdCBiZSBTQVZFIik7CisJICByZXR1cm4gRkFJTFVS RTsKKwl9CisgICAgfQorCisgIHJldHVybiBTVUNDRVNTOwogfQogCiAKSW5k ZXg6IGdjYy9mb3J0cmFuL3Jlc29sdmUuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBnY2MvZm9ydHJhbi9yZXNvbHZlLmMJKHJldmlzaW9uIDE2MzI4 MSkKKysrIGdjYy9mb3J0cmFuL3Jlc29sdmUuYwkod29ya2luZyBjb3B5KQpA QCAtODMzLDEwICs4MzMsMTEgQEAgcmVzb2x2ZV9jb250YWluZWRfZnVuY3Rp b25zIChnZmNfbmFtZXNwYWNlICpucykKIAogCiAvKiBSZXNvbHZlIGFsbCBv ZiB0aGUgZWxlbWVudHMgb2YgYSBzdHJ1Y3R1cmUgY29uc3RydWN0b3IgYW5k IG1ha2Ugc3VyZSB0aGF0Ci0gICB0aGUgdHlwZXMgYXJlIGNvcnJlY3QuICAq LworICAgdGhlIHR5cGVzIGFyZSBjb3JyZWN0LiBUaGUgJ2luaXQnIGZsYWcg aW5kaWNhdGVzIHRoYXQgdGhlIGdpdmVuCisgICBjb25zdHJ1Y3RvciBpcyBh biBpbml0aWFsaXplci4gICovCiAKIHN0YXRpYyBnZmNfdHJ5Ci1yZXNvbHZl X3N0cnVjdHVyZV9jb25zIChnZmNfZXhwciAqZXhwcikKK3Jlc29sdmVfc3Ry dWN0dXJlX2NvbnMgKGdmY19leHByICpleHByLCBpbnQgaW5pdCkKIHsKICAg Z2ZjX2NvbnN0cnVjdG9yICpjb25zOwogICBnZmNfY29tcG9uZW50ICpjb21w OwpAQCAtODk2LDcgKzg5Nyw4IEBAIHN0YXRpYyBnZmNfdHJ5CiAKICAgICAg IC8qIElmIHdlIGRvbid0IGhhdmUgdGhlIHJpZ2h0IHR5cGUsIHRyeSB0byBj b252ZXJ0IGl0LiAgKi8KIAotICAgICAgaWYgKCFnZmNfY29tcGFyZV90eXBl cyAoJmNvbnMtPmV4cHItPnRzLCAmY29tcC0+dHMpKQorICAgICAgaWYgKCFj b21wLT5hdHRyLnByb2NfcG9pbnRlciAmJgorCSAgIWdmY19jb21wYXJlX3R5 cGVzICgmY29ucy0+ZXhwci0+dHMsICZjb21wLT50cykpCiAJewogCSAgdCA9 IEZBSUxVUkU7CiAJICBpZiAoc3RyY21wIChjb21wLT5uYW1lLCAiJGV4dGVu ZHMiKSA9PSAwKQpAQCAtMTAwNSw2ICsxMDA3LDIzIEBAIHN0YXRpYyBnZmNf dHJ5CiAJCSAgICAgImEgVEFSR0VUIiwgJmNvbnMtPmV4cHItPndoZXJlLCBj b21wLT5uYW1lKTsKIAl9CiAKKyAgICAgIGlmIChpbml0KQorCXsKKwkgIC8q IEYwODpDNDYxLiBBZGRpdGlvbmFsIGNoZWNrcyBmb3IgcG9pbnRlciBpbml0 aWFsaXphdGlvbi4gICovCisJICBpZiAoYS5hbGxvY2F0YWJsZSkKKwkgICAg eworCSAgICAgIHQgPSBGQUlMVVJFOworCSAgICAgIGdmY19lcnJvciAoIlBv aW50ZXIgaW5pdGlhbGl6YXRpb24gdGFyZ2V0IGF0ICVMICIKKwkJCSJtdXN0 IG5vdCBiZSBBTExPQ0FUQUJMRSAiLCAmY29ucy0+ZXhwci0+d2hlcmUpOwor CSAgICB9CisJICBpZiAoIWEuc2F2ZSkKKwkgICAgeworCSAgICAgIHQgPSBG QUlMVVJFOworCSAgICAgIGdmY19lcnJvciAoIlBvaW50ZXIgaW5pdGlhbGl6 YXRpb24gdGFyZ2V0IGF0ICVMIG11c3QgYmUgU0FWRSIsCisJCQkmY29ucy0+ ZXhwci0+d2hlcmUpOworCSAgICB9CisJfQorCiAgICAgICAvKiBGMjAwMywg QzEyNzIgKDMpLiAgKi8KICAgICAgIGlmIChnZmNfcHVyZSAoTlVMTCkgJiYg Y29ucy0+ZXhwci0+ZXhwcl90eXBlID09IEVYUFJfVkFSSUFCTEUKIAkgICYm IChnZmNfaW1wdXJlX3ZhcmlhYmxlIChjb25zLT5leHByLT5zeW10cmVlLT5u LnN5bSkKQEAgLTEwMTUsNiArMTAzNCw3IEBAIHN0YXRpYyBnZmNfdHJ5CiAJ CSAgICAgInBvaW50ZXIgY29tcG9uZW50ICclcycgYXQgJUwgaW4gUFVSRSBw cm9jZWR1cmUiLAogCQkgICAgIGNvbXAtPm5hbWUsICZjb25zLT5leHByLT53 aGVyZSk7CiAJfQorCiAgICAgfQogCiAgIHJldHVybiB0OwpAQCAtNTk3Nyw3 ICs1OTk3LDcgQEAgZ2ZjX3Jlc29sdmVfZXhwciAoZ2ZjX2V4cHIgKmUpCiAg ICAgICBpZiAodCA9PSBGQUlMVVJFKQogCWJyZWFrOwogCi0gICAgICB0ID0g cmVzb2x2ZV9zdHJ1Y3R1cmVfY29ucyAoZSk7CisgICAgICB0ID0gcmVzb2x2 ZV9zdHJ1Y3R1cmVfY29ucyAoZSwgMCk7CiAgICAgICBpZiAodCA9PSBGQUlM VVJFKQogCWJyZWFrOwogCkBAIC04OTU2LDEwICs4OTc2LDE3IEBAIHJlc29s dmVfY29kZSAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19uYW1lc3BhY2UgKm5zKQog c3RhdGljIHZvaWQKIHJlc29sdmVfdmFsdWVzIChnZmNfc3ltYm9sICpzeW0p CiB7CisgIGdmY190cnkgdDsKKwogICBpZiAoc3ltLT52YWx1ZSA9PSBOVUxM KQogICAgIHJldHVybjsKIAotICBpZiAoZ2ZjX3Jlc29sdmVfZXhwciAoc3lt LT52YWx1ZSkgPT0gRkFJTFVSRSkKKyAgaWYgKHN5bS0+dmFsdWUtPmV4cHJf dHlwZSA9PSBFWFBSX1NUUlVDVFVSRSkKKyAgICB0PSByZXNvbHZlX3N0cnVj dHVyZV9jb25zIChzeW0tPnZhbHVlLCAxKTsKKyAgZWxzZSAKKyAgICB0ID0g Z2ZjX3Jlc29sdmVfZXhwciAoc3ltLT52YWx1ZSk7CisKKyAgaWYgKHQgPT0g RkFJTFVSRSkKICAgICByZXR1cm47CiAKICAgZ2ZjX2NoZWNrX2Fzc2lnbl9z eW1ib2wgKHN5bSwgc3ltLT52YWx1ZSk7CkluZGV4OiBnY2MvZm9ydHJhbi9w cmltYXJ5LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2ZvcnRy YW4vcHJpbWFyeS5jCShyZXZpc2lvbiAxNjMyODEpCisrKyBnY2MvZm9ydHJh bi9wcmltYXJ5LmMJKHdvcmtpbmcgY29weSkKQEAgLTIwODgsNiArMjA4OCw3 IEBAIGdmY192YXJpYWJsZV9hdHRyIChnZmNfZXhwciAqZXhwciwgZ2ZjX3R5 cGVzcGVjICp0CiAgIGF0dHIucG9pbnRlciA9IHBvaW50ZXI7CiAgIGF0dHIu YWxsb2NhdGFibGUgPSBhbGxvY2F0YWJsZTsKICAgYXR0ci50YXJnZXQgPSB0 YXJnZXQ7CisgIGF0dHIuc2F2ZSA9IHN5bS0+YXR0ci5zYXZlOwogCiAgIHJl dHVybiBhdHRyOwogfQo= --000e0cd1d1249389a8048df7aea1 Content-Type: application/octet-stream; name="pointer_init_2.f90" Content-Disposition: attachment; filename="pointer_init_2.f90" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gcxuk91l1 Content-length: 1700 ISB7IGRnLWRvIGNvbXBpbGUgfQohCiEgUFIgNDUyOTA6IFtGMDhdIHBvaW50 ZXIgaW5pdGlhbGl6YXRpb24KIQohIENvbnRyaWJ1dGVkIGJ5IEphbnVzIFdl aWwgPGphbnVzQGdjYy5nbnUub3JnPgoKCmltcGxpY2l0IG5vbmUKCnJlYWws IHRhcmdldCwgc2F2ZSA6OiByCmludGVnZXIsIHRhcmdldCwgc2F2ZSwgZGlt ZW5zaW9uKDE6MykgOjogdgoKaW50ZWdlciwgc2F2ZSA6OiBpCmludGVnZXIs IHRhcmdldCA6OiBqCmludGVnZXIsIHRhcmdldCwgc2F2ZSwgYWxsb2NhdGFi bGUgOjogYQoKCmludGVnZXIsIHBvaW50ZXIgOjogZHAwID0+IDEzICAhIHsg ZGctZXJyb3IgIkVycm9yIGluIHBvaW50ZXIgaW5pdGlhbGl6YXRpb24iIH0K aW50ZWdlciwgcG9pbnRlciA6OiBkcDEgPT4gciAgICEgeyBkZy1lcnJvciAi RGlmZmVyZW50IHR5cGVzIGluIHBvaW50ZXIgYXNzaWdubWVudCIgfQppbnRl Z2VyLCBwb2ludGVyIDo6IGRwMiA9PiB2ICAgISB7IGRnLWVycm9yICJEaWZm ZXJlbnQgcmFua3MgaW4gcG9pbnRlciBhc3NpZ25tZW50IiB9CmludGVnZXIs IHBvaW50ZXIgOjogZHAzID0+IGkgICAhIHsgZGctZXJyb3IgImlzIG5laXRo ZXIgVEFSR0VUIG5vciBQT0lOVEVSIiB9CmludGVnZXIsIHBvaW50ZXIgOjog ZHA0ID0+IGogICAhIHsgZGctZXJyb3IgIm11c3QgYmUgU0FWRSIgfQppbnRl Z2VyLCBwb2ludGVyIDo6IGRwNSA9PiBhICAgISB7IGRnLWVycm9yICJtdXN0 IG5vdCBiZSBBTExPQ0FUQUJMRSIgfQoKdHlwZSA6OiB0CiAgaW50ZWdlciwg cG9pbnRlciA6OiBkcGMwID0+IDEzICAhIHsgZGctZXJyb3IgIkVycm9yIGlu IHBvaW50ZXIgaW5pdGlhbGl6YXRpb24iIH0KICBpbnRlZ2VyLCBwb2ludGVy IDo6IGRwYzEgPT4gciAgICEgeyBkZy1lcnJvciAiaXMgUkVBTCBidXQgc2hv dWxkIGJlIElOVEVHRVIiIH0KICBpbnRlZ2VyLCBwb2ludGVyIDo6IGRwYzIg PT4gdiAgICEgeyBkZy1lcnJvciAicmFuayBvZiB0aGUgZWxlbWVudC4qZG9l cyBub3QgbWF0Y2giIH0KICBpbnRlZ2VyLCBwb2ludGVyIDo6IGRwYzMgPT4g aSAgICEgeyBkZy1lcnJvciAibXVzdCBoYXZlIHRoZSBUQVJHRVQgYXR0cmli dXRlIiB9CiAgaW50ZWdlciwgcG9pbnRlciA6OiBkcGM0ID0+IGogICAhIHsg ZGctZXJyb3IgIm11c3QgYmUgU0FWRSIgfQogIGludGVnZXIsIHBvaW50ZXIg OjogZHBjNSA9PiBhICAgISB7IGRnLWVycm9yICJtdXN0IG5vdCBiZSBBTExP Q0FUQUJMRSIgfQplbmQgdHlwZQoKdHlwZSh0KSA6OnUKCmVuZAo= --000e0cd1d1249389a8048df7aea1 Content-Type: application/octet-stream; name="pointer_init_3.f90" Content-Disposition: attachment; filename="pointer_init_3.f90" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gcxuk91w2 Content-length: 720 ISB7IGRnLWRvIHJ1biB9CiEKISBQUiA0NTI5MDogW0YwOF0gcG9pbnRlciBp bml0aWFsaXphdGlvbgohCiEgQ29udHJpYnV0ZWQgYnkgSmFudXMgV2VpbCA8 amFudXNAZ2NjLmdudS5vcmc+CgppbXBsaWNpdCBub25lCgppbnRlZ2VyLHRh cmdldCA6OiBpMCA9IDIKaW50ZWdlcix0YXJnZXQsZGltZW5zaW9uKDE6Mykg OjogdmVjID0gMQoKdHlwZSA6OiB0CiAgaW50ZWdlciwgcG9pbnRlciA6OiBk cGMgPT4gaTAKICBpbnRlZ2VyIDo6IGkgPSAwCmVuZCB0eXBlCgp0eXBlICh0 KSwgc2F2ZSwgdGFyZ2V0IDo6IHUKCmludGVnZXIsIHBvaW50ZXIgOjogZHAg PT4gaTAKaW50ZWdlciwgcG9pbnRlciA6OiBkcDIgPT4gdmVjKDIpCmludGVn ZXIsIHBvaW50ZXIgOjogZHAzID0+IHUlaQoKZHAgPSA1CmlmIChpMC89NSkg Y2FsbCBhYm9ydCgpCgp1JWRwYyA9IDYKaWYgKGkwLz02KSBjYWxsIGFib3J0 KCkKCmRwMiA9IDMKaWYgKHZlYygyKS89MykgY2FsbCBhYm9ydCgpCgpkcDMg PSA0CmlmICh1JWkvPTQpIGNhbGwgYWJvcnQoKQoKZW5kIAo= --000e0cd1d1249389a8048df7aea1 Content-Type: application/octet-stream; name="pointer_init_4.f90" Content-Disposition: attachment; filename="pointer_init_4.f90" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gcxuk9223 Content-length: 712 ISB7IGRnLWRvIHJ1biB9CiEKISBQUiA0NTI5MDogW0YwOF0gcG9pbnRlciBp bml0aWFsaXphdGlvbgohCiEgQ29udHJpYnV0ZWQgYnkgSmFudXMgV2VpbCA8 amFudXNAZ2NjLmdudS5vcmc+Cgptb2R1bGUgbQoKaW1wbGljaXQgbm9uZQoK Y29udGFpbnMKCiAgaW50ZWdlciBmdW5jdGlvbiBmMSgpCiAgICBmMSA9IDQy CiAgZW5kIGZ1bmN0aW9uCgogIGludGVnZXIgZnVuY3Rpb24gZjIoKQogICAg ZjIgPSA0MwogIGVuZCBmdW5jdGlvbgoKZW5kIG1vZHVsZQoKCnByb2dyYW0g dGVzdF9wdHJfaW5pdAoKdXNlIG0KaW1wbGljaXQgbm9uZQoKcHJvY2VkdXJl KGYxKSwgcG9pbnRlciA6OiBwcCA9PiBmMQoKdHlwZSA6OiB0CiAgcHJvY2Vk dXJlKGYyKSwgcG9pbnRlciwgbm9wYXNzIDo6IHBwYyA9PiBmMgplbmQgdHlw ZQoKdHlwZSAodCkgOjogdQoKaWYgKHBwKCkvPTQyKSBjYWxsIGFib3J0KCkK aWYgKHUlcHBjKCkvPTQzKSBjYWxsIGFib3J0KCkKCmVuZAoKISB7IGRnLWZp bmFsIHsgY2xlYW51cC1tb2R1bGVzICJtIiB9IH0K --000e0cd1d1249389a8048df7aea1--