llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-backend-x86 Author: None (llvmbot) <details> <summary>Changes</summary> Backport ece72e2731350d9840c6446db9276b04d593cc23 Requested by: @<!-- -->MaskRay --- Full diff: https://github.com/llvm/llvm-project/pull/133591.diff 2 Files Affected: - (modified) llvm/lib/MC/MCWinCOFFStreamer.cpp (+3-1) - (modified) llvm/test/CodeGen/X86/win32-eh.ll (+9) ``````````diff diff --git a/llvm/lib/MC/MCWinCOFFStreamer.cpp b/llvm/lib/MC/MCWinCOFFStreamer.cpp index 8fd46bc8b0255..3720d6e26fe46 100644 --- a/llvm/lib/MC/MCWinCOFFStreamer.cpp +++ b/llvm/lib/MC/MCWinCOFFStreamer.cpp @@ -299,7 +299,8 @@ void MCWinCOFFStreamer::emitCOFFSafeSEH(MCSymbol const *Symbol) { return; MCSection *SXData = getContext().getObjectFileInfo()->getSXDataSection(); - changeSection(SXData); + pushSection(); + switchSection(SXData); SXData->ensureMinAlignment(Align(4)); insert(getContext().allocFragment<MCSymbolIdFragment>(Symbol)); @@ -310,6 +311,7 @@ void MCWinCOFFStreamer::emitCOFFSafeSEH(MCSymbol const *Symbol) { // function. Go ahead and oblige it here. CSymbol->setType(COFF::IMAGE_SYM_DTYPE_FUNCTION << COFF::SCT_COMPLEX_TYPE_SHIFT); + popSection(); } void MCWinCOFFStreamer::emitCOFFSymbolIndex(MCSymbol const *Symbol) { diff --git a/llvm/test/CodeGen/X86/win32-eh.ll b/llvm/test/CodeGen/X86/win32-eh.ll index 82dc4beaf972b..d3d19ede546d6 100644 --- a/llvm/test/CodeGen/X86/win32-eh.ll +++ b/llvm/test/CodeGen/X86/win32-eh.ll @@ -1,4 +1,5 @@ ; RUN: llc -mtriple=i686-pc-windows-msvc < %s | FileCheck %s +; RUN: llc -mtriple=i686-pc-windows-msvc -filetype=obj < %s -o %t declare void @may_throw_or_crash() declare i32 @_except_handler3(...) @@ -208,6 +209,14 @@ catch: ; CHECK-NEXT: .long 0 ; CHECK-NEXT: .long 1 +; CHECK-LABEL: inlineasm: +; CHECK: .safeseh my_handler +define i32 @inlineasm() { +entry: + call void asm sideeffect ".safeseh my_handler", "~{dirflag},~{fpsr},~{flags}"() + ret i32 0 +} + ; CHECK-LABEL: ___ehhandler$use_CxxFrameHandler3: ; CHECK: movl $L__ehtable$use_CxxFrameHandler3, %eax ; CHECK-NEXT: jmp ___CxxFrameHandler3 # TAILCALL `````````` </details> https://github.com/llvm/llvm-project/pull/133591 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits