From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-vk1-xa2c.google.com (mail-vk1-xa2c.google.com [IPv6:2607:f8b0:4864:20::a2c]) by sourceware.org (Postfix) with ESMTPS id 298013858C41 for ; Wed, 16 Aug 2023 08:38:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 298013858C41 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-vk1-xa2c.google.com with SMTP id 71dfb90a1353d-48a50725641so308415e0c.1 for ; Wed, 16 Aug 2023 01:38:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692175098; x=1692779898; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=JSS9UqdC7hfxlTSulv3EZePrVEGEPrEPVkEaBHTbFB0=; b=lPG+US08hmlXthrQeoYNApKDxZocoA/pa3CX/wiSwvYOikdjOQHncMpuAUnq8aPhwG PDsoXS8CnbWw8ZJvRzKeEDK1tuGBNLx3V62N8zBJn7yitmPOgIT9MCxS2vEeTSCeqpvi ezvXImmoCCczFu+tEVP2rys9svK0uPSTY7WkmzSlNDulg2p+cPb0H6QVuoqugYntb1hr TWvHgVHJZhjfFciOSkguE7LEAae58XqchOsfULp/1RIFVP7FTbB+C7evCRexUW02U+vT nMTr2x89WpR90PTF4aIz0fJwjVy/rqDToBgt/SkWUdEY5jsFGLGT8EcPUB7hNABftZ38 kydg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692175098; x=1692779898; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JSS9UqdC7hfxlTSulv3EZePrVEGEPrEPVkEaBHTbFB0=; b=cFiAnRbofxisMvvJMG+YROfW5WkFXzgxmkLSazXFVYjx2su9YZI4K5ff/h7gJ4red7 4JRj2Lfzumd3QphcNgRIIj6wexPTUQKVMWK94lOfKiVzdI9JRNYgLWnuIjEOEv5PWJ0F SQHD0ke+ZdRZROR6PN+K3cj7YmjhpbYgUUIvVksk0HqDlVFCHJYTBJKlcDy3G9n11EKB sV9/8TKThgQdLtW5SbX4pcY7uGEDF5Y2DwF3LsX41lQxDQEZV5k+Uocye30deMm+O7vs YvHBpQt7b6amBepHEljimaKIEKEm7bFt9k+D3mH3Lcg+/SuAUo6VqQE+EouhfLEBETG6 WJVg== X-Gm-Message-State: AOJu0Yzv5FQPWT0OZ3ODxc6wYWmcQZ52682gFJaVu+i3x79YGYY5Csk1 SP6whrTctlOP2FvQ10aHumHDUsZLmjx1YGAkKcI= X-Google-Smtp-Source: AGHT+IH/so5FDeX8Gh/RG9DWGRQ2hUEvtL4yDTDJbFHA/I8wn78zrM+D/qU0TjMBrECbkETYAtzr/al3fnvJYdBhppI= X-Received: by 2002:a67:fb04:0:b0:443:6a86:7cdb with SMTP id d4-20020a67fb04000000b004436a867cdbmr825322vsr.26.1692175098582; Wed, 16 Aug 2023 01:38:18 -0700 (PDT) MIME-Version: 1.0 References: <20230607055215.29332-1-gaofei@eswincomputing.com> <20230607055215.29332-2-gaofei@eswincomputing.com> In-Reply-To: From: Kito Cheng Date: Wed, 16 Aug 2023 16:38:07 +0800 Message-ID: Subject: Re: [PATCH 1/4][V4][RISC-V] support cm.push cm.pop cm.popret in zcmp To: Fei Gao Cc: gcc-patches@gcc.gnu.org, palmer@dabbelt.com, jeffreyalaw@gmail.com, sinan.lin@linux.alibaba.com, jiawei@iscas.ac.cn Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-2.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,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: Another fail case for CFI: $ riscv64-unknown-elf-gcc _mulhc3.i -march=3Drv64imafd_zicsr_zifencei_zca_zcmp -mabi=3Dlp64d -g -O2 -o _mulhc3.s typedef float a __attribute__((mode(HF))); b, c; f() { a a, d, e =3D a + d; if (g() && e) c =3D b; } 0x10e508a maybe_record_trace_start ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/dwarf2cfi.cc:2584 0x10e58fb scan_trace ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/dwarf2cfi.cc:2784 0x10e5fab create_cfi_notes ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/dwarf2cfi.cc:2938 0x10e6ee4 execute_dwarf2_frame ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/dwarf2cfi.cc:3309 0x10e7c5a execute ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/dwarf2cfi.cc:3797 On Wed, Aug 16, 2023 at 4:33=E2=80=AFPM Kito Cheng w= rote: > > Hi Fei: > > Tried to use Jiawei's patch to test this patch and found some issue: > > > > @@ -5430,13 +5632,15 @@ riscv_expand_prologue (void) > > /* Save the registers. */ > > if ((frame->mask | frame->fmask) !=3D 0) > > { > > - HOST_WIDE_INT step1 =3D riscv_first_stack_step (frame, remaining= _size); > > - > > - insn =3D gen_add3_insn (stack_pointer_rtx, > > - stack_pointer_rtx, > > - GEN_INT (-step1)); > > - RTX_FRAME_RELATED_P (emit_insn (insn)) =3D 1; > > - remaining_size -=3D step1; > > + if (known_gt (remaining_size, frame->frame_pointer_offset)) > > + { > > + HOST_WIDE_INT step1 =3D riscv_first_stack_step (frame, remai= ning_size); > > + remaining_size -=3D step1; > > + insn =3D gen_add3_insn (stack_pointer_rtx, > > + stack_pointer_rtx, > > + GEN_INT (-step1)); > > + RTX_FRAME_RELATED_P (emit_insn (insn)) =3D 1; > > + } > > riscv_for_each_saved_reg (remaining_size, riscv_save_reg, false,= false); > > } > > > > I hit some issue here during building libgcc, I use > riscv-gnu-toolchain with --with-arch=3Drv64gzca_zcmp > > And the error message is: > > In file included from > ../../../../../riscv-gnu-toolchain-trunk/gcc/libgcc/unwind-dw2.c:1471: > ../../../../../riscv-gnu-toolchain-trunk/gcc/libgcc/unwind.inc: In > function '_Unwind_Backtrace': > ../../../../../riscv-gnu-toolchain-trunk/gcc/libgcc/unwind.inc:330:1: > internal compiler error: in gen_reg_rtx, at emit-rtl.cc:1176 > 330 | } > | ^ > 0x83753a gen_reg_rtx(machine_mode) > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/emit-rtl.cc:1176 > 0xf5566f maybe_legitimize_operand > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/optabs.cc:8047 > 0xf5566f maybe_legitimize_operands(insn_code, unsigned int, unsigned > int, expand_operand*) > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/optabs.cc:8191 > 0xf511d9 maybe_gen_insn(insn_code, unsigned int, expand_operand*) > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/optabs.cc:8210 > 0xf58539 expand_binop_directly > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/optabs.cc:1452 > 0xf56666 expand_binop(machine_mode, optab_tag, rtx_def*, rtx_def*, > rtx_def*, int, optab_methods) > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/optabs.cc:1539 > 0xcbfdd0 force_operand(rtx_def*, rtx_def*) > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/expr.cc:8231 > 0xc8fca1 force_reg(machine_mode, rtx_def*) > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/explow.cc:687 > 0x144b8cd riscv_force_temporary > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/config/riscv/riscv.c= c:1531 > 0x144b8cd riscv_force_address > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/config/riscv/riscv.c= c:1528 > 0x144b8cd riscv_legitimize_move(machine_mode, rtx_def*, rtx_def*) > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/config/riscv/riscv.c= c:2387 > 0x1af063e gen_movdf(rtx_def*, rtx_def*) > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/config/riscv/riscv.m= d:2107 > 0xcba503 rtx_insn* insn_gen_fn::operator() rtx_def*>(rtx_def*, rtx_def*) const > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/recog.h:411 > 0xcba503 emit_move_insn_1(rtx_def*, rtx_def*) > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/expr.cc:4164 > 0x143d6c4 riscv_emit_move(rtx_def*, rtx_def*) > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/config/riscv/riscv.c= c:1486 > 0x143d6c4 riscv_save_reg > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/config/riscv/riscv.c= c:5715 > 0x143e2b9 riscv_for_each_saved_reg > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/config/riscv/riscv.c= c:5904 > 0x14480d0 riscv_expand_prologue() > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/config/riscv/riscv.c= c:6156 > 0x1af57fb gen_prologue() > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/config/riscv/riscv.m= d:2816 > 0x143c746 target_gen_prologue > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/config/riscv/riscv.m= d:3302 > > > Reduced case: > > $ riscv64-unknown-elf-gcc -march=3Drv64imafd_zicsr_zifencei_zca_zcmp > -mabi=3Dlp64d unwind-dw2.i -Os > > typedef struct { > struct { > struct { > struct { > long a > } > } a[129] > } > } b; > struct c { > void *a[129] > } d() { > struct c a; > __builtin_unwind_init(); > b e; > f(a, &e); > }