diff --git a/src/mapleall/maple_me/src/hdse.cpp b/src/mapleall/maple_me/src/hdse.cpp index 11422e2f386f803c701692caf90cd09d0ae8e7be..b21b584bfd533257c9aa829580d6aaee99d64ee8 100644 --- a/src/mapleall/maple_me/src/hdse.cpp +++ b/src/mapleall/maple_me/src/hdse.cpp @@ -43,7 +43,12 @@ void HDSE::CheckBackSubsCandidacy(DassignMeStmt *dass) { return; } ScalarMeExpr *lhsscalar = static_cast(dass->GetLHS()); - if (!lhsscalar->GetOst()->IsLocal()) { + OriginalSt *ost = lhsscalar->GetOst(); + if (!ost->IsLocal()) { + return; + } + MIRType *ty = GlobalTables::GetTypeTable().GetTypeFromTyIdx(ost->GetTyIdx()); + if (ty->GetPrimType() == PTY_agg && ty->GetSize() <= 16) { return; } ScalarMeExpr *rhsscalar = static_cast(dass->GetRHS());