summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2012-11-23 16:59:41 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2012-11-23 16:59:41 +0000
commitc8fec7e21f5c24303eab8a8592f3b8faff347d86 (patch)
tree5c9f44272f1e6deecb8b325ab238d5acbbc8f0d4 /include
parent834518f1cea15796a377afb31844638e3c483e78 (diff)
downloadllvm-c8fec7e21f5c24303eab8a8592f3b8faff347d86.tar.gz
llvm-c8fec7e21f5c24303eab8a8592f3b8faff347d86.tar.bz2
llvm-c8fec7e21f5c24303eab8a8592f3b8faff347d86.tar.xz
Implement .cfi_undefined. Based on a patch from PaX team, updated by
Roman Divacky. I just added the testcase. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168520 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/MC/MCDwarf.h4
-rw-r--r--include/llvm/MC/MCStreamer.h1
2 files changed, 3 insertions, 2 deletions
diff --git a/include/llvm/MC/MCDwarf.h b/include/llvm/MC/MCDwarf.h
index 8fc437f3e6..6fa41ae67c 100644
--- a/include/llvm/MC/MCDwarf.h
+++ b/include/llvm/MC/MCDwarf.h
@@ -267,7 +267,7 @@ namespace llvm {
class MCCFIInstruction {
public:
enum OpType { SameValue, RememberState, RestoreState, Move, RelMove, Escape,
- Restore};
+ Restore, Undefined };
private:
OpType Operation;
MCSymbol *Label;
@@ -282,7 +282,7 @@ namespace llvm {
}
MCCFIInstruction(OpType Op, MCSymbol *L, unsigned Register)
: Operation(Op), Label(L), Destination(Register) {
- assert(Op == SameValue || Op == Restore);
+ assert(Op == SameValue || Op == Restore || Op == Undefined);
}
MCCFIInstruction(MCSymbol *L, const MachineLocation &D,
const MachineLocation &S)
diff --git a/include/llvm/MC/MCStreamer.h b/include/llvm/MC/MCStreamer.h
index 230d27ef2e..b5c8008cd6 100644
--- a/include/llvm/MC/MCStreamer.h
+++ b/include/llvm/MC/MCStreamer.h
@@ -515,6 +515,7 @@ namespace llvm {
virtual void EmitCFIAdjustCfaOffset(int64_t Adjustment);
virtual void EmitCFIEscape(StringRef Values);
virtual void EmitCFISignalFrame();
+ virtual void EmitCFIUndefined(int64_t Register);
virtual void EmitWin64EHStartProc(const MCSymbol *Symbol);
virtual void EmitWin64EHEndProc();