diff --git a/src/mapleall/maple_ir/src/bin_mpl_export.cpp b/src/mapleall/maple_ir/src/bin_mpl_export.cpp index 674ab98ce5c89870e93adb8184d276bed39950c8..1dfcaba794fead26e32f82b0a07e9ff243c79ff6 100644 --- a/src/mapleall/maple_ir/src/bin_mpl_export.cpp +++ b/src/mapleall/maple_ir/src/bin_mpl_export.cpp @@ -1117,7 +1117,9 @@ void BinaryMplExport::WriteSymField(uint64 contentIdx) { MIRSymKind sKind = s->GetSKind(); if (s->IsDeleted() || storageClass == kScUnused || (s->GetIsImported() && !s->GetAppearsInCode()) || - (sKind == kStFunc && (storageClass == kScExtern || !s->GetAppearsInCode()))) { + (sKind == kStFunc && + ((storageClass == kScExtern && !s->GetFunction()->GetAttr(FUNCATTR_used)) || + !s->GetAppearsInCode()))) { continue; } OutputSymbol(s); diff --git a/src/mapleall/maple_ir/src/mir_symbol.cpp b/src/mapleall/maple_ir/src/mir_symbol.cpp index 5dd332a64c3d4d168aa0a99416d72381c9fe7acb..e1b9938366bf5912ea953b908bbf54de4f55f614 100644 --- a/src/mapleall/maple_ir/src/mir_symbol.cpp +++ b/src/mapleall/maple_ir/src/mir_symbol.cpp @@ -318,7 +318,7 @@ void MIRSymbol::Dump(bool isLocal, int32 indent, bool suppressInit, const MIRSym } // exclude unused symbols, formal symbols and extern functions if (GetStorageClass() == kScUnused || GetStorageClass() == kScFormal || - (GetStorageClass() == kScExtern && sKind == kStFunc)) { + (GetStorageClass() == kScExtern && sKind == kStFunc && !GetFunction()->GetAttr(FUNCATTR_used))) { return; } if (GetIsImported() && !GetAppearsInCode()) {