[lldb] [llvm] [mlir] [DebugInfo] Add symbolic branches to DIExpression (PR #210850)
Eric Christopher via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 10 19:03:28 PDT 2026
================
@@ -69,11 +89,41 @@ void DIEDwarfExpression::enableTemporaryBuffer() {
void DIEDwarfExpression::disableTemporaryBuffer() { IsBuffering = false; }
unsigned DIEDwarfExpression::getTemporaryBufferSize() {
- return TmpDIE.computeSize(AP.getDwarfFormParams());
+ unsigned Size = 0;
+ for (const DIEValue &V : TmpDIE.values())
+ Size += V.sizeOf(AP.getDwarfFormParams());
+ return Size;
}
void DIEDwarfExpression::commitTemporaryBuffer() { OutDIE.takeValues(TmpDIE); }
+void DIEDwarfExpression::replaceTemporaryBufferData(unsigned PlaceholderOffset,
+ uint64_t Replacement,
+ unsigned PlaceholderSize) {
+ // Walk the encoded values until the cursor reaches the placeholder.
+ unsigned ByteCursor = 0;
+ for (DIEValue &V : TmpDIE.values()) {
+ unsigned ValueSize = V.sizeOf(AP.getDwarfFormParams());
+ unsigned ValueEnd = ByteCursor + ValueSize;
+ if (ValueEnd <= PlaceholderOffset) {
+ ByteCursor = ValueEnd;
+ continue;
+ }
+
+ // Replace the whole zero placeholder and keep its form, since changing its
+ // encoded size would move every later fixup.
----------------
echristo wrote:
sorry, I'd apparently missed this. Sadly the two bytes are required so there's not much more densification we could do here.
https://github.com/llvm/llvm-project/pull/210850
More information about the llvm-commits
mailing list