From: Reid Kleckner Date: Wed, 10 Jun 2015 18:14:07 +0000 (+0000) Subject: [WinEH] _except_handlerN uses 0 instead of 1 to indicate catch-all X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=3de99b70aa77e001e1d92a6e2a7eba1bb2d267ea;p=oota-llvm.git [WinEH] _except_handlerN uses 0 instead of 1 to indicate catch-all Our usage of 1 was a holdover from __C_specific_handler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239482 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/AsmPrinter/WinException.cpp b/lib/CodeGen/AsmPrinter/WinException.cpp index 2bd9af55c30..40d6bab8b6d 100644 --- a/lib/CodeGen/AsmPrinter/WinException.cpp +++ b/lib/CodeGen/AsmPrinter/WinException.cpp @@ -612,12 +612,10 @@ void WinException::emitExceptHandlerTable(const MachineFunction *MF) { "gaps in the SEH scope table"); for (const SEHHandler &Handler : LPInfo->SEHHandlers) { // Emit the filter or finally function pointer, if present. Otherwise, - // emit '1' to indicate a catch-all. - const MCExpr *FilterOrFinally; - if (const Function *F = Handler.FilterOrFinally) - FilterOrFinally = create32bitRef(Asm->getSymbol(F)); - else - FilterOrFinally = MCConstantExpr::create(1, Asm->OutContext); + // emit '0' to indicate a catch-all. + const Function *F = Handler.FilterOrFinally; + const MCExpr *FilterOrFinally = + create32bitRef(F ? Asm->getSymbol(F) : nullptr); // Compute the recovery address, which is a block address or null. const BlockAddress *BA = Handler.RecoverBA; diff --git a/test/CodeGen/X86/seh-catch-all.ll b/test/CodeGen/X86/seh-catch-all.ll index d02584a26d4..5586f95dba0 100644 --- a/test/CodeGen/X86/seh-catch-all.ll +++ b/test/CodeGen/X86/seh-catch-all.ll @@ -67,5 +67,5 @@ eh.resume: ; X86: .section .xdata,"dr" ; X86-NEXT: L__ehtable$main ; X86-NEXT: .long -1 -; X86-NEXT: .long 1 +; X86-NEXT: .long 0 ; X86-NEXT: .long Ltmp{{[0-9]+}} diff --git a/test/CodeGen/X86/win32-eh.ll b/test/CodeGen/X86/win32-eh.ll index 3abaa49653b..6d816d7770c 100644 --- a/test/CodeGen/X86/win32-eh.ll +++ b/test/CodeGen/X86/win32-eh.ll @@ -37,7 +37,7 @@ catchall: ; CHECK: .section .xdata,"dr" ; CHECK-LABEL: L__ehtable$use_except_handler3: ; CHECK-NEXT: .long -1 -; CHECK-NEXT: .long 1 +; CHECK-NEXT: .long 0 ; CHECK-NEXT: .long Ltmp{{[0-9]+}} define void @use_except_handler4() { @@ -77,7 +77,7 @@ catchall: ; CHECK-NEXT: .long 9999 ; CHECK-NEXT: .long 0 ; CHECK-NEXT: .long -2 -; CHECK-NEXT: .long 1 +; CHECK-NEXT: .long 0 ; CHECK-NEXT: .long Ltmp{{[0-9]+}} define void @use_CxxFrameHandler3() {