From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 53515 invoked by alias); 14 Jan 2016 16:34:50 -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 53440 invoked by uid 89); 14 Jan 2016 16:34:49 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=97, sk:RECORD_, 9,7, symtab_node X-HELO: mail-ig0-f172.google.com Received: from mail-ig0-f172.google.com (HELO mail-ig0-f172.google.com) (209.85.213.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Thu, 14 Jan 2016 16:34:46 +0000 Received: by mail-ig0-f172.google.com with SMTP id z14so196599808igp.0 for ; Thu, 14 Jan 2016 08:34:46 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to :content-type; bh=MwhNpaZ1znPGUet5wDszfDsfiR5Vgr8Noab+VxeCXuU=; b=lnIenCz91uXCCPqcTnvCFw5/wzLVAk+egAwCoZmekpuYORucIMFhg9MjFzjXZFsKHh LwwWJbEsjgKD4HRus95/ZKsDX31uefmyKx86jBDzteHhvbiTKAwnyJWtsXsQBX8LD/l3 b5u+zrevCqVhOVZnL7eaScLLdfI+9/uPvdfU3zFrDs1RcwKkJdnzga80ohiSCA28ntaO 1PJs4qU8276h6Ivk26R69ZExPxJ2/eunCm276RBMiUiSR5iB1qXADu24g+xM3PCXkevt y3oAXyP33mMxAFrRh4xufiZEbiOXIk9yRPK534pygEVoBEusDSGOSdnmd05tkA2JlTii qMcA== X-Gm-Message-State: ALoCoQmEMqt2iDx76KFp/x0FC6uGIigxy1ibvdeGgTe8jJbOXcPcP4oUqkqKSUYamg/sj+iiL/J4Il6MH60nxqvHfJyEMvm0zHVwdUDhGJJboTbqDZi1MUo= MIME-Version: 1.0 X-Received: by 10.50.160.1 with SMTP id xg1mr5821216igb.62.1452789284641; Thu, 14 Jan 2016 08:34:44 -0800 (PST) Received: by 10.36.214.70 with HTTP; Thu, 14 Jan 2016 08:34:44 -0800 (PST) Date: Thu, 14 Jan 2016 16:34:00 -0000 Message-ID: Subject: reject decl with incomplete struct/union type in check_global_declaration() From: Prathamesh Kulkarni To: gcc Patches Content-Type: multipart/mixed; boundary=001a1134145a3f4e5305294dddcf X-IsSubscribed: yes X-SW-Source: 2016-01/txt/msg00941.txt.bz2 --001a1134145a3f4e5305294dddcf Content-Type: text/plain; charset=UTF-8 Content-length: 1148 Hi, For test-case containing only the following declaration: static struct undefined_struct object; gcc rejects it at -O0 in assemble_variable() with error "storage size of is unknown", however no error is reported when compiled with -O2. AFAIU that happens because at -O2, analyze_function() removes the symbol "object" from symbol table and assemble_variable() has no chance to process it. g++ rejects it during parsing. I tried similarly in C FE by adding a check for decl with incomplete struct/union type in finish_decl(), however that fails to compile the following case: typedef struct foo foo_t; foo_t x; struct foo { int i; }; g++ rejects the above case as well but gcc accepts it. Do C and C++ standards differ in this regard ? So instead of finish_decl(), I added check for incomplete struct/union in check_global_declaration(), which is called by analyze_function() before removing unused nodes. The patch regresses Wcxx-compat-8.c and declspecs-1.c because the error "storage size of is unknown" shows up in these test-cases. I modified the test-cases to accept that error. Does the patch look OK ? Thank you, Prathamesh --001a1134145a3f4e5305294dddcf Content-Type: text/plain; charset=US-ASCII; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ijegs0p30 Content-length: 3364 ZGlmZiAtLWdpdCBhL2djYy9jZ3JhcGh1bml0LmMgYi9nY2MvY2dyYXBodW5p dC5jCmluZGV4IDk1MGY2YzUuLjE1NjBhNzggMTAwNjQ0Ci0tLSBhL2djYy9j Z3JhcGh1bml0LmMKKysrIGIvZ2NjL2NncmFwaHVuaXQuYwpAQCAtOTc0LDYg Kzk3NCwxMiBAQCBjaGVja19nbG9iYWxfZGVjbGFyYXRpb24gKHN5bXRhYl9u b2RlICpzbm9kZSkKIAkJICAgPyBPUFRfV3VudXNlZF9jb25zdF92YXJpYWJs ZQogCQkgICA6IE9QVF9XdW51c2VkX3ZhcmlhYmxlKSwKIAkJIiVxRCBkZWZp bmVkIGJ1dCBub3QgdXNlZCIsIGRlY2wpOworCisgIGlmIChWQVJfUCAoZGVj bCkgJiYgIURFQ0xfRVhURVJOQUwgKGRlY2wpCisgICAgICAmJiBSRUNPUkRf T1JfVU5JT05fVFlQRV9QIChUUkVFX1RZUEUgKGRlY2wpKSAmJiBERUNMX1NJ WkUgKGRlY2wpID09IDApCisgICAgeworICAgICAgZXJyb3IgKCJzdG9yYWdl IHNpemUgb2YgJXErRCBpc24lJ3Qga25vd24iLCBkZWNsKTsKKyAgICB9CiB9 CiAKIC8qIERpc2NvdmVyIGFsbCBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlcyB0 aGF0IGFyZSB0cml2aWFsbHkgbmVlZGVkLCBhbmFseXplCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy5kZy9XY3h4LWNvbXBhdC04LmMgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy9XY3h4LWNvbXBhdC04LmMKaW5kZXggZjdlOGM1 NS4uNGU5ZGRjMSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv V2N4eC1jb21wYXQtOC5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL1dj eHgtY29tcGF0LTguYwpAQCAtMzMsNiArMzMsNyBAQCBlbnVtIGUzCiAKIF9f dHlwZW9mX18gKHN0cnVjdCBzNSB7IGludCBpOyB9KSB2NTsgLyogeyBkZy13 YXJuaW5nICJpbnZhbGlkIGluIENcWytcXVxbK1xdIiB9ICovCiBfX3R5cGVv Zl9fIChzdHJ1Y3QgdDUpIHc1OyAvKiB7IGRnLWJvZ3VzICJpbnZhbGlkIGlu IENcWytcXVxbK1xdIiB9ICovCisgIC8qIHsgZGctZXJyb3IgInN0b3JhZ2Ug c2l6ZSBvZiAndzUnIGlzbid0IGtub3duIiAiIiB7IHRhcmdldCAqLSotKiB9 IDM1IH0gKi8KIAogaW50CiBmMSAoc3RydWN0IHMxICpwKQpAQCAtNjQsNCAr NjUsNCBAQCBmNSAoKQogICByZXR1cm4gJigoc3RydWN0IHQ4KSB7IH0pOyAg LyogeyBkZy13YXJuaW5nICJpbnZhbGlkIGluIENcWytcXVxbK1xdIiB9ICov CiB9CiAKLS8qIHsgZGctZXJyb3IgImludmFsaWQgdXNlIG9mIHVuZGVmaW5l ZCB0eXBlIiAiIiB7IHRhcmdldCAqLSotKiB9IDY0IH0gKi8KKy8qIHsgZGct ZXJyb3IgImludmFsaWQgdXNlIG9mIHVuZGVmaW5lZCB0eXBlIiAiIiB7IHRh cmdldCAqLSotKiB9IDY1IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL2RlY2xzcGVjLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L2RlY2xzcGVjLTEuYwppbmRleCBjMTlmMTA3Li45MTEzMDc2IDEwMDY0NAot LS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9kZWNsc3BlYy0xLmMKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZGVjbHNwZWMtMS5jCkBAIC05LDcgKzks OCBAQCB0eXBlZGVmIGludCB0OwogLyogVGhlc2Ugc2hvdWxkIGFsbCBiZSBk aWFnbm9zZWQsIGJ1dCBvbmx5IG9uY2UsIG5vdCBmb3IgZXZlcnkKICAgIGlk ZW50aWZpZXIgZGVjbGFyZWQuICAqLwogc3RydWN0IHMwIGludCB4MCwgLyog eyBkZy1lcnJvciAidHdvIG9yIG1vcmUgZGF0YSB0eXBlcyIgfSAqLwoteDE7 CisvKiB7IGRnLWVycm9yICJzdG9yYWdlIHNpemUgb2YgJ3gwJyBpc24ndCBr bm93biIgIiIgeyB0YXJnZXQgKi0qLSogfSAxMSB9ICovCit4MTsgLyogeyBk Zy1lcnJvciAic3RvcmFnZSBzaXplIG9mICd4MScgaXNuJ3Qga25vd24iIH0g Ki8gCiAKIGNoYXIgdW5pb24gdTAgeDIsIC8qIHsgZGctZXJyb3IgInR3byBv ciBtb3JlIGRhdGEgdHlwZXMiIH0gKi8KIHgzOwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvc3RydWN0LWluY29tcGwtMi5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvc3RydWN0LWluY29tcGwtMi5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzOTU3ZWIKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9zdHJ1Y3QtaW5jb21wbC0y LmMKQEAgLTAsMCArMSwxMCBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLU8yIiB9ICovCisKK3N0YXRpYyBzdHJ1Y3Qg Zm9vIHg7ICAvKiB7IGRnLWVycm9yICJzdG9yYWdlIHNpemUgb2YgJ3gnIGlz bid0IGtub3duIiB9ICovCitzdGF0aWMgdW5pb24gYmFyIHk7ICAvKiB7IGRn LWVycm9yICJzdG9yYWdlIHNpemUgb2YgJ3knIGlzbid0IGtub3duIiB9ICov CisKK3R5cGVkZWYgc3RydWN0IFAgcDsKK3N0YXRpYyBwIHBfb2JqOyAgLyog eyBkZy1lcnJvciAic3RvcmFnZSBzaXplIG9mICdwX29iaicgaXNuJ3Qga25v d24iIH0gKi8KKworZXh0ZXJuIHN0cnVjdCB1bmRlZmluZWRfb2JqZWN0IG9i amVjdDsK --001a1134145a3f4e5305294dddcf Content-Type: application/octet-stream; name=ChangeLog Content-Disposition: attachment; filename=ChangeLog Content-Transfer-Encoding: base64 X-Attachment-Id: f_ijegs4nt1 Content-length: 460 MjAxNi0wMS0xNCAgUHJhdGhhbWVzaCBLdWxrYXJuaSAgPHByYXRoYW1lc2gu a3Vsa2FybmlAbGluYXJvLm9yZz4KCmdjYy8KCSogY2dyYXBodW5pdC5jIChj aGVja19nbG9iYWxfZGVjbGFyYXRpb24pOiBDaGVjayBmb3IgZGVjbCBoYXZp bmcKCWluY29tcGxldGUgc3RydWN0L3VuaW9uIHR5cGUuCgp0ZXN0c3VpdGUv CgkqIGdjYy5kZy9zdHJ1Y3QtaW5jb21wbC0yLmM6IE5ldyB0ZXN0LgoJKiBn Y2MuZGcvV2N4eC1jb21wYXQtOC5jOiBBZGp1c3QgdG8gYWNjZXB0IGVycm9y IGR1ZSB0bwoJaW5jb21wbGV0ZSBzdHJ1Y3QgdHlwZS4KCSogZ2NjLmRnL2Rl Y2xzcGVjLTEuYzogTGlrZXdpc2UuCg== --001a1134145a3f4e5305294dddcf--