From 79da39e0903b57f31dcbff2e9d81f80753cc0ac7 Mon Sep 17 00:00:00 2001 From: William Chen Date: Thu, 17 Nov 2022 07:13:59 -0800 Subject: [PATCH 1/2] Fix offset adjustment not to assign to a reference variable --- .../maple_be/src/cg/aarch64/aarch64_offset_adjust.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mapleall/maple_be/src/cg/aarch64/aarch64_offset_adjust.cpp b/src/mapleall/maple_be/src/cg/aarch64/aarch64_offset_adjust.cpp index 0e6b864b75..541be510ed 100644 --- a/src/mapleall/maple_be/src/cg/aarch64/aarch64_offset_adjust.cpp +++ b/src/mapleall/maple_be/src/cg/aarch64/aarch64_offset_adjust.cpp @@ -72,9 +72,9 @@ void AArch64FPLROffsetAdjustment::AdjustmentOffsetForOpnd(Insn &insn, AArch64CGF if (ofstOpnd->GetVary() == kAdjustVary || ofstOpnd->GetVary() == kNotVary) { bool condition = aarchCGFunc.IsOperandImmValid(insn.GetMachineOpcode(), &memOpnd, i); if (!condition) { - memOpnd = (newMemOpnd1 == nullptr ? memOpnd : *newMemOpnd1); + auto &adjOpnd = (newMemOpnd1 == nullptr ? memOpnd : *newMemOpnd1); MemOperand &newMemOpnd2 = aarchCGFunc.SplitOffsetWithAddInstruction( - memOpnd, memOpnd.GetSize(), static_cast(R16), false, &insn, insn.IsLoadStorePair()); + adjOpnd, adjOpnd.GetSize(), static_cast(R16), false, &insn, insn.IsLoadStorePair()); insn.SetOperand(i, newMemOpnd2); } } -- Gitee From 402116f950edba24ec732979800955d7ca761116 Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 18 Nov 2022 08:38:05 -0800 Subject: [PATCH 2/2] Fix extractbit primtype during be lower --- src/mapleall/maple_be/src/be/lower.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mapleall/maple_be/src/be/lower.cpp b/src/mapleall/maple_be/src/be/lower.cpp index 83850176ef..7bbefc28a8 100644 --- a/src/mapleall/maple_be/src/be/lower.cpp +++ b/src/mapleall/maple_be/src/be/lower.cpp @@ -783,7 +783,7 @@ StmtNode *CGLowerer::WriteBitField(const std::pair &byteBitOffsets BaseNode *CGLowerer::ReadBitField(const std::pair &byteBitOffsets, const MIRBitFieldType *fieldType, BaseNode *baseAddr) { auto bitSize = fieldType->GetFieldSize(); - auto primType = fieldType->GetPrimType(); + auto primType = GetRegPrimType(fieldType->GetPrimType()); auto byteOffset = byteBitOffsets.first; auto bitOffset = byteBitOffsets.second; auto *builder = mirModule.GetMIRBuilder(); -- Gitee