From patchwork Wed Dec 28 18:27:30 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Prasad Ghangal X-Patchwork-Id: 89196 Delivered-To: patch@linaro.org Received: by 10.140.20.101 with SMTP id 92csp5648384qgi; Wed, 28 Dec 2016 10:27:48 -0800 (PST) X-Received: by 10.99.124.66 with SMTP id l2mr71124110pgn.116.1482949668939; Wed, 28 Dec 2016 10:27:48 -0800 (PST) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id d30si50809591plj.183.2016.12.28.10.27.48 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 28 Dec 2016 10:27:48 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-return-445091-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-445091-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-445091-patch=linaro.org@gcc.gnu.org; dmarc=fail (p=NONE dis=NONE) header.from=gmail.com 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=xqA0zTjlZCy9smKu1ldNLAgFnjP68iOGGQTew7Vzb/dovT pMaJpiDFRVuCjvXzBu5wXdGO7pLjp2vOIzAdd2oAmC1XqjvhMCYeQT08EmrSWBzK efBuwmKc16FVXY95V21vLb21l+vq/svcSxwgOKD85gj1zL1c/I7bn3QIDQOrQ= 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=Y920ojiGtlnbND9HZsT7nKK4lis=; b=NzyBoJ0A3+TNnLNTU/9g 1tcb/dJpx6RNpJAhVFHgZQ9JolspPcYV5zil47Sd2UapH62KYMXP7eFZVJ8RgLQx WxrP9oHhV9GtxOcl7AcgWosrZVvrvgS4iVdTn9IlKtuPSZFetyqn5FRsgvIhESia Bfj5vU6vHXCx/MybAxo9cNI= Received: (qmail 39264 invoked by alias); 28 Dec 2016 18:27:35 -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 35638 invoked by uid 89); 28 Dec 2016 18:27:34 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=no version=3.3.2 spammy=11946, error_mark_node, cond_expr X-HELO: mail-it0-f42.google.com Received: from mail-it0-f42.google.com (HELO mail-it0-f42.google.com) (209.85.214.42) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 28 Dec 2016 18:27:32 +0000 Received: by mail-it0-f42.google.com with SMTP id o141so174497868itc.0 for ; Wed, 28 Dec 2016 10:27:32 -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=G4wQk3nms2aH3NB0MZWpo0VkPAS06rwgDFm8bdkUeGo=; b=JcuFtW1x70f+urXwiQ9xh0FSIgvZgtcFA+4dUsiB8GnQ29tyQYfDKRuZeW6L0jNJvY Pqri/eVPgMwgqITBg36xQRen49jZbEs7xQwssLpJYdsYlRegVVw7rTwwhR/xWnHrxBfT tbJDiLz9yBbTiJXf7UhAttYNOpI7bJEfFk2BV6kk7YHcLF7/PIG9gOm0cBo42NE0sF2v wBg2Lic/beYBiJfzWEte7kMge4KTPOjLob/xCB9LtU/IUv8t3Chc6qJdOqW1TCxMSeLL iXLFSyPqHg2dKk9im+vuE7ClYHW2piZl8AJaTHguU9Yk2m6Eu1cHlmhbCPgyTpJXv9CM GGdg== X-Gm-Message-State: AIkVDXLTSIFK+zBdQbl8aJq9OaZsSo7OOYt+E5vONlZBwRXdz7hwRzK84zM9G4744xxftYhXdm6VRifWum2JkA== X-Received: by 10.36.52.203 with SMTP id z194mr34356475itz.121.1482949651206; Wed, 28 Dec 2016 10:27:31 -0800 (PST) MIME-Version: 1.0 Received: by 10.64.226.105 with HTTP; Wed, 28 Dec 2016 10:27:30 -0800 (PST) From: Prasad Ghangal Date: Wed, 28 Dec 2016 23:57:30 +0530 Message-ID: Subject: [PATCH][GIMPLEFE] Fix for ICE due to undeclared variable To: GCC Patches , Richard Biener X-IsSubscribed: yes Hi, The attached patch tries fix ICE due to undeclared variable(s) in the input. Successfully bootstrapped on x86_64-pc-linux-gnu, testing is in progress Thanks, Prasad diff --git a/gcc/c/gimple-parser.c b/gcc/c/gimple-parser.c index b7cef93..13bf2b1 100644 --- a/gcc/c/gimple-parser.c +++ b/gcc/c/gimple-parser.c @@ -516,7 +516,9 @@ c_parser_gimple_binary_expression (c_parser *parser) rhs = c_parser_gimple_postfix_expression (parser); if (c_parser_error (parser)) return ret; - ret.value = build2_loc (ret_loc, code, ret_type, lhs.value, rhs.value); + + if (lhs.value != error_mark_node && rhs.value != error_mark_node) + ret.value = build2_loc (ret_loc, code, ret_type, lhs.value, rhs.value); return ret; } @@ -653,7 +655,7 @@ c_parser_parse_ssa_name (c_parser *parser, id = get_identifier (var_name); tree parent = lookup_name (id); XDELETEVEC (var_name); - if (! parent) + if (! parent || parent == error_mark_node) { c_parser_error (parser, "base variable or SSA name not declared"); return error_mark_node; @@ -1194,6 +1196,8 @@ c_parser_gimple_if_stmt (c_parser *parser, gimple_seq *seq) location_t loc; c_parser_consume_token (parser); tree cond = c_parser_gimple_paren_condition (parser); + if (cond == error_mark_node) + return; if (c_parser_next_token_is_keyword (parser, RID_GOTO)) { @@ -1252,7 +1256,7 @@ c_parser_gimple_if_stmt (c_parser *parser, gimple_seq *seq) static void c_parser_gimple_switch_stmt (c_parser *parser, gimple_seq *seq) { - c_expr cond_expr; + tree cond = error_mark_node; tree case_label, label; auto_vec labels; tree default_label = NULL_TREE; @@ -1261,9 +1265,11 @@ c_parser_gimple_switch_stmt (c_parser *parser, gimple_seq *seq) if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) { - cond_expr = c_parser_gimple_postfix_expression (parser); + cond = c_parser_gimple_postfix_expression (parser).value; if (! c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>")) return; + if (cond == error_mark_node) + return; } if (c_parser_require (parser, CPP_OPEN_BRACE, "expected %<{%>")) @@ -1374,7 +1380,7 @@ c_parser_gimple_switch_stmt (c_parser *parser, gimple_seq *seq) } if (! c_parser_require (parser, CPP_CLOSE_BRACE, "expected %<}%>")) return; - gimple_seq_add_stmt (seq, gimple_build_switch (cond_expr.value, + gimple_seq_add_stmt (seq, gimple_build_switch (cond, default_label, labels)); gimple_seq_add_seq (seq, switch_body); labels.release();