From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 120897 invoked by alias); 24 Apr 2018 07:01:44 -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 120831 invoked by uid 89); 24 Apr 2018 07:01:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-11.9 required=5.0 tests=BAYES_00,GIT_PATCH_2,GIT_PATCH_3,SPF_PASS autolearn=ham version=3.3.2 spammy=HRB, GmbH, hrb, gmbh X-HELO: mx2.suse.de Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 24 Apr 2018 07:01:38 +0000 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id C7455ADA1; Tue, 24 Apr 2018 07:01:35 +0000 (UTC) Date: Tue, 24 Apr 2018 07:10:00 -0000 From: Richard Biener To: Jakub Jelinek cc: Uros Bizjak , gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Fix reg-stack error-recovery on pr84828 testcase (PR target/84828) In-Reply-To: <20180423183454.GS8577@tucnak> Message-ID: References: <20180423183454.GS8577@tucnak> User-Agent: Alpine 2.20 (LSU 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-SW-Source: 2018-04/txt/msg01073.txt.bz2 On Mon, 23 Apr 2018, Jakub Jelinek wrote: > Hi! > > My earlier attempts to replace bogus inline asm with something that > reg-stack.c would be happy about failed, so this is just a quick hack to > help the error-recovery on the pr84828.C testcase with -m32. > > I bet bunch of other spots will need any_malformed_asm tweaks, just don't > have testcases for those. > > Bootstrapped/regtested on x86_64-linux and i686-linux, fixes: > -FAIL: g++.dg/ext/pr84828.C -std=gnu++11 (internal compiler error) > -FAIL: g++.dg/ext/pr84828.C -std=gnu++11 (test for excess errors) > -FAIL: g++.dg/ext/pr84828.C -std=gnu++14 (internal compiler error) > -FAIL: g++.dg/ext/pr84828.C -std=gnu++14 (test for excess errors) > -FAIL: g++.dg/ext/pr84828.C -std=gnu++98 (internal compiler error) > -FAIL: g++.dg/ext/pr84828.C -std=gnu++98 (test for excess errors) > on i686-linux, ok for trunk? OK. Thanks, Richard. > 2018-04-23 Jakub Jelinek > > PR target/84828 > * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead > destination if any_malformed_asm. > > --- gcc/reg-stack.c.jj 2018-03-16 13:42:37.118852524 +0100 > +++ gcc/reg-stack.c 2018-04-23 17:16:41.085198214 +0200 > @@ -1105,13 +1105,16 @@ move_for_stack_reg (rtx_insn *insn, stac > } > > /* The destination ought to be dead. */ > - gcc_assert (get_hard_regnum (regstack, dest) < FIRST_STACK_REG); > + if (get_hard_regnum (regstack, dest) >= FIRST_STACK_REG) > + gcc_assert (any_malformed_asm); > + else > + { > + replace_reg (psrc, get_hard_regnum (regstack, src)); > > - replace_reg (psrc, get_hard_regnum (regstack, src)); > - > - regstack->reg[++regstack->top] = REGNO (dest); > - SET_HARD_REG_BIT (regstack->reg_set, REGNO (dest)); > - replace_reg (pdest, FIRST_STACK_REG); > + regstack->reg[++regstack->top] = REGNO (dest); > + SET_HARD_REG_BIT (regstack->reg_set, REGNO (dest)); > + replace_reg (pdest, FIRST_STACK_REG); > + } > } > else if (STACK_REG_P (src)) > { > > Jakub > > -- Richard Biener SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)