https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109725

--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-13 branch has been updated by Li Xu <x...@gcc.gnu.org>:

https://gcc.gnu.org/g:b81d476756a1f17617f0837761785c4b5d1d195d

commit r13-7766-gb81d476756a1f17617f0837761785c4b5d1d195d
Author: Dimitar Dimitrov <dimi...@dinux.eu>
Date:   Mon Jun 5 21:39:16 2023 +0300

    riscv: Fix scope for memory model calculation

    During libgcc configure stage for riscv32-none-elf, when
    "--enable-checking=yes,rtl" has been activated, the following error
    is observed:

      during RTL pass: final
      conftest.c: In function 'main':
      conftest.c:16:1: internal compiler error: RTL check: expected code
'const_int', have 'reg' in riscv_print_operand, at config/riscv/riscv.cc:4462
         16 | }
            | ^
      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
      0x8ea823 riscv_print_operand
             
/mnt/nvme/dinux/local-workspace/gcc/gcc/config/riscv/riscv.cc:4462
      0xde84b5 output_operand(rtx_def*, int)
              /mnt/nvme/dinux/local-workspace/gcc/gcc/final.cc:3632
      0xde8ef8 output_asm_insn(char const*, rtx_def**)
              /mnt/nvme/dinux/local-workspace/gcc/gcc/final.cc:3544
      0xded33b output_asm_insn(char const*, rtx_def**)
              /mnt/nvme/dinux/local-workspace/gcc/gcc/final.cc:3421
      0xded33b final_scan_insn_1
              /mnt/nvme/dinux/local-workspace/gcc/gcc/final.cc:2841
      0xded6cb final_scan_insn(rtx_insn*, _IO_FILE*, int, int, int*)
              /mnt/nvme/dinux/local-workspace/gcc/gcc/final.cc:2887
      0xded8b7 final_1
              /mnt/nvme/dinux/local-workspace/gcc/gcc/final.cc:1979
      0xdee518 rest_of_handle_final
              /mnt/nvme/dinux/local-workspace/gcc/gcc/final.cc:4240
      0xdee518 execute
              /mnt/nvme/dinux/local-workspace/gcc/gcc/final.cc:4318

    Fix by moving the calculation of memmodel to the cases where it is used.

    Regression tested for riscv32-none-elf. No changes in gcc.sum and
    g++.sum.

            PR target/109725

    gcc/ChangeLog:

            * config/riscv/riscv.cc (riscv_print_operand): Calculate
            memmodel only when it is valid.

    Signed-off-by: Dimitar Dimitrov <dimi...@dinux.eu>

Reply via email to