diff options
| author | Chris Lattner <sabre@nondot.org> | 2010-03-11 00:22:57 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2010-03-11 00:22:57 +0000 | 
| commit | a179e4d0a8029bb4004d92343fb2c110f77060d7 (patch) | |
| tree | 0c2f2ffe1996549308d8b14a9ada2f7fc326b6fc /llvm/lib/Target/X86/X86RegisterInfo.cpp | |
| parent | aa87b4eab1ad673ec2cb5189e2cfc5776b2b35c8 (diff) | |
| download | bcm5719-llvm-a179e4d0a8029bb4004d92343fb2c110f77060d7.tar.gz bcm5719-llvm-a179e4d0a8029bb4004d92343fb2c110f77060d7.zip | |
add support, testcases, and dox for the new GHC calling
convention.  Patch by David Terei!
llvm-svn: 98212
Diffstat (limited to 'llvm/lib/Target/X86/X86RegisterInfo.cpp')
| -rw-r--r-- | llvm/lib/Target/X86/X86RegisterInfo.cpp | 11 | 
1 files changed, 10 insertions, 1 deletions
| diff --git a/llvm/lib/Target/X86/X86RegisterInfo.cpp b/llvm/lib/Target/X86/X86RegisterInfo.cpp index cdb579c5387..3c087bdeb98 100644 --- a/llvm/lib/Target/X86/X86RegisterInfo.cpp +++ b/llvm/lib/Target/X86/X86RegisterInfo.cpp @@ -294,13 +294,20 @@ X86RegisterInfo::getCrossCopyRegClass(const TargetRegisterClass *RC) const {  const unsigned *  X86RegisterInfo::getCalleeSavedRegs(const MachineFunction *MF) const {    bool callsEHReturn = false; +  bool ghcCall = false;    if (MF) {      const MachineFrameInfo *MFI = MF->getFrameInfo();      const MachineModuleInfo *MMI = MFI->getMachineModuleInfo();      callsEHReturn = (MMI ? MMI->callsEHReturn() : false); +    const Function *F = MF->getFunction(); +    ghcCall = (F ? F->getCallingConv() == CallingConv::GHC : false);    } +  static const unsigned GhcCalleeSavedRegs[] = { +    0 +  }; +    static const unsigned CalleeSavedRegs32Bit[] = {      X86::ESI, X86::EDI, X86::EBX, X86::EBP,  0    }; @@ -326,7 +333,9 @@ X86RegisterInfo::getCalleeSavedRegs(const MachineFunction *MF) const {      X86::XMM14, X86::XMM15, 0    }; -  if (Is64Bit) { +  if (ghcCall) { +    return GhcCalleeSavedRegs; +  } else if (Is64Bit) {      if (IsWin64)        return CalleeSavedRegsWin64;      else | 

