From 02e9778821fdc3f8f2f496ab6028369945a04d0e Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Wed, 7 Oct 2015 21:34:00 +0000 Subject: [PATCH] [WinEH] Refer to filter funclets using their symbol-table symbol The relocation for the filter funclet will be against a symbol table entry for a function instead of the section, making it easier to understand what is going on. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249621 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/AsmPrinter/WinException.cpp | 3 ++- test/CodeGen/X86/seh-catchpad.ll | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/CodeGen/AsmPrinter/WinException.cpp b/lib/CodeGen/AsmPrinter/WinException.cpp index f672f93a3ee..5661a378c30 100644 --- a/lib/CodeGen/AsmPrinter/WinException.cpp +++ b/lib/CodeGen/AsmPrinter/WinException.cpp @@ -477,7 +477,8 @@ void WinException::emitCSpecificHandlerTable(const MachineFunction *MF) { const MCExpr *ExceptOrNull; auto *Handler = UME.Handler.get(); if (UME.IsFinally) { - FilterOrFinally = create32bitRef(Handler->getSymbol()); + FilterOrFinally = + create32bitRef(getMCSymbolForMBBOrGV(Asm, Handler)); ExceptOrNull = MCConstantExpr::create(0, Ctx); } else { // For an except, the filter can be 1 (catch-all) or a function diff --git a/test/CodeGen/X86/seh-catchpad.ll b/test/CodeGen/X86/seh-catchpad.ll index fc8e721c63d..865596d206f 100644 --- a/test/CodeGen/X86/seh-catchpad.ll +++ b/test/CodeGen/X86/seh-catchpad.ll @@ -140,7 +140,7 @@ ehcleanup.end: ; preds = %ehcleanup ; CHECK-NEXT: .long .LBB1_[[except2bb]]@IMGREL ; CHECK-NEXT: .long .Ltmp2@IMGREL ; CHECK-NEXT: .long .Ltmp3@IMGREL+1 -; CHECK-NEXT: .long .LBB1_[[finbb:[0-9]+]]@IMGREL +; CHECK-NEXT: .long "?dtor$[[finbb:[0-9]+]]@?0?main@4HA"@IMGREL ; CHECK-NEXT: .long 0 ; CHECK-NEXT: .long .Ltmp2@IMGREL ; CHECK-NEXT: .long .Ltmp3@IMGREL+1 -- 2.34.1