From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi1-x22b.google.com (mail-oi1-x22b.google.com [IPv6:2607:f8b0:4864:20::22b]) by sourceware.org (Postfix) with ESMTPS id 52EBC3858C54 for ; Wed, 7 Jun 2023 02:40:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 52EBC3858C54 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-oi1-x22b.google.com with SMTP id 5614622812f47-39a505b901dso5918529b6e.0 for ; Tue, 06 Jun 2023 19:40:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686105638; x=1688697638; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=Z54J6YGDM9WrIdP6TvItzAiliAy7f5wp7X4zDZJXZ4Y=; b=W9vYiJjCNCgeNrK8vaw8zCJxlNvaT8XOk61+1XTQVA2Jcc77SDt6HmF9rR6cBEK/cX 36VlmNRd0wTTgjI7DHzJFwKo5e1BOUe61CLZOYEsJQg2r6FeZnAmyys8454R1lcrmJMP lqYe06dKORTFf7X4Kzn+NUAxKxQtjIDcusmPRLqHVXyf7PQSVdxv0NN8SgVVKuWz4ra6 uZ3+U6lpy1FOZOlXSC+BEaPANqxDdxrGAuC1ZuzOmY45YpkQVxI8cwiPnrtYosbP2UT1 qF9nB/tbhLVV4Z4ew3odhhv3Vo7yuQdvAeSBcBPRzw6dYEcUv2s/nhoA4WntDZD2Q/Vk Eupw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686105638; x=1688697638; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Z54J6YGDM9WrIdP6TvItzAiliAy7f5wp7X4zDZJXZ4Y=; b=kg1CAZpd4wbwWVbhELRnPwymwq6Yd26kYiENRTj6cU7Blv+/Q8mqpei6FPzR38HOCX DIbiAjqMHS0CcpDyvbumOFZI89BRVWwTZXhL8/0/48cA0rMkpf6W64uRU6iFNbXCmCmH LCZ89D6kv96aPFulQBfCNp7WEpdKIC9JUC26OFbCJQ0NnOGe7DnVewnlZVx+R+395jLp qLIIxqu7xuh4hej+d9UzOOtlbhyMNctSQXELPWPZdax5x7cEFJibdm+28LJnox6B4qvR FyNMCxhKLQjq/AmSSAI6zHO/2EizYy0AZT/89kZ7WH8o25MRIS+vQ5duYcnD5/GF4cR3 kCuA== X-Gm-Message-State: AC+VfDz7wFMxe+Oq7QgCFBB8ctf3zyv0uxMPw2vsEfVd4FZEWJmhOZVM qslWqYT6W2tRr8Qg14Q0pxZwm9P1eX8= X-Google-Smtp-Source: ACHHUZ57qsukt9w0WhBdJjt4xomXtXnic11x7xR1ao5FVYEnaB6btNeU9aHchNPgC20IrEzWU2w2QQ== X-Received: by 2002:a05:6808:3ba:b0:39a:618b:17e2 with SMTP id n26-20020a05680803ba00b0039a618b17e2mr4108496oie.21.1686105638387; Tue, 06 Jun 2023 19:40:38 -0700 (PDT) Received: from [172.31.0.109] ([136.36.130.248]) by smtp.gmail.com with ESMTPSA id ja13-20020a170902efcd00b001aafa2e212esm9175138plb.52.2023.06.06.19.40.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 06 Jun 2023 19:40:37 -0700 (PDT) Message-ID: <48ad5303-6d8b-f45e-1381-d4dbeff29d5a@gmail.com> Date: Tue, 6 Jun 2023 20:40:36 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Subject: Re: [PATCH] riscv: Fix insn cost calculation Content-Language: en-US To: Dimitar Dimitrov , gcc-patches@gcc.gnu.org References: <20230606045130.1687824-1-dimitar@dinux.eu> From: Jeff Law In-Reply-To: <20230606045130.1687824-1-dimitar@dinux.eu> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,WEIRD_PORT autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 6/5/23 22:51, Dimitar Dimitrov wrote: > When building riscv32-none-elf with "--enable-checking=yes,rtl", the > following ICE is observed: > > cc1: internal compiler error: RTL check: expected code 'const_int', have 'const_double' in riscv_const_insns, at config/riscv/riscv.cc:1313 > 0x843c4d rtl_check_failed_code1(rtx_def const*, rtx_code, char const*, int, char const*) > /mnt/nvme/dinux/local-workspace/gcc/gcc/rtl.cc:916 > 0x8eab61 riscv_const_insns(rtx_def*) > /mnt/nvme/dinux/local-workspace/gcc/gcc/config/riscv/riscv.cc:1313 > 0x15443bb riscv_legitimate_constant_p > /mnt/nvme/dinux/local-workspace/gcc/gcc/config/riscv/riscv.cc:826 > 0xdd3c71 emit_move_insn(rtx_def*, rtx_def*) > /mnt/nvme/dinux/local-workspace/gcc/gcc/expr.cc:4310 > 0x15f28e5 run_const_vector_selftests > /mnt/nvme/dinux/local-workspace/gcc/gcc/config/riscv/riscv-selftests.cc:285 > 0x15f37bd selftest::riscv_run_selftests() > /mnt/nvme/dinux/local-workspace/gcc/gcc/config/riscv/riscv-selftests.cc:364 > 0x1f6fba9 selftest::run_tests() > /mnt/nvme/dinux/local-workspace/gcc/gcc/selftest-run-tests.cc:111 > 0x11d1f39 toplev::run_self_tests() > /mnt/nvme/dinux/local-workspace/gcc/gcc/toplev.cc:2185 > > Fix by following the spirit of the adjacent comment, and using the > dedicated riscv_const_insns() function to calculate cost for loading a > constant element. Infinite recursion is not possible because the first > invocation is on a CONST_VECTOR, whereas the second is on a single > element of the vector (e.g. CONST_INT or CONST_DOUBLE). > > Regression tested for riscv32-none-elf. No changes in gcc.sum and > g++.sum. I don't have setup to test riscv64. I think most folks are using QEMU to test. Though I think most are doing it in a rv64 environment. > > gcc/ChangeLog: > > * config/riscv/riscv.cc (riscv_const_insns): Recursively call > for constant element of a vector. OK for the trunk. I don't think this code is in gcc-13, but also OK as a backport if I'm wrong and it is in gcc-13. jeff