RISC-V: Promote type correctly for libcalls
authorKito Cheng <kito.cheng@sifive.com>
Mon, 5 Aug 2019 03:32:38 +0000 (03:32 +0000)
committerKito Cheng <kito@gcc.gnu.org>
Mon, 5 Aug 2019 03:32:38 +0000 (03:32 +0000)
commit860edc46624a23e678934a907d8fccb2fad0dcb5
treee7ddfc15b2e2736505adf431856280ffb2f2c38d
parent89c78fb2e1d862f4efbc22583eeb852bf173a0ad
RISC-V: Promote type correctly for libcalls

 - argument and return value for libcall won't promote at
   default_promote_function_mode_always_promote, however we expect it
   should sign-extend as normal function.

 - Witout this patch, this test case will fail at -march=rv64i -mabi=lp64.

 - The implementation of riscv_promote_function_mode is borrowed from MIPS.

gcc/ChangeLog

* config/riscv/riscv.c (riscv_promote_function_mode): New.
(TARGET_PROMOTE_FUNCTION_MODE): Use riscv_promote_function_mode.

gcc/testsuite/ChangeLog

* gcc.target/riscv/promote-type-for-libcall.c: New.

From-SVN: r274107
gcc/ChangeLog
gcc/config/riscv/riscv.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/riscv/promote-type-for-libcall.c [new file with mode: 0644]