diff options
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/X86FastISel.cpp | 10 | 
1 files changed, 8 insertions, 2 deletions
| diff --git a/llvm/lib/Target/X86/X86FastISel.cpp b/llvm/lib/Target/X86/X86FastISel.cpp index 5d71eac7c05..2269f3fa895 100644 --- a/llvm/lib/Target/X86/X86FastISel.cpp +++ b/llvm/lib/Target/X86/X86FastISel.cpp @@ -3224,7 +3224,10 @@ unsigned X86FastISel::X86MaterializeGV(const GlobalValue *GV, MVT VT) {                ResultReg)          .addGlobalAddress(GV);      } else { -      unsigned Opc = TLI.getPointerTy() == MVT::i32 ? X86::LEA32r : X86::LEA64r; +      unsigned Opc = TLI.getPointerTy() == MVT::i32 +                     ? (Subtarget->isTarget64BitILP32() +                        ? X86::LEA64_32r : X86::LEA32r) +                     : X86::LEA64r;        addFullAddress(BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc,                               TII.get(Opc), ResultReg), AM);      } @@ -3266,7 +3269,10 @@ unsigned X86FastISel::fastMaterializeAlloca(const AllocaInst *C) {    X86AddressMode AM;    if (!X86SelectAddress(C, AM))      return 0; -  unsigned Opc = TLI.getPointerTy() == MVT::i32 ? X86::LEA32r : X86::LEA64r; +  unsigned Opc = TLI.getPointerTy() == MVT::i32 +                 ? (Subtarget->isTarget64BitILP32() +                    ? X86::LEA64_32r : X86::LEA32r) +                 : X86::LEA64r;    const TargetRegisterClass* RC = TLI.getRegClassFor(TLI.getPointerTy());    unsigned ResultReg = createResultReg(RC);    addFullAddress(BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, | 

