Skip to content

Commit 432e9f4

Browse files
authored
[llvm][LoongArch] Avoid shift overflow (#106785)
Follow up fix to #106332 `LoongArchMatInt.cpp:96:33: runtime error: shift exponent 64 is too large for 64-bit type` https://lab.llvm.org/buildbot/#/builders/169/builds/2681
1 parent 5e7f0dc commit 432e9f4

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchMatInt.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,9 @@ LoongArchMatInt::InstSeq LoongArchMatInt::generateInstSeq(int64_t Val) {
9292
break;
9393
}
9494

95-
for (uint64_t Msb = 32; Msb < 64; ++Msb) {
96-
uint64_t HighMask = ~((1ULL << (Msb + 1)) - 1);
95+
uint64_t Msb = 32;
96+
uint64_t HighMask = ~((1ULL << (Msb + 1)) - 1);
97+
for (; Msb < 64; ++Msb, HighMask = (HighMask << 1) + 1) {
9798
for (uint64_t Lsb = Msb; Lsb > 0; --Lsb) {
9899
uint64_t LowMask = (1ULL << Lsb) - 1;
99100
uint64_t Mask = HighMask | LowMask;

0 commit comments

Comments
 (0)