diff --git a/src/mapleall/maple_me/src/me_ssa_lpre.cpp b/src/mapleall/maple_me/src/me_ssa_lpre.cpp index d5dea07fa9d88a0f63056abaffa85ca0c1ffcae5..78dfdf9abc70c8bb3782b596b1c8020701044f5c 100644 --- a/src/mapleall/maple_me/src/me_ssa_lpre.cpp +++ b/src/mapleall/maple_me/src/me_ssa_lpre.cpp @@ -183,6 +183,12 @@ void MeSSALPre::BuildWorkListLHSOcc(MeStmt &meStmt, int32 seqStmt) { VarMeExpr *lhs = meStmt.GetVarLHS(); CHECK_NULL_FATAL(lhs); const OriginalSt *ost = lhs->GetOst(); + if (mirModule->IsCModule()) { + MIRType *ty = GlobalTables::GetTypeTable().GetTypeFromTyIdx(ost->GetTyIdx()); + if (ty->GetKind() == kTypeBitField || ty->GetSize() < 4) { + return; // no advantage + } + } if (ost->IsFormal()) { (void)assignedFormals.insert(ost->GetIndex()); }