Pre-approve the fix :)
On Thu, Nov 30, 2023 at 6:07 AM Tsukasa OI <research_tra...@irq.a4lg.com> wrote: > > Hi Patrick, > > Found a cause (although GCC is functionally correct, I forgot to fix > corresponding test case [which assumes that 'E' is not ratified]). > > > #if !defined(__riscv_e) || (__riscv_e != (1 * 1000 * 1000 + 9 * 1000)) > > #error "__riscv_e" > > #endif > > 1*1000*1000 + 9*1000 ('E' version 1.9) should have been fixed to > 2*1000*1000 + 0*1000 because 'E' extension is now ratified version 2.0. > > I'll submit a fix later. > > Thanks, > Tsukasa > > > On 2023/11/30 6:15, Patrick O'Neill wrote: > > Hi Tsukasa, > > > > I'm seeing a new regression across all tested riscv targets: > > https://github.com/patrick-rivos/gcc-postcommit-ci/issues/224 > > > > Regression: > > > > |FAIL: gcc.target/riscv/predef-13.c -O0 (test for excess errors) FAIL: > > gcc.target/riscv/predef-13.c -O1 (test for excess errors) FAIL: > > gcc.target/riscv/predef-13.c -O2 (test for excess errors) FAIL: > > gcc.target/riscv/predef-13.c -O2 -flto -fno-use-linker-plugin > > -flto-partition=none (test for excess errors) FAIL: > > gcc.target/riscv/predef-13.c -O2 -flto -fuse-linker-plugin > > -fno-fat-lto-objects (test for excess errors) FAIL: > > gcc.target/riscv/predef-13.c -O3 -g (test for excess errors) FAIL: > > gcc.target/riscv/predef-13.c -Os (test for excess errors)| > > > > Debug log: > > > > Executing on host: > > /home/runner/work/gcc-postcommit-ci/gcc-postcommit-ci/riscv-gnu-toolchain/build/build-gcc-linux-stage2/gcc/xgcc > > > > -B/home/runner/work/gcc-postcommit-ci/gcc-postcommit-ci/riscv-gnu-toolchain/build/build-gcc-linux-stage2/gcc/ > > > > /home/runner/work/gcc-postcommit-ci/gcc-postcommit-ci/riscv-gnu-toolchain/gcc/gcc/testsuite/gcc.target/riscv/predef-13.c > > -march=rv32gc -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output > > -O0 -march=rv32e -mabi=ilp32e -mcmodel=medlow -misa-spec=2.2 -S -o > > predef-13.s (timeout = 600) > > spawn -ignore SIGHUP > > /home/runner/work/gcc-postcommit-ci/gcc-postcommit-ci/riscv-gnu-toolchain/build/build-gcc-linux-stage2/gcc/xgcc > > > > -B/home/runner/work/gcc-postcommit-ci/gcc-postcommit-ci/riscv-gnu-toolchain/build/build-gcc-linux-stage2/gcc/ > > > > /home/runner/work/gcc-postcommit-ci/gcc-postcommit-ci/riscv-gnu-toolchain/gcc/gcc/testsuite/gcc.target/riscv/predef-13.c > > -march=rv32gc -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O0 > > -march=rv32e -mabi=ilp32e -mcmodel=medlow -misa-spec=2.2 -S -o predef-13.s > > /home/runner/work/gcc-postcommit-ci/gcc-postcommit-ci/riscv-gnu-toolchain/gcc/gcc/testsuite/gcc.target/riscv/predef-13.c: > > In function 'main': > > /home/runner/work/gcc-postcommit-ci/gcc-postcommit-ci/riscv-gnu-toolchain/gcc/gcc/testsuite/gcc.target/riscv/predef-13.c:23:2: > > error: #error "__riscv_e" > > compiler exited with status 1 > > FAIL: gcc.target/riscv/predef-13.c -O0 (test for excess errors) > > Excess errors: > > /home/runner/work/gcc-postcommit-ci/gcc-postcommit-ci/riscv-gnu-toolchain/gcc/gcc/testsuite/gcc.target/riscv/predef-13.c:23:2: > > error: #error "__riscv_e" > > > > I bisected it locally to commit 006e90e13441c3716b40616282b200a0ef689376 > > (this patch): > > > >> ./bin/riscv64-unknown-linux-gnu-gcc -march=rv32e -mabi=ilp32e -S > >> ../gcc/gcc/testsuite/gcc.target/riscv/predef-13.c > > ../gcc/gcc/testsuite/gcc.target/riscv/predef-13.c: In function 'main': > > ../gcc/gcc/testsuite/gcc.target/riscv/predef-13.c:23:2: error: #error > > "__riscv_e" > > 23 | #error "__riscv_e" > > | ^~~~~ > > > > Let me know if you need any additional info/investigation from me. > > > > Thanks, > > Patrick > > > > On 11/24/23 02:18, Tsukasa OI wrote: > >> From: Tsukasa OI <research_tra...@irq.a4lg.com> > >> > >> Along with RV32E, RV64E is ratified. Though ILP32E and LP64E ABIs are > >> still draft, it's worth supporting it. > >> > >> gcc/ChangeLog: > >> > >> * common/config/riscv/riscv-common.cc > >> (riscv_ext_version_table): Set version to ratified 2.0. > >> (riscv_subset_list::parse_std_ext): Allow RV64E. > >> * config.gcc: Parse base ISA 'rv64e' and ABI 'lp64e'. > >> * config/riscv/arch-canonicalize: Parse base ISA 'rv64e'. > >> * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): > >> Define different macro per XLEN. Add handling for ABI_LP64E. > >> * config/riscv/riscv-d.cc (riscv_d_handle_target_float_abi): > >> Add handling for ABI_LP64E. > >> * config/riscv/riscv-opts.h (enum riscv_abi_type): Add ABI_LP64E. > >> * config/riscv/riscv.cc (riscv_option_override): Enhance error > >> handling to support RV64E and LP64E. > >> (riscv_conditional_register_usage): Change "RV32E" in a comment > >> to "RV32E/RV64E". > >> * config/riscv/riscv.h > >> (UNITS_PER_FP_ARG): Add handling for ABI_LP64E. > >> (STACK_BOUNDARY): Ditto. > >> (ABI_STACK_BOUNDARY): Ditto. > >> (MAX_ARGS_IN_REGISTERS): Ditto. > >> (ABI_SPEC): Add support for "lp64e". > >> * config/riscv/riscv.opt: Parse -mabi=lp64e as ABI_LP64E. > >> * doc/invoke.texi: Add documentation of the LP64E ABI. > >> > >> gcc/testsuite/ChangeLog: > >> > >> * gcc.target/riscv/predef-1.c: Test for __riscv_64e. > >> * gcc.target/riscv/predef-2.c: Ditto. > >> * gcc.target/riscv/predef-3.c: Ditto. > >> * gcc.target/riscv/predef-4.c: Ditto. > >> * gcc.target/riscv/predef-5.c: Ditto. > >> * gcc.target/riscv/predef-6.c: Ditto. > >> * gcc.target/riscv/predef-7.c: Ditto. > >> * gcc.target/riscv/predef-8.c: Ditto. > >> * gcc.target/riscv/predef-9.c: New test for RV64E and LP64E, > >> based on predef-7.c. > >> ---