diff options
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/MC/MCObjectFileInfo.cpp | 33 | ||||
-rw-r--r-- | llvm/lib/Object/ModuleSymbolTable.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/Target/TargetLoweringObjectFile.cpp | 4 |
3 files changed, 16 insertions, 23 deletions
diff --git a/llvm/lib/MC/MCObjectFileInfo.cpp b/llvm/lib/MC/MCObjectFileInfo.cpp index 21c5516785e..73288110ad8 100644 --- a/llvm/lib/MC/MCObjectFileInfo.cpp +++ b/llvm/lib/MC/MCObjectFileInfo.cpp @@ -274,7 +274,7 @@ void MCObjectFileInfo::initMachOMCObjectFileInfo(const Triple &T) { TLSExtraDataSection = TLSTLVSection; } -void MCObjectFileInfo::initELFMCObjectFileInfo(const Triple &T) { +void MCObjectFileInfo::initELFMCObjectFileInfo(const Triple &T, bool Large) { switch (T.getArch()) { case Triple::mips: case Triple::mipsel: @@ -286,8 +286,7 @@ void MCObjectFileInfo::initELFMCObjectFileInfo(const Triple &T) { break; case Triple::x86_64: FDECFIEncoding = dwarf::DW_EH_PE_pcrel | - ((CMModel == CodeModel::Large) ? dwarf::DW_EH_PE_sdata8 - : dwarf::DW_EH_PE_sdata4); + (Large ? dwarf::DW_EH_PE_sdata8 : dwarf::DW_EH_PE_sdata4); break; case Triple::bpfel: case Triple::bpfeb: @@ -324,23 +323,18 @@ void MCObjectFileInfo::initELFMCObjectFileInfo(const Triple &T) { break; case Triple::x86_64: if (PositionIndependent) { - PersonalityEncoding = dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel | - ((CMModel == CodeModel::Small || CMModel == CodeModel::Medium) - ? dwarf::DW_EH_PE_sdata4 : dwarf::DW_EH_PE_sdata8); + PersonalityEncoding = + dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel | + (Large ? dwarf::DW_EH_PE_sdata8 : dwarf::DW_EH_PE_sdata4); LSDAEncoding = dwarf::DW_EH_PE_pcrel | - (CMModel == CodeModel::Small - ? dwarf::DW_EH_PE_sdata4 : dwarf::DW_EH_PE_sdata8); + (Large ? dwarf::DW_EH_PE_sdata8 : dwarf::DW_EH_PE_sdata4); TTypeEncoding = dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel | - ((CMModel == CodeModel::Small || CMModel == CodeModel::Medium) - ? dwarf::DW_EH_PE_sdata4 : dwarf::DW_EH_PE_sdata8); + (Large ? dwarf::DW_EH_PE_sdata8 : dwarf::DW_EH_PE_sdata4); } else { PersonalityEncoding = - (CMModel == CodeModel::Small || CMModel == CodeModel::Medium) - ? dwarf::DW_EH_PE_udata4 : dwarf::DW_EH_PE_absptr; - LSDAEncoding = (CMModel == CodeModel::Small) - ? dwarf::DW_EH_PE_udata4 : dwarf::DW_EH_PE_absptr; - TTypeEncoding = (CMModel == CodeModel::Small) - ? dwarf::DW_EH_PE_udata4 : dwarf::DW_EH_PE_absptr; + Large ? dwarf::DW_EH_PE_absptr : dwarf::DW_EH_PE_udata4; + LSDAEncoding = Large ? dwarf::DW_EH_PE_absptr : dwarf::DW_EH_PE_udata4; + TTypeEncoding = Large ? dwarf::DW_EH_PE_absptr : dwarf::DW_EH_PE_udata4; } break; case Triple::hexagon: @@ -849,10 +843,9 @@ void MCObjectFileInfo::initWasmMCObjectFileInfo(const Triple &T) { } void MCObjectFileInfo::InitMCObjectFileInfo(const Triple &TheTriple, bool PIC, - CodeModel::Model cm, - MCContext &ctx) { + MCContext &ctx, + bool LargeCodeModel) { PositionIndependent = PIC; - CMModel = cm; Ctx = &ctx; // Common. @@ -890,7 +883,7 @@ void MCObjectFileInfo::InitMCObjectFileInfo(const Triple &TheTriple, bool PIC, break; case Triple::ELF: Env = IsELF; - initELFMCObjectFileInfo(TT); + initELFMCObjectFileInfo(TT, LargeCodeModel); break; case Triple::Wasm: Env = IsWasm; diff --git a/llvm/lib/Object/ModuleSymbolTable.cpp b/llvm/lib/Object/ModuleSymbolTable.cpp index f2e7a218c13..64446525b91 100644 --- a/llvm/lib/Object/ModuleSymbolTable.cpp +++ b/llvm/lib/Object/ModuleSymbolTable.cpp @@ -175,7 +175,7 @@ void ModuleSymbolTable::CollectAsmSymbols( MCObjectFileInfo MOFI; MCContext MCCtx(MAI.get(), MRI.get(), &MOFI); - MOFI.InitMCObjectFileInfo(TT, /*PIC*/ false, CodeModel::Default, MCCtx); + MOFI.InitMCObjectFileInfo(TT, /*PIC*/ false, MCCtx); RecordStreamer Streamer(MCCtx); T->createNullTargetStreamer(Streamer); diff --git a/llvm/lib/Target/TargetLoweringObjectFile.cpp b/llvm/lib/Target/TargetLoweringObjectFile.cpp index f941891f318..6417542e115 100644 --- a/llvm/lib/Target/TargetLoweringObjectFile.cpp +++ b/llvm/lib/Target/TargetLoweringObjectFile.cpp @@ -46,8 +46,8 @@ void TargetLoweringObjectFile::Initialize(MCContext &ctx, // `Initialize` can be called more than once. delete Mang; Mang = new Mangler(); - InitMCObjectFileInfo(TM.getTargetTriple(), TM.isPositionIndependent(), - TM.getCodeModel(), *Ctx); + InitMCObjectFileInfo(TM.getTargetTriple(), TM.isPositionIndependent(), *Ctx, + TM.getCodeModel() == CodeModel::Large); } TargetLoweringObjectFile::~TargetLoweringObjectFile() { |