aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuo Jie <guojie@loongson.cn>2023-11-23 11:05:56 +0800
committerLulu Cheng <chenglulu@loongson.cn>2023-11-27 10:47:48 +0800
commit8b9d0e8cf482287b6c37b5a268d0eb2d0a964561 (patch)
treec23e84bc7c6f8ddce0928595fe61a167e7a43569
parent96577dfae97e49a052c0b4d9843fb10f89632fd9 (diff)
downloadgcc-8b9d0e8cf482287b6c37b5a268d0eb2d0a964561.zip
gcc-8b9d0e8cf482287b6c37b5a268d0eb2d0a964561.tar.gz
gcc-8b9d0e8cf482287b6c37b5a268d0eb2d0a964561.tar.bz2
LoongArch: Fix runtime error in a gcc build with --with-build-config=bootstrap-ubsan
gcc/ChangeLog: * config/loongarch/loongarch.cc (loongarch_split_plus_constant): avoid left shift of negative value -0x8000.
-rw-r--r--gcc/config/loongarch/loongarch.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc
index c95fc83..d3896d7 100644
--- a/gcc/config/loongarch/loongarch.cc
+++ b/gcc/config/loongarch/loongarch.cc
@@ -4269,7 +4269,7 @@ loongarch_split_plus_constant (rtx *op, machine_mode mode)
else if (loongarch_addu16i_imm12_operand_p (v, mode))
a = (v & ~HWIT_UC_0xFFF) + ((v & 0x800) << 1);
else if (mode == DImode && DUAL_ADDU16I_OPERAND (v))
- a = (v > 0 ? 0x7fff : -0x8000) << 16;
+ a = (v > 0 ? 0x7fff0000 : ~0x7fffffff);
else
gcc_unreachable ();