From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id E7506388E825; Tue, 5 May 2020 09:07:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org E7506388E825 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=rsandifo@gcc.gnu.org Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8BB1F30E; Tue, 5 May 2020 02:07:24 -0700 (PDT) Received: from localhost (e121540-lin.manchester.arm.com [10.32.98.126]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 182D53F305; Tue, 5 May 2020 02:07:23 -0700 (PDT) From: Richard Sandiford To: "jakub at gcc dot gnu.org" Mail-Followup-To: "jakub at gcc dot gnu.org" , gcc-bugs@gcc.gnu.org, richard.sandiford@arm.com Cc: gcc-bugs@gcc.gnu.org Subject: Re: [Bug target/92469] ICE: output_operand: invalid use of register 'frame' in 7/8/9/10 References: Date: Tue, 05 May 2020 10:07:22 +0100 In-Reply-To: (jakub at gcc dot gnu org's message of "Mon, 04 May 2020 09:12:01 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, KAM_NUMSUBJECT, SPF_HELO_NONE, SPF_NEUTRAL, TXREP autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 May 2020 09:07:32 -0000 "jakub at gcc dot gnu.org" writes: > --- Comment #9 from Jakub Jelinek --- > Seems neither accessible_reg_set nor operand_reg_set can exclude frame, because > the latter results in general_operand predicate failing for it and the former > results into the latter not being enabled either. > So, if we wanted to reject this right away, we'd have to add another hard reg > set (e.g. containing gcc internal artifical regs that shouldn't appear in asm > register specification), or a target hook that would reject such registers that > varasm.c would call. Agree a hard reg set would be good. We should be able to fill in the easy cases automatically, e.g. FRAME_POINTER_REGNUM when it's != HARD_FRAME_POINTER_REGNUM. But some cases would still need target help.