forked from OSchip/llvm-project
Revert "Encode address offsets of basic blocks relative to the end of the previous basic blocks."
This reverts commit 029283c1c0
.
The code in `ELFFile::decodeBBAddrMap` was not changed in the submitted patch.
Differential Revision: https://reviews.llvm.org/D120457
This commit is contained in:
parent
da11f17e90
commit
aeec9671fb
|
@ -1152,19 +1152,16 @@ void AsmPrinter::emitBBAddrMapSection(const MachineFunction &MF) {
|
|||
OutStreamer->emitSymbolValue(FunctionSymbol, getPointerSize());
|
||||
// Emit the total number of basic blocks in this function.
|
||||
OutStreamer->emitULEB128IntValue(MF.size());
|
||||
const MCSymbol *PrevMBBEndSymbol = FunctionSymbol;
|
||||
// Emit BB Information for each basic block in the funciton.
|
||||
for (const MachineBasicBlock &MBB : MF) {
|
||||
const MCSymbol *MBBSymbol =
|
||||
MBB.isEntryBlock() ? FunctionSymbol : MBB.getSymbol();
|
||||
// Emit the basic block offset relative to the end of the previous block.
|
||||
// This is zero unless the block is padded due to alignment.
|
||||
emitLabelDifferenceAsULEB128(MBBSymbol, PrevMBBEndSymbol);
|
||||
// Emit the basic block offset.
|
||||
emitLabelDifferenceAsULEB128(MBBSymbol, FunctionSymbol);
|
||||
// Emit the basic block size. When BBs have alignments, their size cannot
|
||||
// always be computed from their offsets.
|
||||
emitLabelDifferenceAsULEB128(MBB.getEndSymbol(), MBBSymbol);
|
||||
OutStreamer->emitULEB128IntValue(getBBAddrMapMetadata(MBB));
|
||||
PrevMBBEndSymbol = MBB.getEndSymbol();
|
||||
}
|
||||
OutStreamer->PopSection();
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
// Basic Block Labels
|
||||
// ==================
|
||||
//
|
||||
// With -fbasic-block-sections=labels, we encode the offsets of BB addresses of
|
||||
// With -fbasic-block-sections=labels, we emit the offsets of BB addresses of
|
||||
// every function into the .llvm_bb_addr_map section. Along with the function
|
||||
// symbols, this allows for mapping of virtual addresses in PMU profiles back to
|
||||
// the corresponding basic blocks. This logic is implemented in AsmPrinter. This
|
||||
|
|
|
@ -51,12 +51,12 @@ declare i32 @__gxx_personality_v0(...)
|
|||
; CHECK-NEXT: .uleb128 .Lfunc_begin0-.Lfunc_begin0
|
||||
; CHECK-NEXT: .uleb128 .LBB_END0_0-.Lfunc_begin0
|
||||
; CHECK-NEXT: .byte 8
|
||||
; CHECK-NEXT: .uleb128 .LBB0_1-.LBB_END0_0
|
||||
; CHECK-NEXT: .uleb128 .LBB0_1-.Lfunc_begin0
|
||||
; CHECK-NEXT: .uleb128 .LBB_END0_1-.LBB0_1
|
||||
; CHECK-NEXT: .byte 8
|
||||
; CHECK-NEXT: .uleb128 .LBB0_2-.LBB_END0_1
|
||||
; CHECK-NEXT: .uleb128 .LBB0_2-.Lfunc_begin0
|
||||
; CHECK-NEXT: .uleb128 .LBB_END0_2-.LBB0_2
|
||||
; CHECK-NEXT: .byte 1
|
||||
; CHECK-NEXT: .uleb128 .LBB0_3-.LBB_END0_2
|
||||
; CHECK-NEXT: .uleb128 .LBB0_3-.Lfunc_begin0
|
||||
; CHECK-NEXT: .uleb128 .LBB_END0_3-.LBB0_3
|
||||
; CHECK-NEXT: .byte 5
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
# LLVM-NEXT: CanFallThrough: No
|
||||
# LLVM-NEXT: }
|
||||
# LLVM-NEXT: {
|
||||
# LLVM-NEXT: Offset: 0x4
|
||||
# LLVM-NEXT: Offset: 0x3
|
||||
# LLVM-NEXT: Size: 0x4
|
||||
# LLVM-NEXT: HasReturn: Yes
|
||||
# LLVM-NEXT: HasTailCall: No
|
||||
|
|
|
@ -6983,13 +6983,10 @@ template <class ELFT> void LLVMELFDumper<ELFT>::printBBAddrMaps() {
|
|||
W.printString("Name", FuncName);
|
||||
|
||||
ListScope L(W, "BB entries");
|
||||
uint32_t FunctionRelativeAddress = 0;
|
||||
for (const BBAddrMap::BBEntry &BBE : AM.BBEntries) {
|
||||
DictScope L(W);
|
||||
FunctionRelativeAddress += BBE.Offset;
|
||||
W.printHex("Offset", FunctionRelativeAddress);
|
||||
W.printHex("Offset", BBE.Offset);
|
||||
W.printHex("Size", BBE.Size);
|
||||
FunctionRelativeAddress += BBE.Size;
|
||||
W.printBoolean("HasReturn", BBE.HasReturn);
|
||||
W.printBoolean("HasTailCall", BBE.HasTailCall);
|
||||
W.printBoolean("IsEHPad", BBE.IsEHPad);
|
||||
|
|
Loading…
Reference in New Issue