[llvm] [BPF] Support Jump Table (PR #149715)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 23 23:51:00 PDT 2025
================
@@ -150,6 +133,115 @@ void BPFAsmPrinter::emitInstruction(const MachineInstr *MI) {
EmitToStreamer(*OutStreamer, TmpInst);
}
+MCSymbol *BPFAsmPrinter::getJTPublicSymbol(unsigned JTI) {
+ SmallString<60> Name;
+ raw_svector_ostream(Name)
+ << "BPF.JT." << MF->getFunctionNumber() << '.' << JTI;
+ MCSymbol *S = OutContext.getOrCreateSymbol(Name);
+ if (auto *ES = dyn_cast<MCSymbolELF>(S)) {
+ ES->setBinding(ELF::STB_GLOBAL);
+ ES->setType(ELF::STT_OBJECT);
+ }
+ return S;
+}
+
+MCSymbol *BPFAsmPrinter::lowerBlockAddress(const BlockAddress *BA) {
----------------
yonghong-song wrote:
Okay, I just uploaded a new version to fix Example 1 case (i.e., LD_imm64 <blockaddress> case).
I added one transformation in MIPeephole to convert <blockaddress> as an one element array and its behavior will be the same as other arrays with more than 2 elements (e.g. Example 3).
https://github.com/llvm/llvm-project/pull/149715
More information about the llvm-commits
mailing list