diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-10-26 18:09:55 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-10-26 18:09:55 +0000 |
commit | d94f3b4ae9dda383fd88fb1a7db891ebf0228b71 (patch) | |
tree | e58762deecedd70f05aec091ccdf9d4951f3c74e | |
parent | 035b3261ee6d45198a75c194b5a53191367ee2cf (diff) | |
download | bcm5719-llvm-d94f3b4ae9dda383fd88fb1a7db891ebf0228b71.tar.gz bcm5719-llvm-d94f3b4ae9dda383fd88fb1a7db891ebf0228b71.zip |
handle X86::EH_RETURN64 and X86::EH_RETURN.
llvm-svn: 117378
-rw-r--r-- | llvm/lib/Target/X86/X86MCInstLower.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86MCInstLower.cpp b/llvm/lib/Target/X86/X86MCInstLower.cpp index 8f90d872829..03c059528e5 100644 --- a/llvm/lib/Target/X86/X86MCInstLower.cpp +++ b/llvm/lib/Target/X86/X86MCInstLower.cpp @@ -12,6 +12,7 @@ // //===----------------------------------------------------------------------===// +#include "InstPrinter/X86ATTInstPrinter.h" #include "X86MCInstLower.h" #include "X86AsmPrinter.h" #include "X86COFFMachineModuleInfo.h" @@ -415,6 +416,13 @@ ReSimplify: break; } + case X86::EH_RETURN: + case X86::EH_RETURN64: { + OutMI = MCInst(); + OutMI.setOpcode(X86::RET); + break; + } + // TAILJMPd, TAILJMPd64 - Lower to the correct jump instructions. case X86::TAILJMPr: case X86::TAILJMPd: @@ -543,6 +551,15 @@ void X86AsmPrinter::EmitInstruction(const MachineInstr *MI) { OutStreamer.EmitRawText(StringRef("\t#MEMBARRIER")); return; + + case X86::EH_RETURN: + case X86::EH_RETURN64: { + // Lower these as normal, but add some comments. + unsigned Reg = MI->getOperand(0).getReg(); + OutStreamer.AddComment(StringRef("eh_return, addr: %") + + X86ATTInstPrinter::getRegisterName(Reg)); + break; + } case X86::TAILJMPr: case X86::TAILJMPd: case X86::TAILJMPd64: |