From patchwork Wed Jan 14 14:28:57 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Enkovich X-Patchwork-Id: 428976 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 376F414027C for ; Thu, 15 Jan 2015 01:29:51 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:subject:message-id:mime-version:content-type; q=dns; s= default; b=F/3b/53Uv1lat8JpqTnS6ziL/YnII5VYZJvxcDd+3P2rV2AcCMqgp FMpD3TQKQ7CzF21giHvnLNSUAIuxeLr8lBcnudxDaKceTzMS10iWzj0/PVb89I+x 0jNeKNci/OxJDI3VMZCMpEEcaPXKP0MNQQZklFOB/5dfVcYedX/C94= 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:date :from:to:subject:message-id:mime-version:content-type; s= default; bh=wjEDICCnGTTqopX/sqSqhE6NOQ8=; b=g46sHCTK1gZ9rohe1Vi1 82Sa1030LgVdeo+pteC/zPlrh84H8VNzl7by4XGA/viCNIMRetB6Jut4W4kvAH6A obf+AjtQb6Kj7hiZu7fjhFyOLqFy6Qfzn9fnEY+h7qMi8K/QOYh+9s2kXs6T1nFQ hT5KAKWEFWQinp0SExYmDqI= Received: (qmail 12962 invoked by alias); 14 Jan 2015 14:29:44 -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 12946 invoked by uid 89); 14 Jan 2015 14:29:42 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-wi0-f181.google.com Received: from mail-wi0-f181.google.com (HELO mail-wi0-f181.google.com) (209.85.212.181) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Wed, 14 Jan 2015 14:29:40 +0000 Received: by mail-wi0-f181.google.com with SMTP id hi2so11237957wib.2 for ; Wed, 14 Jan 2015 06:29:37 -0800 (PST) X-Received: by 10.181.12.17 with SMTP id em17mr50970532wid.45.1421245777677; Wed, 14 Jan 2015 06:29:37 -0800 (PST) Received: from msticlxl57.ims.intel.com (fmdmzpr02-ext.fm.intel.com. [192.55.55.37]) by mx.google.com with ESMTPSA id h8sm3604252wiy.4.2015.01.14.06.29.35 for (version=TLSv1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 14 Jan 2015 06:29:37 -0800 (PST) Date: Wed, 14 Jan 2015 17:28:57 +0300 From: Ilya Enkovich To: gcc-patches@gcc.gnu.org Subject: [PATCH] Fix for PR64353 Message-ID: <20150114131904.GA56209@msticlxl57.ims.intel.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes Hi, SRA gimple passes may add loads to functions with no SSA update. Later it causes ICE when function with not updated SSA is processed by gimple passes. This patch fixes it by calling update_ssa. Bootstrapped and checked on x86_64-unknown-linux-gnu. OK for trunk? Thanks, Ilya --- gcc/ 2015-01-14 Ilya Enkovich PR middle-end/64353 * ipa-prop.c (ipa_modify_call_arguments): Update SSA for vops after adding a load. gcc/testsuite/ 2015-01-14 Ilya Enkovich PR middle-end/64353 * g++.dg/pr64353.C: New. diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c index 01f4111..533dcfe 100644 --- a/gcc/ipa-prop.c +++ b/gcc/ipa-prop.c @@ -4054,6 +4054,8 @@ ipa_modify_call_arguments (struct cgraph_edge *cs, gcall *stmt, expr = create_tmp_reg (TREE_TYPE (expr)); gimple_assign_set_lhs (tem, expr); gsi_insert_before (&gsi, tem, GSI_SAME_STMT); + if (gimple_in_ssa_p (cfun)) + update_ssa (TODO_update_ssa_only_virtuals); } } else diff --git a/gcc/testsuite/g++.dg/pr64353.C b/gcc/testsuite/g++.dg/pr64353.C new file mode 100644 index 0000000..7859918 --- /dev/null +++ b/gcc/testsuite/g++.dg/pr64353.C @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +class C +{ + int y, x; + void i (); + bool __attribute__((const)) xx () { return x; } +}; + +void C::i () +{ + if (xx ()) + x = 1; +}