[lld] [llvm] [Object][Wasm] Move WasmSymbolInfo directly into WasmSymbol (NFC) (PR #80219)
Derek Schuff via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 31 15:57:17 PST 2024
https://github.com/dschuff created https://github.com/llvm/llvm-project/pull/80219
None
>From ee053958e59c6a60dd00887946dc0cf0a9d1f5de Mon Sep 17 00:00:00 2001
From: Derek Schuff <dschuff at chromium.org>
Date: Wed, 31 Jan 2024 15:49:22 -0800
Subject: [PATCH] [Object][Wasm] Move WasmSymbolInfo directly into WasmSymbol
(NFC)
---
lld/wasm/InputFiles.cpp | 20 ++++++++++----------
llvm/include/llvm/BinaryFormat/Wasm.h | 1 -
llvm/include/llvm/Object/Wasm.h | 4 ++--
llvm/lib/Object/WasmObjectFile.cpp | 9 ++-------
llvm/tools/obj2yaml/wasm2yaml.cpp | 3 ++-
5 files changed, 16 insertions(+), 21 deletions(-)
diff --git a/lld/wasm/InputFiles.cpp b/lld/wasm/InputFiles.cpp
index f43c39b218787..394ca98d1265a 100644
--- a/lld/wasm/InputFiles.cpp
+++ b/lld/wasm/InputFiles.cpp
@@ -322,20 +322,20 @@ void ObjFile::addLegacyIndirectFunctionTableIfNeeded(
return;
}
- auto *info = make<WasmSymbolInfo>();
- info->Name = tableImport->Field;
- info->Kind = WASM_SYMBOL_TYPE_TABLE;
- info->ImportModule = tableImport->Module;
- info->ImportName = tableImport->Field;
- info->Flags = WASM_SYMBOL_UNDEFINED;
- info->Flags |= WASM_SYMBOL_NO_STRIP;
- info->ElementIndex = 0;
- LLVM_DEBUG(dbgs() << "Synthesizing symbol for table import: " << info->Name
+ WasmSymbolInfo info;
+ info.Name = tableImport->Field;
+ info.Kind = WASM_SYMBOL_TYPE_TABLE;
+ info.ImportModule = tableImport->Module;
+ info.ImportName = tableImport->Field;
+ info.Flags = WASM_SYMBOL_UNDEFINED;
+ info.Flags |= WASM_SYMBOL_NO_STRIP;
+ info.ElementIndex = 0;
+ LLVM_DEBUG(dbgs() << "Synthesizing symbol for table import: " << info.Name
<< "\n");
const WasmGlobalType *globalType = nullptr;
const WasmSignature *signature = nullptr;
auto *wasmSym =
- make<WasmSymbol>(*info, globalType, &tableImport->Table, signature);
+ make<WasmSymbol>(std::move(info), globalType, &tableImport->Table, signature);
Symbol *sym = createUndefined(*wasmSym, false);
// We're only sure it's a TableSymbol if the createUndefined succeeded.
if (errorCount())
diff --git a/llvm/include/llvm/BinaryFormat/Wasm.h b/llvm/include/llvm/BinaryFormat/Wasm.h
index cd13b7014bfe2..9c1cf68d939a9 100644
--- a/llvm/include/llvm/BinaryFormat/Wasm.h
+++ b/llvm/include/llvm/BinaryFormat/Wasm.h
@@ -471,7 +471,6 @@ struct WasmLinkingData {
uint32_t Version;
std::vector<WasmInitFunc> InitFunctions;
std::vector<StringRef> Comdats;
- std::vector<WasmSymbolInfo> SymbolTable;
};
struct WasmSignature {
diff --git a/llvm/include/llvm/Object/Wasm.h b/llvm/include/llvm/Object/Wasm.h
index 927dce882f6ae..1a222e58ef906 100644
--- a/llvm/include/llvm/Object/Wasm.h
+++ b/llvm/include/llvm/Object/Wasm.h
@@ -34,7 +34,7 @@ namespace object {
class WasmSymbol {
public:
- WasmSymbol(const wasm::WasmSymbolInfo &Info,
+ WasmSymbol(const wasm::WasmSymbolInfo &&Info,
const wasm::WasmGlobalType *GlobalType,
const wasm::WasmTableType *TableType,
const wasm::WasmSignature *Signature)
@@ -43,7 +43,7 @@ class WasmSymbol {
assert(!Signature || Signature->Kind != wasm::WasmSignature::Placeholder);
}
- const wasm::WasmSymbolInfo &Info;
+ const wasm::WasmSymbolInfo Info;
const wasm::WasmGlobalType *GlobalType;
const wasm::WasmTableType *TableType;
const wasm::WasmSignature *Signature;
diff --git a/llvm/lib/Object/WasmObjectFile.cpp b/llvm/lib/Object/WasmObjectFile.cpp
index 953e7c70b5f6e..636ec484e2d05 100644
--- a/llvm/lib/Object/WasmObjectFile.cpp
+++ b/llvm/lib/Object/WasmObjectFile.cpp
@@ -642,9 +642,7 @@ Error WasmObjectFile::parseLinkingSectionSymtab(ReadContext &Ctx) {
uint32_t Count = readVaruint32(Ctx);
// Clear out any symbol information that was derived from the exports
// section.
- LinkingData.SymbolTable.clear();
Symbols.clear();
- LinkingData.SymbolTable.reserve(Count);
Symbols.reserve(Count);
StringSet<> SymbolNames;
@@ -844,8 +842,7 @@ Error WasmObjectFile::parseLinkingSectionSymtab(ReadContext &Ctx) {
return make_error<GenericBinaryError>("duplicate symbol name " +
Twine(Info.Name),
object_error::parse_failed);
- LinkingData.SymbolTable.emplace_back(Info);
- Symbols.emplace_back(LinkingData.SymbolTable.back(), GlobalType, TableType,
+ Symbols.emplace_back(std::move(Info), GlobalType, TableType,
Signature);
LLVM_DEBUG(dbgs() << "Adding symbol: " << Symbols.back() << "\n");
}
@@ -1390,7 +1387,6 @@ Error WasmObjectFile::parseGlobalSection(ReadContext &Ctx) {
Error WasmObjectFile::parseExportSection(ReadContext &Ctx) {
uint32_t Count = readVaruint32(Ctx);
Exports.reserve(Count);
- LinkingData.SymbolTable.reserve(Count);
Symbols.reserve(Count);
for (uint32_t I = 0; I < Count; I++) {
wasm::WasmExport Ex;
@@ -1455,8 +1451,7 @@ Error WasmObjectFile::parseExportSection(ReadContext &Ctx) {
}
Exports.push_back(Ex);
if (Ex.Kind != wasm::WASM_EXTERNAL_MEMORY) {
- LinkingData.SymbolTable.emplace_back(Info);
- Symbols.emplace_back(LinkingData.SymbolTable.back(), GlobalType,
+ Symbols.emplace_back(std::move(Info), GlobalType,
TableType, Signature);
LLVM_DEBUG(dbgs() << "Adding symbol: " << Symbols.back() << "\n");
}
diff --git a/llvm/tools/obj2yaml/wasm2yaml.cpp b/llvm/tools/obj2yaml/wasm2yaml.cpp
index c15d64cef8d65..b2679fb28857f 100644
--- a/llvm/tools/obj2yaml/wasm2yaml.cpp
+++ b/llvm/tools/obj2yaml/wasm2yaml.cpp
@@ -124,7 +124,8 @@ WasmDumper::dumpCustomSection(const WasmSection &WasmSec) {
}
uint32_t SymbolIndex = 0;
- for (const wasm::WasmSymbolInfo &Symbol : Obj.linkingData().SymbolTable) {
+ for (const auto &Sym : Obj.symbols()) {
+ const wasm::WasmSymbolInfo& Symbol = Obj.getWasmSymbol(Sym).Info;
WasmYAML::SymbolInfo Info;
Info.Index = SymbolIndex++;
Info.Kind = static_cast<uint32_t>(Symbol.Kind);
More information about the llvm-commits
mailing list