Author: tstellar Date: Fri Nov 20 19:08:13 2015 New Revision: 253742 URL: http://llvm.org/viewvc/llvm-project?rev=253742&view=rev Log: Merging r247435:
------------------------------------------------------------------------ r247435 | david.majnemer | 2015-09-11 13:34:34 -0400 (Fri, 11 Sep 2015) | 8 lines [X86] Make sure startproc/endproc are paired We used different conditions to determine if we should emit startproc vs endproc. Use the same condition to ensure that they will always be paired. This fixes PR24374. ------------------------------------------------------------------------ Added: llvm/branches/release_37/test/CodeGen/X86/pr24374.ll Modified: llvm/branches/release_37/lib/CodeGen/AsmPrinter/WinException.cpp Modified: llvm/branches/release_37/lib/CodeGen/AsmPrinter/WinException.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_37/lib/CodeGen/AsmPrinter/WinException.cpp?rev=253742&r1=253741&r2=253742&view=diff ============================================================================== --- llvm/branches/release_37/lib/CodeGen/AsmPrinter/WinException.cpp (original) +++ llvm/branches/release_37/lib/CodeGen/AsmPrinter/WinException.cpp Fri Nov 20 19:08:13 2015 @@ -169,7 +169,7 @@ void WinException::endFunction(const Mac Asm->OutStreamer->PopSection(); } - if (shouldEmitMoves) + if (shouldEmitMoves || shouldEmitPersonality) Asm->OutStreamer->EmitWinCFIEndProc(); } Added: llvm/branches/release_37/test/CodeGen/X86/pr24374.ll URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_37/test/CodeGen/X86/pr24374.ll?rev=253742&view=auto ============================================================================== --- llvm/branches/release_37/test/CodeGen/X86/pr24374.ll (added) +++ llvm/branches/release_37/test/CodeGen/X86/pr24374.ll Fri Nov 20 19:08:13 2015 @@ -0,0 +1,37 @@ +; RUN: llc < %s | FileCheck %s +target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-w64-windows-gnu" + +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @g, i8* null }] + +declare i32 @__gxx_personality_seh0(...) + +; Function Attrs: nounwind +define void @f() #0 personality i8* bitcast (i32 (...)* @__gxx_personality_seh0 to i8*) { +entry: + invoke void @g() + to label %exit unwind label %lpad + +lpad: ; preds = %entry + landingpad { i8*, i32 } + cleanup + unreachable + +exit: ; preds = %entry + unreachable +} +; CHECK-LABEL: f: +; CHECK: .seh_proc f +; CHECK: .seh_handler __gxx_personality_seh0, @unwind, @except +; CHECK: callq g +; CHECK: .seh_handlerdata +; CHECK: .seh_endproc + +define void @g() { + unreachable +} +; CHECK-LABEL: g: +; CHECK: .seh_proc g +; CHECK: .seh_endproc + +attributes #0 = { nounwind } _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits