[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.

llvm-svn: 249621
This commit is contained in:
David Majnemer 2015-10-07 21:34:00 +00:00
parent 40bdd041db
commit 6af5f82c20
2 changed files with 3 additions and 2 deletions

View File

@ -477,7 +477,8 @@ void WinException::emitCSpecificHandlerTable(const MachineFunction *MF) {
const MCExpr *ExceptOrNull;
auto *Handler = UME.Handler.get<MachineBasicBlock *>();
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

View File

@ -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