[{"id":3188494,"web_url":"http://patchwork.ozlabs.org/comment/3188494/","msgid":"<mpt1qekxbwq.fsf@arm.com>","list_archive_url":null,"date":"2023-09-27T08:23:17","subject":"Re: [PATCH] DSE: Fix ICE when the mode with access_size don't exist\n on the target[PR111590]","submitter":{"id":64746,"url":"http://patchwork.ozlabs.org/api/people/64746/","name":"Richard Sandiford","email":"richard.sandiford@arm.com"},"content":"Juzhe-Zhong <juzhe.zhong@rivai.ai> writes:\n> hen doing fortran test with 'V' extension enabled on RISC-V port.\n> I saw multiple ICE: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111590\n>\n> The root cause is on DSE:\n>\n> internal compiler error: in smallest_mode_for_size, at stor-layout.cc:356\n> 0x1918f70 smallest_mode_for_size(poly_int<2u, unsigned long>, mode_class)\n>         ../../../../gcc/gcc/stor-layout.cc:356\n> 0x11f75bb smallest_int_mode_for_size(poly_int<2u, unsigned long>)\n>         ../../../../gcc/gcc/machmode.h:916\n> 0x3304141 find_shift_sequence\n>         ../../../../gcc/gcc/dse.cc:1738\n> 0x3304f1a get_stored_val\n>         ../../../../gcc/gcc/dse.cc:1906\n> 0x3305377 replace_read\n>         ../../../../gcc/gcc/dse.cc:2010\n> 0x3306226 check_mem_read_rtx\n>         ../../../../gcc/gcc/dse.cc:2310\n> 0x330667b check_mem_read_use\n>         ../../../../gcc/gcc/dse.cc:2415\n>\n> After investigations, DSE is trying to do optimization like this following codes:\n>\n> (insn 86 85 87 9 (set (reg:V4DI 168)\n>         (mem/u/c:V4DI (reg/f:DI 171) [0  S32 A128])) \"bug.f90\":6:18 discrim 6 1167 {*movv4di}\n>      (expr_list:REG_EQUAL (const_vector:V4DI [\n>                 (const_int 4 [0x4])\n>                 (const_int 1 [0x1]) repeated x2\n>                 (const_int 3 [0x3])\n>             ])\n>         (nil)))\n>\n> (set (mem) (reg:V4DI 168))\n>\n> Then it ICE on: auto new_mode = smallest_int_mode_for_size (access_size * BITS_PER_UNIT);\n>\n> The access_size may be 24 or 32. We don't have such integer modes with these size so it ICE.\n>\n> TODO: The better way maybe make DSE use native_encode_rtx/native_decode_rtx\n>       but I don't know how to do that.  So let's quickly fix this issue, we\n>       can improve the fix later.\n>\n> gcc/ChangeLog:\n>\n> \t* dse.cc (find_shift_sequence): Check the mode with access_size exist on the target.\n\nOK, thanks, but...\n\n> Authored-By: Richard Sandiford <richard.sandiford@arm.com>\n\n...it was just a review comment.  I didn't write the patch.\n\nRichard\n\n>\n> ---\n>  gcc/dse.cc | 3 ++-\n>  1 file changed, 2 insertions(+), 1 deletion(-)\n>\n> diff --git a/gcc/dse.cc b/gcc/dse.cc\n> index 8b07be17674..1a85dae1f8c 100644\n> --- a/gcc/dse.cc\n> +++ b/gcc/dse.cc\n> @@ -1733,7 +1733,8 @@ find_shift_sequence (poly_int64 access_size,\n>    /* If a constant was stored into memory, try to simplify it here,\n>       otherwise the cost of the shift might preclude this optimization\n>       e.g. at -Os, even when no actual shift will be needed.  */\n> -  if (store_info->const_rhs)\n> +  if (store_info->const_rhs\n> +      && known_le (access_size, GET_MODE_SIZE (MAX_MODE_INT)))\n>      {\n>        auto new_mode = smallest_int_mode_for_size (access_size * BITS_PER_UNIT);\n>        auto byte = subreg_lowpart_offset (new_mode, store_mode);","headers":{"Return-Path":"<gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org;\n envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=arm.com","sourceware.org; spf=pass smtp.mailfrom=arm.com"],"Received":["from server2.sourceware.org (server2.sourceware.org\n [IPv6:2620:52:3:1:0:246e:9693:128c])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4RwV4T6H4kz1ypJ\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 27 Sep 2023 18:23:37 +1000 (AEST)","from server2.sourceware.org (localhost [IPv6:::1])\n\tby sourceware.org (Postfix) with ESMTP id D8D903861853\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 27 Sep 2023 08:23:35 +0000 (GMT)","from foss.arm.com (foss.arm.com [217.140.110.172])\n by sourceware.org (Postfix) with ESMTP id E69CC385F021\n for <gcc-patches@gcc.gnu.org>; Wed, 27 Sep 2023 08:23:19 +0000 (GMT)","from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])\n by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D49381FB;\n Wed, 27 Sep 2023 01:23:57 -0700 (PDT)","from localhost (e121540-lin.manchester.arm.com [10.32.110.72])\n by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 302853F59C;\n Wed, 27 Sep 2023 01:23:19 -0700 (PDT)"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org E69CC385F021","From":"Richard Sandiford <richard.sandiford@arm.com>","To":"Juzhe-Zhong <juzhe.zhong@rivai.ai>","Mail-Followup-To":"Juzhe-Zhong <juzhe.zhong@rivai.ai>, gcc-patches@gcc.gnu.org,\n richard.sandiford@arm.com","Cc":"gcc-patches@gcc.gnu.org","Subject":"Re: [PATCH] DSE: Fix ICE when the mode with access_size don't exist\n on the target[PR111590]","References":"<20230926224712.3858055-1-juzhe.zhong@rivai.ai>","Date":"Wed, 27 Sep 2023 09:23:17 +0100","In-Reply-To":"<20230926224712.3858055-1-juzhe.zhong@rivai.ai> (Juzhe-Zhong's\n message of \"Wed, 27 Sep 2023 06:47:12 +0800\")","Message-ID":"<mpt1qekxbwq.fsf@arm.com>","User-Agent":"Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)","MIME-Version":"1.0","Content-Type":"text/plain","X-Spam-Status":"No, score=-24.6 required=5.0 tests=BAYES_00, GIT_PATCH_0,\n KAM_DMARC_NONE, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, KAM_SHORT,\n SPF_HELO_NONE, SPF_NONE, TXREP,\n WEIRD_PORT autolearn=ham autolearn_force=no version=3.4.6","X-Spam-Checker-Version":"SpamAssassin 3.4.6 (2021-04-09) on\n server2.sourceware.org","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org"}}]