From: Jiajie Chen <[email protected]>
When rhs equals to 0x7fffffff, adding 1 to rhs overflows SI, generating
invalid const_int.
gcc/ChangeLog:
* config/loongarch/loongarch.cc (loongarch_emit_int_compare):
Call trunc_int_mode to ensure valid rhs.
---
gcc/config/loongarch/loongarch.cc | 1 +
1 file changed, 1 insertion(+)
diff --git a/gcc/config/loongarch/loongarch.cc
b/gcc/config/loongarch/loongarch.cc
index c793493ed80..3607d429372 100644
--- a/gcc/config/loongarch/loongarch.cc
+++ b/gcc/config/loongarch/loongarch.cc
@@ -5422,6 +5422,7 @@ loongarch_emit_int_compare (enum rtx_code *code, rtx
*op0, rtx *op1)
break;
new_rhs = rhs + (increment ? 1 : -1);
+ new_rhs = trunc_int_for_mode (new_rhs, GET_MODE (*op0));
if (loongarch_integer_cost (new_rhs)
< loongarch_integer_cost (rhs))
{
--
2.34.1