diff --git a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp --- a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp +++ b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp @@ -818,18 +818,9 @@ const std::vector &JT = MJTI->getJumpTables(); if (JT.empty()) return; - const Function &F = MF->getFunction(); const TargetLoweringObjectFile &TLOF = getObjFileLowering(); - bool JTInDiffSection = - !STI->isTargetCOFF() || - !TLOF.shouldPutJumpTableInFunctionSection( - MJTI->getEntryKind() == MachineJumpTableInfo::EK_LabelDifference32, - F); - if (JTInDiffSection) { - // Drop it in the readonly section. - MCSection *ReadOnlySec = TLOF.getSectionForJumpTable(F, TM); - OutStreamer->SwitchSection(ReadOnlySec); - } + MCSection *ReadOnlySec = TLOF.getSectionForJumpTable(MF->getFunction(), TM); + OutStreamer->SwitchSection(ReadOnlySec); auto AFI = MF->getInfo(); for (unsigned JTI = 0, e = JT.size(); JTI != e; ++JTI) { diff --git a/llvm/test/CodeGen/AArch64/win64-jumptable.ll b/llvm/test/CodeGen/AArch64/win64-jumptable.ll --- a/llvm/test/CodeGen/AArch64/win64-jumptable.ll +++ b/llvm/test/CodeGen/AArch64/win64-jumptable.ll @@ -38,12 +38,14 @@ ; CHECK: .seh_proc f ; CHECK: b g ; CHECK-NEXT: .seh_endfunclet +; CHECK-NEXT: .section .rdata,"dr" ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: .LJTI0_0: ; CHECK: .word .LBB0_2-.Ltmp0 ; CHECK: .word .LBB0_3-.Ltmp0 ; CHECK: .word .LBB0_4-.Ltmp0 ; CHECK: .word .LBB0_5-.Ltmp0 +; CHECK: .text ; CHECK: .seh_endproc ; Check that we can emit an object file with correct unwind info.