aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/MC/MCStreamer.cpp
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2020-08-20 11:39:25 +0300
committerMartin Storsjö <martin@martin.st>2020-08-29 15:15:22 +0300
commit20f7773bb4bb458c3f3b4e46d1601465e6479746 (patch)
tree6fb19dd6d1b06b387ba43275c9550a68389770a8 /llvm/lib/MC/MCStreamer.cpp
parent71ac9105cd392a257d15515579c70f06c970c5cb (diff)
downloadllvm-20f7773bb4bb458c3f3b4e46d1601465e6479746.zip
llvm-20f7773bb4bb458c3f3b4e46d1601465e6479746.tar.gz
llvm-20f7773bb4bb458c3f3b4e46d1601465e6479746.tar.bz2
[MC] [Win64EH] Fill in FuncletOrFuncEnd if missing
This can happen e.g. for code that declare .seh_proc/.seh_endproc in assembly, or for code that use .seh_handlerdata (which triggers the unwind info to be emitted before the end of the function). The TextSection field must be made non-const to be able to use it with Streamer.SwitchSection(). Differential Revision: https://reviews.llvm.org/D86528
Diffstat (limited to 'llvm/lib/MC/MCStreamer.cpp')
-rw-r--r--llvm/lib/MC/MCStreamer.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp
index df08c34..995828b 100644
--- a/llvm/lib/MC/MCStreamer.cpp
+++ b/llvm/lib/MC/MCStreamer.cpp
@@ -692,6 +692,8 @@ void MCStreamer::EmitWinCFIEndProc(SMLoc Loc) {
MCSymbol *Label = emitCFILabel();
CurFrame->End = Label;
+ if (!CurFrame->FuncletOrFuncEnd)
+ CurFrame->FuncletOrFuncEnd = CurFrame->End;
}
void MCStreamer::EmitWinCFIFuncletOrFuncEnd(SMLoc Loc) {