diff options
Diffstat (limited to 'llvm/lib/MC/MCStreamer.cpp')
-rw-r--r-- | llvm/lib/MC/MCStreamer.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp index 1ec7688a5ed..a760f2cfb59 100644 --- a/llvm/lib/MC/MCStreamer.cpp +++ b/llvm/lib/MC/MCStreamer.cpp @@ -361,6 +361,8 @@ void MCStreamer::EmitWin64EHHandler(const MCSymbol *Sym, bool Unwind, bool Except) { EnsureValidW64UnwindInfo(); MCWin64EHUnwindInfo *CurFrame = CurrentW64UnwindInfo; + if (CurFrame->ChainedParent) + report_fatal_error("Chained unwind areas can't have handlers!"); CurFrame->ExceptionHandler = Sym; if (!Except && !Unwind) report_fatal_error("Don't know what kind of handler this is!"); @@ -372,6 +374,9 @@ void MCStreamer::EmitWin64EHHandler(const MCSymbol *Sym, bool Unwind, void MCStreamer::EmitWin64EHHandlerData() { EnsureValidW64UnwindInfo(); + MCWin64EHUnwindInfo *CurFrame = CurrentW64UnwindInfo; + if (CurFrame->ChainedParent) + report_fatal_error("Chained unwind areas can't have handlers!"); } void MCStreamer::EmitWin64EHPushReg(unsigned Register) { |