Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions llvm/lib/Target/BPF/BPFAsmPrinter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,10 @@ void BPFAsmPrinter::emitJumpTableInfo() {

const TargetLoweringObjectFile &TLOF = getObjFileLowering();
const Function &F = MF->getFunction();

MCSection *Sec = OutStreamer->getCurrentSectionOnly();
MCSymbol *SecStart = Sec->getBeginSymbol();

MCSection *JTS = TLOF.getSectionForJumpTable(F, TM);
assert(MJTI->getEntryKind() == MachineJumpTableInfo::EK_BlockAddress);
unsigned EntrySize = MJTI->getEntrySize(getDataLayout());
Expand All @@ -231,8 +235,10 @@ void BPFAsmPrinter::emitJumpTableInfo() {
MCSymbol *JTStart = getJTPublicSymbol(JTI);
OutStreamer->emitLabel(JTStart);
for (const MachineBasicBlock *MBB : JTBBs) {
const MCExpr *LHS = MCSymbolRefExpr::create(MBB->getSymbol(), OutContext);
OutStreamer->emitValue(LHS, EntrySize);
const MCExpr *Diff = MCBinaryExpr::createSub(
MCSymbolRefExpr::create(MBB->getSymbol(), OutContext),
MCSymbolRefExpr::create(SecStart, OutContext), OutContext);
OutStreamer->emitValue(Diff, EntrySize);
}
const MCExpr *JTSize =
MCConstantExpr::create(JTBBs.size() * EntrySize, OutContext);
Expand Down
4 changes: 2 additions & 2 deletions llvm/test/CodeGen/BPF/jump_table_blockaddr.ll
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ llc -march=bpf -mcpu=v4 < test.ll \
; CHECK: .cfi_endproc
; CHECK: .section .jumptables,"",@progbits
; CHECK: BPF.JT.0.0:
; CHECK: .quad LBB0_3
; CHECK: .quad LBB0_3-.text
; CHECK: .size BPF.JT.0.0, 8
; CHECK: BPF.JT.0.1:
; CHECK: .quad LBB0_4
; CHECK: .quad LBB0_4-.text
; CHECK: .size BPF.JT.0.1, 8
4 changes: 2 additions & 2 deletions llvm/test/CodeGen/BPF/jump_table_global_var.ll
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,6 @@ llc -march=bpf -mcpu=v4 < test.ll \
; CHECK: .cfi_endproc
; CHECK: .section .jumptables,"",@progbits
; CHECK: BPF.JT.0.0:
; CHECK: .quad LBB0_1
; CHECK: .quad LBB0_2
; CHECK: .quad LBB0_1-.text
; CHECK: .quad LBB0_2-.text
; CHECK: .size BPF.JT.0.0, 16
60 changes: 30 additions & 30 deletions llvm/test/CodeGen/BPF/jump_table_switch_stmt.ll
Original file line number Diff line number Diff line change
Expand Up @@ -93,34 +93,34 @@ llc -march=bpf -mcpu=v4 -bpf-min-jump-table-entries=3 < test.ll \
; CHECK: .cfi_endproc
; CHECK: .section .jumptables,"",@progbits
; CHECK: BPF.JT.0.0:
; CHECK: .quad LBB0_4
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_2
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_5
; CHECK: .quad LBB0_3
; CHECK: .quad LBB0_4-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_2-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_5-.text
; CHECK: .quad LBB0_3-.text
; CHECK: .size BPF.JT.0.0, 240
Loading