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.
>> ---

Reply via email to