diff options
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/CallingConvLower.cpp | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/CallingConvLower.cpp b/llvm/lib/CodeGen/CallingConvLower.cpp index bfb6ba10234..d9cadf090f5 100644 --- a/llvm/lib/CodeGen/CallingConvLower.cpp +++ b/llvm/lib/CodeGen/CallingConvLower.cpp @@ -48,8 +48,13 @@ void CCState::HandleByVal(unsigned ValNo, MVT ValVT,    if (MinAlign > (int)Align)      Align = MinAlign;    TM.getTargetLowering()->HandleByVal(const_cast<CCState*>(this), Size); -  unsigned Offset = AllocateStack(Size, Align); -  addLoc(CCValAssign::getMem(ValNo, ValVT, Offset, LocVT, LocInfo)); +  if (Size) { +    unsigned Offset = AllocateStack(Size, Align); +    addLoc(CCValAssign::getMem(ValNo, ValVT, Offset, LocVT, LocInfo)); +  } else { +    addLoc(CCValAssign::getReg(ValNo, ValVT, getFirstByValReg(), LocVT, +                               LocInfo)); +  }  }  /// MarkAllocated - Mark a register and all of its aliases as allocated.  | 

