diff options
Diffstat (limited to 'lib/CodeGen/GlobalISel/CallLowering.cpp')
| -rw-r--r-- | lib/CodeGen/GlobalISel/CallLowering.cpp | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/CodeGen/GlobalISel/CallLowering.cpp b/lib/CodeGen/GlobalISel/CallLowering.cpp index be0c5c2bb70e..114c068749eb 100644 --- a/lib/CodeGen/GlobalISel/CallLowering.cpp +++ b/lib/CodeGen/GlobalISel/CallLowering.cpp @@ -16,10 +16,10 @@  #include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"  #include "llvm/CodeGen/MachineOperand.h"  #include "llvm/CodeGen/MachineRegisterInfo.h" +#include "llvm/CodeGen/TargetLowering.h"  #include "llvm/IR/DataLayout.h"  #include "llvm/IR/Instructions.h"  #include "llvm/IR/Module.h" -#include "llvm/Target/TargetLowering.h"  using namespace llvm; @@ -108,7 +108,7 @@ bool CallLowering::handleAssignments(MachineIRBuilder &MIRBuilder,                                       ArrayRef<ArgInfo> Args,                                       ValueHandler &Handler) const {    MachineFunction &MF = MIRBuilder.getMF(); -  const Function &F = *MF.getFunction(); +  const Function &F = MF.getFunction();    const DataLayout &DL = F.getParent()->getDataLayout();    SmallVector<CCValAssign, 16> ArgLocs; @@ -160,10 +160,11 @@ unsigned CallLowering::ValueHandler::extendRegister(unsigned ValReg,      // FIXME: bitconverting between vector types may or may not be a      // nop in big-endian situations.      return ValReg; -  case CCValAssign::AExt: +  case CCValAssign::AExt: {      assert(!VA.getLocVT().isVector() && "unexpected vector extend"); -    // Otherwise, it's a nop. -    return ValReg; +    auto MIB = MIRBuilder.buildAnyExt(LocTy, ValReg); +    return MIB->getOperand(0).getReg(); +  }    case CCValAssign::SExt: {      unsigned NewReg = MRI.createGenericVirtualRegister(LocTy);      MIRBuilder.buildSExt(NewReg, ValReg);  | 
