While thinking about how to know where the functions' boundaries are for

the purposes of the Win64 EH tables, I realized we had no way to tell where
the function ends. (MASM bounds functions with PROC and ENDP keywords.)
Add a directive to delimit the end of the function, and rename the 'frame'
directive to more accurately reflect its duality with the new directive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131522 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Charles Davis 2011-05-18 04:47:22 +00:00
parent fc2fcb4165
commit 9c77398d1c
2 changed files with 11 additions and 4 deletions

View File

@ -457,13 +457,14 @@ namespace llvm {
virtual void EmitCFIRelOffset(int64_t Register, int64_t Offset);
virtual void EmitCFIAdjustCfaOffset(int64_t Adjustment);
virtual void EmitWin64EHFrame(MCSymbol *Symbol, MCSymbol *EHandler = 0);
virtual void EmitWin64EHStartProc(MCSymbol *Symbol, MCSymbol *EHandler = 0);
virtual void EmitWin64EHEndProc();
virtual void EmitWin64EHPushReg(int64_t Register);
virtual void EmitWin64EHSetFrame(int64_t Register, int64_t Offset);
virtual void EmitWin64EHAllocStack(int64_t Size);
virtual void EmitWin64EHSaveReg(int64_t Register, int64_t Offset);
virtual void EmitWin64EHPushFrame(bool Code);
virtual void EmitWin64EHEndProlog(void);
virtual void EmitWin64EHEndProlog();
/// EmitInstruction - Emit the given @p Instruction into the current
/// section.

View File

@ -310,7 +310,13 @@ void MCStreamer::EmitCFISameValue(int64_t Register) {
CurFrame->Instructions.push_back(Instruction);
}
void MCStreamer::EmitWin64EHFrame(MCSymbol *Symbol, MCSymbol *EHandler)
void MCStreamer::EmitWin64EHStartProc(MCSymbol *Symbol, MCSymbol *EHandler)
{
errs() << "Not implemented yet\n";
abort();
}
void MCStreamer::EmitWin64EHEndProc()
{
errs() << "Not implemented yet\n";
abort();
@ -346,7 +352,7 @@ void MCStreamer::EmitWin64EHPushFrame(bool Code)
abort();
}
void MCStreamer::EmitWin64EHEndProlog(void)
void MCStreamer::EmitWin64EHEndProlog()
{
errs() << "Not implemented yet\n";
abort();