diff options
author | Charles Davis <cdavis@mines.edu> | 2011-05-29 04:28:35 +0000 |
---|---|---|
committer | Charles Davis <cdavis@mines.edu> | 2011-05-29 04:28:35 +0000 |
commit | b025724b46650db199da9d1c6bd6ff1ba536c54b (patch) | |
tree | 7db087e50e7019546fb77a42e3bad834fdfa2712 /llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp | |
parent | 71f96fef42fccb0fbce6a5520053289411dc2d70 (diff) | |
download | bcm5719-llvm-b025724b46650db199da9d1c6bd6ff1ba536c54b.tar.gz bcm5719-llvm-b025724b46650db199da9d1c6bd6ff1ba536c54b.zip |
When generating against the Win64 EH scheme, set the handler to the GCC-specific
handler.
At this moment, only GCC-style exceptions are supported. Other kinds
of exceptions, including "traditional" SEH and Microsoft Visual C++ exceptions,
need more work--and an compiler exception model that isn't specific to
GCC-style exceptions!
In particular, I imagine that it would be possible to mix "traditional" SEH
with GCC-style EH or Microsoft C++ EH. Currently LLVM has no way (beyond some
target-specific defaults and whole-module compiler switches) of knowing which
scheme to use when.
llvm-svn: 132283
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp b/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp index a23c05ece29..8ef4587836f 100644 --- a/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp @@ -76,6 +76,13 @@ void Win64Exception::BeginFunction(const MachineFunction *MF) { return; Asm->OutStreamer.EmitWin64EHStartProc(Asm->CurrentFnSym); + + if (!shouldEmitPersonality) + return; + + MCSymbol *GCCHandlerSym = + Asm->GetExternalSymbolSymbol("_GCC_specific_handler"); + Asm->OutStreamer.EmitWin64EHHandler(GCCHandlerSym, true, true); } /// EndFunction - Gather and emit post-function exception information. |