diff options
author | Martin Storsjö <martin@martin.st> | 2020-08-20 11:39:25 +0300 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2020-08-29 15:15:22 +0300 |
commit | 20f7773bb4bb458c3f3b4e46d1601465e6479746 (patch) | |
tree | 6fb19dd6d1b06b387ba43275c9550a68389770a8 /llvm/lib/MC/MCStreamer.cpp | |
parent | 71ac9105cd392a257d15515579c70f06c970c5cb (diff) | |
download | llvm-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.cpp | 2 |
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) { |