From 7279cdeb7ebb1f5be4c86a3c0724f5ce4c5a0040 Mon Sep 17 00:00:00 2001 From: Fred Chow Date: Mon, 18 Jul 2022 19:17:57 -0700 Subject: [PATCH] Fixed bug in lmbc generation where the prototype of a builtin was left out --- src/mapleall/maple_ir/src/bin_mpl_export.cpp | 4 +++- src/mapleall/maple_ir/src/mir_symbol.cpp | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mapleall/maple_ir/src/bin_mpl_export.cpp b/src/mapleall/maple_ir/src/bin_mpl_export.cpp index 674ab98ce5..1dfcaba794 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 5dd332a64c..e1b9938366 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()) { -- Gitee