aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/ELF.cpp
diff options
context:
space:
mode:
authorRahman Lavaee <rahmanl@google.com>2025-08-25 10:17:29 -0700
committerGitHub <noreply@github.com>2025-08-25 10:17:29 -0700
commita61ff1487b6696b9ab3bb7d9c2c1ea899eb7a4f0 (patch)
tree250bcc9d0640f18091f0343d2092020526438c30 /llvm/lib/Object/ELF.cpp
parent7b74a2755165a1e4d0f3b8c3a5d1591be4b45ed1 (diff)
downloadllvm-a61ff1487b6696b9ab3bb7d9c2c1ea899eb7a4f0.zip
llvm-a61ff1487b6696b9ab3bb7d9c2c1ea899eb7a4f0.tar.gz
llvm-a61ff1487b6696b9ab3bb7d9c2c1ea899eb7a4f0.tar.bz2
[SHT_LLVM_BB_ADDR_MAP] Change the callsite feature to emit end of callsites. (#155041)
This PR simply moves the callsite anchors from the beginning of callsites to their end. Emitting the end of callsites is more sensible as it allows breaking the basic block into subblocks which end with control transfer instructions.
Diffstat (limited to 'llvm/lib/Object/ELF.cpp')
-rw-r--r--llvm/lib/Object/ELF.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/llvm/lib/Object/ELF.cpp b/llvm/lib/Object/ELF.cpp
index 788c602..53699ce0 100644
--- a/llvm/lib/Object/ELF.cpp
+++ b/llvm/lib/Object/ELF.cpp
@@ -847,7 +847,7 @@ decodeBBAddrMapImpl(const ELFFile<ELFT> &EF,
if (!FeatEnableOrErr)
return FeatEnableOrErr.takeError();
FeatEnable = *FeatEnableOrErr;
- if (FeatEnable.CallsiteOffsets && Version < 3)
+ if (FeatEnable.CallsiteEndOffsets && Version < 3)
return createError("version should be >= 3 for SHT_LLVM_BB_ADDR_MAP when "
"callsite offsets feature is enabled: version = " +
Twine(static_cast<int>(Version)) +
@@ -890,22 +890,22 @@ decodeBBAddrMapImpl(const ELFFile<ELFT> &EF,
uint32_t ID = readULEB128As<uint32_t>(Data, Cur, ULEBSizeErr);
uint32_t Offset = readULEB128As<uint32_t>(Data, Cur, ULEBSizeErr);
// Read the callsite offsets.
- uint32_t LastCallsiteOffset = 0;
- SmallVector<uint32_t, 1> CallsiteOffsets;
- if (FeatEnable.CallsiteOffsets) {
+ uint32_t LastCallsiteEndOffset = 0;
+ SmallVector<uint32_t, 1> CallsiteEndOffsets;
+ if (FeatEnable.CallsiteEndOffsets) {
uint32_t NumCallsites =
readULEB128As<uint32_t>(Data, Cur, ULEBSizeErr);
- CallsiteOffsets.reserve(NumCallsites);
+ CallsiteEndOffsets.reserve(NumCallsites);
for (uint32_t CallsiteIndex = 0;
!ULEBSizeErr && Cur && (CallsiteIndex < NumCallsites);
++CallsiteIndex) {
- LastCallsiteOffset +=
+ LastCallsiteEndOffset +=
readULEB128As<uint32_t>(Data, Cur, ULEBSizeErr);
- CallsiteOffsets.push_back(LastCallsiteOffset);
+ CallsiteEndOffsets.push_back(LastCallsiteEndOffset);
}
}
uint32_t Size = readULEB128As<uint32_t>(Data, Cur, ULEBSizeErr) +
- LastCallsiteOffset;
+ LastCallsiteEndOffset;
uint32_t MD = readULEB128As<uint32_t>(Data, Cur, ULEBSizeErr);
Expected<BBAddrMap::BBEntry::Metadata> MetadataOrErr =
BBAddrMap::BBEntry::Metadata::decode(MD);
@@ -914,7 +914,7 @@ decodeBBAddrMapImpl(const ELFFile<ELFT> &EF,
break;
}
BBEntries.push_back({ID, Offset + PrevBBEndOffset, Size,
- *MetadataOrErr, CallsiteOffsets});
+ *MetadataOrErr, CallsiteEndOffsets});
PrevBBEndOffset += Offset + Size;
}
TotalNumBlocks += BBEntries.size();