diff options
Diffstat (limited to 'llvm/lib/Target/BPF/BPFTargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/BPF/BPFTargetMachine.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/Target/BPF/BPFTargetMachine.cpp b/llvm/lib/Target/BPF/BPFTargetMachine.cpp index 40375bc88bff..54204ee197ec 100644 --- a/llvm/lib/Target/BPF/BPFTargetMachine.cpp +++ b/llvm/lib/Target/BPF/BPFTargetMachine.cpp @@ -35,6 +35,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeBPFTarget() { PassRegistry &PR = *PassRegistry::getPassRegistry(); initializeBPFAbstractMemberAccessPass(PR); + initializeBPFPreserveDITypePass(PR); initializeBPFMIPeepholePass(PR); initializeBPFMIPeepholeTruncElimPass(PR); } @@ -42,9 +43,9 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeBPFTarget() { // DataLayout: little or big endian static std::string computeDataLayout(const Triple &TT) { if (TT.getArch() == Triple::bpfeb) - return "E-m:e-p:64:64-i64:64-n32:64-S128"; + return "E-m:e-p:64:64-i64:64-i128:128-n32:64-S128"; else - return "e-m:e-p:64:64-i64:64-n32:64-S128"; + return "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"; } static Reloc::Model getEffectiveRelocModel(Optional<Reloc::Model> RM) { @@ -63,7 +64,7 @@ BPFTargetMachine::BPFTargetMachine(const Target &T, const Triple &TT, getEffectiveRelocModel(RM), getEffectiveCodeModel(CM, CodeModel::Small), OL), TLOF(std::make_unique<TargetLoweringObjectFileELF>()), - Subtarget(TT, CPU, FS, *this) { + Subtarget(TT, std::string(CPU), std::string(FS), *this) { initAsmInfo(); BPFMCAsmInfo *MAI = @@ -96,6 +97,7 @@ TargetPassConfig *BPFTargetMachine::createPassConfig(PassManagerBase &PM) { void BPFPassConfig::addIRPasses() { addPass(createBPFAbstractMemberAccess(&getBPFTargetMachine())); + addPass(createBPFPreserveDIType()); TargetPassConfig::addIRPasses(); } |