diff options
author | Charles Davis <cdavis@mines.edu> | 2011-05-21 15:57:49 +0000 |
---|---|---|
committer | Charles Davis <cdavis@mines.edu> | 2011-05-21 15:57:49 +0000 |
commit | 321fe74b2d40d7762175fbd3054fda00b5e70833 (patch) | |
tree | f6e5e46c0c52b514cb6d92b730ebbddff5d2b4e2 /lib/MC/MCStreamer.cpp | |
parent | c21b205f93fa7bc135928ff9f4981f9062e2fd53 (diff) | |
download | llvm-321fe74b2d40d7762175fbd3054fda00b5e70833.tar.gz llvm-321fe74b2d40d7762175fbd3054fda00b5e70833.tar.bz2 llvm-321fe74b2d40d7762175fbd3054fda00b5e70833.tar.xz |
A handler for a function in the Win64 EH scheme can be both an unwind handler
and an exception handler. Handle that case.
Also, add an 'Emitted' member to the MCWin64EHUnwindInfo struct. It will be
needed later.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131791 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCStreamer.cpp')
-rw-r--r-- | lib/MC/MCStreamer.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/MC/MCStreamer.cpp b/lib/MC/MCStreamer.cpp index ab7c798198..1ec7688a5e 100644 --- a/lib/MC/MCStreamer.cpp +++ b/lib/MC/MCStreamer.cpp @@ -362,10 +362,12 @@ void MCStreamer::EmitWin64EHHandler(const MCSymbol *Sym, bool Unwind, EnsureValidW64UnwindInfo(); MCWin64EHUnwindInfo *CurFrame = CurrentW64UnwindInfo; CurFrame->ExceptionHandler = Sym; - if (Unwind) - CurFrame->UnwindOnly = true; - else if (!Except) + if (!Except && !Unwind) report_fatal_error("Don't know what kind of handler this is!"); + if (Unwind) + CurFrame->HandlesUnwind = true; + if (Except) + CurFrame->HandlesExceptions = true; } void MCStreamer::EmitWin64EHHandlerData() { |