aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Davis <cdavis@mines.edu>2011-05-19 21:24:54 +0000
committerCharles Davis <cdavis@mines.edu>2011-05-19 21:24:54 +0000
commit61558aaf4f924fd44fd2f275fcb7ab7199ede304 (patch)
tree8c0f2d43885bb440406d878070c5ca396b56b9a2
parent3a2d255ce612760748990b1b1ea131cc777bafea (diff)
Implement the EndProlog Win64 EH method on the base MCStreamer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131679 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/MC/MCWin64EH.h6
-rw-r--r--lib/MC/MCStreamer.cpp6
2 files changed, 7 insertions, 5 deletions
diff --git a/include/llvm/MC/MCWin64EH.h b/include/llvm/MC/MCWin64EH.h
index cc3bc6e1a6..de1e24767a 100644
--- a/include/llvm/MC/MCWin64EH.h
+++ b/include/llvm/MC/MCWin64EH.h
@@ -59,15 +59,15 @@ namespace llvm {
struct MCWin64EHUnwindInfo {
MCWin64EHUnwindInfo() : Begin(0), End(0), ExceptionHandler(0),
- Function(0), UnwindOnly(false),
- PrologSize(0), LastFrameInst(-1), ChainedParent(0),
+ Function(0), PrologEnd(0), UnwindOnly(false),
+ LastFrameInst(-1), ChainedParent(0),
Instructions() {}
MCSymbol *Begin;
MCSymbol *End;
const MCSymbol *ExceptionHandler;
const MCSymbol *Function;
+ MCSymbol *PrologEnd;
bool UnwindOnly;
- unsigned PrologSize;
int LastFrameInst;
MCWin64EHUnwindInfo *ChainedParent;
std::vector<MCWin64EHInstruction> Instructions;
diff --git a/lib/MC/MCStreamer.cpp b/lib/MC/MCStreamer.cpp
index fcc338991f..9c004e277b 100644
--- a/lib/MC/MCStreamer.cpp
+++ b/lib/MC/MCStreamer.cpp
@@ -425,8 +425,10 @@ void MCStreamer::EmitWin64EHPushFrame(bool Code) {
}
void MCStreamer::EmitWin64EHEndProlog() {
- errs() << "Not implemented yet\n";
- abort();
+ EnsureValidW64UnwindInfo();
+ MCWin64EHUnwindInfo *CurFrame = CurrentW64UnwindInfo;
+ CurFrame->PrologEnd = getContext().CreateTempSymbol();
+ EmitLabel(CurFrame->PrologEnd);
}
void MCStreamer::EmitFnStart() {