diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2011-12-29 21:43:03 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2011-12-29 21:43:03 +0000 |
commit | ed23bdb65fe86cdb7a38c8c1998ec965e6973966 (patch) | |
tree | 711101bb120aec9cb2c5d824bbfb9a4bdd964244 /include/llvm/MC | |
parent | c25680f728f89dd43939b00049ee524fbf59b7be (diff) | |
download | external_llvm-ed23bdb65fe86cdb7a38c8c1998ec965e6973966.zip external_llvm-ed23bdb65fe86cdb7a38c8c1998ec965e6973966.tar.gz external_llvm-ed23bdb65fe86cdb7a38c8c1998ec965e6973966.tar.bz2 |
Implement cfi_restore. Patch by Brian Anderson!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147356 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/MC')
-rw-r--r-- | include/llvm/MC/MCDwarf.h | 5 | ||||
-rw-r--r-- | include/llvm/MC/MCStreamer.h | 1 |
2 files changed, 4 insertions, 2 deletions
diff --git a/include/llvm/MC/MCDwarf.h b/include/llvm/MC/MCDwarf.h index 56d732c..bca50b2 100644 --- a/include/llvm/MC/MCDwarf.h +++ b/include/llvm/MC/MCDwarf.h @@ -271,7 +271,8 @@ namespace llvm { class MCCFIInstruction { public: - enum OpType { SameValue, RememberState, RestoreState, Move, RelMove, Escape }; + enum OpType { SameValue, RememberState, RestoreState, Move, RelMove, Escape, + Restore}; private: OpType Operation; MCSymbol *Label; @@ -286,7 +287,7 @@ namespace llvm { } MCCFIInstruction(OpType Op, MCSymbol *L, unsigned Register) : Operation(Op), Label(L), Destination(Register) { - assert(Op == SameValue); + assert(Op == SameValue || Op == Restore); } MCCFIInstruction(MCSymbol *L, const MachineLocation &D, const MachineLocation &S) diff --git a/include/llvm/MC/MCStreamer.h b/include/llvm/MC/MCStreamer.h index 5483fb0..e550dfa 100644 --- a/include/llvm/MC/MCStreamer.h +++ b/include/llvm/MC/MCStreamer.h @@ -547,6 +547,7 @@ namespace llvm { virtual void EmitCFIRememberState(); virtual void EmitCFIRestoreState(); virtual void EmitCFISameValue(int64_t Register); + virtual void EmitCFIRestore(int64_t Register); virtual void EmitCFIRelOffset(int64_t Register, int64_t Offset); virtual void EmitCFIAdjustCfaOffset(int64_t Adjustment); virtual void EmitCFIEscape(StringRef Values); |