Implement the EndProlog Win64 EH method on the base MCStreamer.
authorCharles Davis <cdavis@mines.edu>
Thu, 19 May 2011 21:24:54 +0000 (21:24 +0000)
committerCharles Davis <cdavis@mines.edu>
Thu, 19 May 2011 21:24:54 +0000 (21:24 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131679 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/MC/MCWin64EH.h
lib/MC/MCStreamer.cpp

index cc3bc6e1a62a90d0026587ab68226c50ed3a9da5..de1e24767a1515d7d8470510f43e9eb8f17e21b5 100644 (file)
@@ -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;
index fcc338991f186747170c51c68972d00af2c391e0..9c004e277be098e9d7614611dc4dc98e0e3a26f9 100644 (file)
@@ -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() {