summaryrefslogtreecommitdiff
path: root/lib/MC/MCStreamer.cpp
diff options
context:
space:
mode:
authorCharles Davis <cdavis@mines.edu>2011-05-21 15:57:49 +0000
committerCharles Davis <cdavis@mines.edu>2011-05-21 15:57:49 +0000
commit321fe74b2d40d7762175fbd3054fda00b5e70833 (patch)
treef6e5e46c0c52b514cb6d92b730ebbddff5d2b4e2 /lib/MC/MCStreamer.cpp
parentc21b205f93fa7bc135928ff9f4981f9062e2fd53 (diff)
downloadllvm-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.cpp8
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() {