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.
This commit is contained in:
Jin Ma 2024-01-29 17:57:00 +08:00 committed by Christoph Müllner
parent a88e08feb8
commit 4ac00b7c80

View file

@ -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;