aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJin Ma <jinma@linux.alibaba.com>2024-01-29 17:57:00 +0800
committerChristoph Müllner <christoph.muellner@vrull.eu>2024-01-30 07:38:13 +0100
commit4ac00b7c809ca70775a04708863b9101d94af5c2 (patch)
tree18cf387279753cfea8ab1a191115ab5859d93fe7 /gcc
parenta88e08feb8367898e0562622517d33f95684a03d (diff)
downloadgcc-4ac00b7c809ca70775a04708863b9101d94af5c2.zip
gcc-4ac00b7c809ca70775a04708863b9101d94af5c2.tar.gz
gcc-4ac00b7c809ca70775a04708863b9101d94af5c2.tar.bz2
RISC-V: THEAD: Fix improper immediate value for MODIFY_DISP instruction on 32-bit systems.
When using '%ld' to print 'long long int' variable, 'fprintf' will produce messy output on a 32-bit system, in an incorrect instruction being generated, such as 'th.lwib a1,(a0),-16,4294967295'. And the following error occurred during compilation: Assembler messages: Error: improper immediate value (18446744073709551615) gcc/ChangeLog: * config/riscv/thead.cc (th_print_operand_address): Change %ld to %lld.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/riscv/thead.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/config/riscv/thead.cc b/gcc/config/riscv/thead.cc
index 2955bc5..e4b8c37 100644
--- a/gcc/config/riscv/thead.cc
+++ b/gcc/config/riscv/thead.cc
@@ -1141,7 +1141,7 @@ th_print_operand_address (FILE *file, machine_mode mode, rtx x)
return true;
case ADDRESS_REG_WB:
- fprintf (file, "(%s),%ld,%u", reg_names[REGNO (addr.reg)],
+ fprintf (file, "(%s),"HOST_WIDE_INT_PRINT_DEC",%u", reg_names[REGNO (addr.reg)],
INTVAL (addr.offset) >> addr.shift, addr.shift);
return true;