From patchwork Fri Feb 17 13:08:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Prathamesh Kulkarni X-Patchwork-Id: 94156 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp160581qgi; Fri, 17 Feb 2017 05:08:35 -0800 (PST) X-Received: by 10.84.197.1 with SMTP id m1mr11302665pld.123.1487336915846; Fri, 17 Feb 2017 05:08:35 -0800 (PST) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id r143si10238510pgr.237.2017.02.17.05.08.35 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 17 Feb 2017 05:08:35 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-return-448701-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org; spf=pass (google.com: domain of gcc-patches-return-448701-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-448701-patch=linaro.org@gcc.gnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:from:date:message-id:subject:to:content-type; q= dns; s=default; b=yQlZfYJauqYrJX+vZ777TRaZoTU/Zez2+jK7cHtkeEszll 5W/GjAMr5nAtXhGi50jsaGOKeCZT4+LlwiLyqv3/D2kw3QZMrakj4tGg/G6UFV5a fuLSPI7+ZfVTFuHCoKC1yeXgoGWit2jc79BEgWXgVzQU9ygelY0Q2mgYzDz0A= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:from:date:message-id:subject:to:content-type; s= default; bh=kQVgVx09MGE0y5ZISZ6JbckUVYY=; b=EHbM+zg618QLRl2cwmrz YFJLKFX/wTweBOUwoH2gZO0nvbwUnVUu9aEOiiHuB1q9eWL7+1DVXJNdNvd1Q5ey Xk0fVmfSn+TSd7Q/n+4MFL8Ubvv0R73jxOU0BlFcMffstH/VeOxEXpK282O+ZnYU 7cAVXXtA/dMJo3zCY8W6Ucg= Received: (qmail 52974 invoked by alias); 17 Feb 2017 13:08:22 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 52959 invoked by uid 89); 17 Feb 2017 13:08:20 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.0 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy=gistgithubcom, gist.github.com, UD:gist.github.com, Hx-languages-length:1915 X-HELO: mail-it0-f52.google.com Received: from mail-it0-f52.google.com (HELO mail-it0-f52.google.com) (209.85.214.52) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 17 Feb 2017 13:08:10 +0000 Received: by mail-it0-f52.google.com with SMTP id x75so13944195itb.0 for ; Fri, 17 Feb 2017 05:08:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=NrHydmq89DrBCUGUNwh2KbKwQdVm5hwurydloILtQvk=; b=R0+J8v8glcVn0jZXxAim92lEJotEyMOgcYCZgfJvC+XHbR8CBXPdujG4Y2I6R+WoPB TBq+Eh3TLq9pr7HG0Av6Y1MgNtli/Ds7oDbP+ol3Q+OPHNL7pWuIT1bmaLBjcEA8gJjY MnRYpP6eF7XeGwbeTvskM8g4bfVnCuJz7gfkXN0dyIS6A1844sWEwU9oGjlrjqfN46JA NRaZ4asRm6eFK1fLnr77+zVvCMpjTKkBnrMvtU+aA5A6VkaYwZGL3C2EnE4Ahw3SgMar ZP9nUnf187tbjs+h1JrNVWtxifPsXlj4wKV0qGeYdJaTJ2i6wmAXc+YjSXljjhUn2W3c 40Bg== X-Gm-Message-State: AMke39myMFcgF1WQIByUMyo+OrORDdwjzm6grA3352W/Px4qTCQPs0Bb/gPdrN+TDZuyWffniY6yOOmDwy8Ce0PR X-Received: by 10.36.29.80 with SMTP id 77mr1909672itj.29.1487336889367; Fri, 17 Feb 2017 05:08:09 -0800 (PST) MIME-Version: 1.0 Received: by 10.107.162.13 with HTTP; Fri, 17 Feb 2017 05:08:08 -0800 (PST) From: Prathamesh Kulkarni Date: Fri, 17 Feb 2017 18:38:08 +0530 Message-ID: Subject: [GIMPLE FE] Fix ICE's with default ssa-name parsing in c_parser_gimple_postfix_expression To: gcc Patches , Richard Biener X-IsSubscribed: yes Hi, For the following test-case: int __GIMPLE () foo (int a) { return t0_1(D); } The compiler emits the undeclared diagnostic and then ICE's in c_parser_gimple_postfix_expression because we don't check if c_parser_parse_ssa_name returned error_mark_node. ICE: https://gist.github.com/anonymous/45a01338d80faf4f21330bc9ee97ca5f For this test-case: int __GIMPLE() foo(int a) { int _1; return _1(D); } c_parser_gimple_postfix_expression calls set_ssa_default_def which crashes with segfault because SSA_VAR_P(_1) is NULL and set_ssa_default_def expects it to be non-null. ICE: https://gist.github.com/anonymous/1df5a4e8a59eca289e214bbaf07a461a The patch rejects the above test-case with: foo.c: In function ‘foo’: foo.c:4:10: error: anonymous SSA name cannot have default definition return _1(D); OK to commit after bootstrap+test ? Thanks, Prathamesh diff --git a/gcc/c/gimple-parser.c b/gcc/c/gimple-parser.c index d959877..e1535a3 100644 --- a/gcc/c/gimple-parser.c +++ b/gcc/c/gimple-parser.c @@ -864,6 +864,8 @@ c_parser_gimple_postfix_expression (c_parser *parser) c_parser_consume_token (parser); expr.value = c_parser_parse_ssa_name (parser, id, NULL_TREE, version, ver_offset); + if (expr.value == error_mark_node) + return expr; set_c_expr_source_range (&expr, tok_range); /* For default definition SSA names. */ if (c_parser_next_token_is (parser, CPP_OPEN_PAREN) @@ -878,6 +880,13 @@ c_parser_gimple_postfix_expression (c_parser *parser) c_parser_consume_token (parser); if (! SSA_NAME_IS_DEFAULT_DEF (expr.value)) { + if (!SSA_NAME_VAR (expr.value)) + { + error_at (loc, "anonymous SSA name cannot have" + " default definition"); + expr.value = error_mark_node; + return expr; + } set_ssa_default_def (cfun, SSA_NAME_VAR (expr.value), expr.value); SSA_NAME_DEF_STMT (expr.value) = gimple_build_nop ();