Index: include/llvm/MC/MCObjectFileInfo.h =================================================================== --- include/llvm/MC/MCObjectFileInfo.h +++ include/llvm/MC/MCObjectFileInfo.h @@ -191,8 +191,8 @@ MCSection *SXDataSection; public: - void InitMCObjectFileInfo(const Triple &TT, bool PIC, CodeModel::Model CM, - MCContext &ctx); + void InitMCObjectFileInfo(const Triple &TT, bool PIC, MCContext &ctx, + bool LargeCodeModel = false); bool getSupportsWeakOmittedEHFrame() const { return SupportsWeakOmittedEHFrame; @@ -350,12 +350,11 @@ private: Environment Env; bool PositionIndependent; - CodeModel::Model CMModel; MCContext *Ctx; Triple TT; void initMachOMCObjectFileInfo(const Triple &T); - void initELFMCObjectFileInfo(const Triple &T); + void initELFMCObjectFileInfo(const Triple &T, bool Large); void initCOFFMCObjectFileInfo(const Triple &T); void initWasmMCObjectFileInfo(const Triple &T); Index: lib/MC/MCObjectFileInfo.cpp =================================================================== --- lib/MC/MCObjectFileInfo.cpp +++ lib/MC/MCObjectFileInfo.cpp @@ -274,7 +274,7 @@ 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 @@ 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 @@ 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::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 @@ break; case Triple::ELF: Env = IsELF; - initELFMCObjectFileInfo(TT); + initELFMCObjectFileInfo(TT, LargeCodeModel); break; case Triple::Wasm: Env = IsWasm; Index: lib/Object/ModuleSymbolTable.cpp =================================================================== --- lib/Object/ModuleSymbolTable.cpp +++ lib/Object/ModuleSymbolTable.cpp @@ -175,7 +175,7 @@ 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); Index: lib/Target/TargetLoweringObjectFile.cpp =================================================================== --- lib/Target/TargetLoweringObjectFile.cpp +++ lib/Target/TargetLoweringObjectFile.cpp @@ -46,8 +46,8 @@ // `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() { Index: test/ExecutionEngine/RuntimeDyld/AArch64/MachO_ARM64_relocations.s =================================================================== --- test/ExecutionEngine/RuntimeDyld/AArch64/MachO_ARM64_relocations.s +++ test/ExecutionEngine/RuntimeDyld/AArch64/MachO_ARM64_relocations.s @@ -1,4 +1,4 @@ -# RUN: llvm-mc -triple=arm64-apple-ios7.0.0 -code-model=small -filetype=obj -o %T/foo.o %s +# RUN: llvm-mc -triple=arm64-apple-ios7.0.0 -filetype=obj -o %T/foo.o %s # RUN: llvm-rtdyld -triple=arm64-apple-ios7.0.0 -map-section foo.o,__text=0x10bc0 -verify -check=%s %/T/foo.o .section __TEXT,__text,regular,pure_instructions Index: test/ExecutionEngine/RuntimeDyld/Mips/ELF_Mips64r2N64_PIC_relocations.s =================================================================== --- test/ExecutionEngine/RuntimeDyld/Mips/ELF_Mips64r2N64_PIC_relocations.s +++ test/ExecutionEngine/RuntimeDyld/Mips/ELF_Mips64r2N64_PIC_relocations.s @@ -1,8 +1,8 @@ -# RUN: llvm-mc -triple=mips64el-unknown-linux -code-model=small -filetype=obj -o %T/test_ELF_Mips64N64.o %s +# RUN: llvm-mc -triple=mips64el-unknown-linux -filetype=obj -o %T/test_ELF_Mips64N64.o %s # RUN: llc -mtriple=mips64el-unknown-linux -filetype=obj -o %T/test_ELF_ExternalFunction_Mips64N64.o %S/Inputs/ExternalFunction.ll # RUN: llvm-rtdyld -triple=mips64el-unknown-linux -verify -map-section test_ELF_Mips64N64.o,.text=0x1000 -map-section test_ELF_ExternalFunction_Mips64N64.o,.text=0x10000 -check=%s %/T/test_ELF_Mips64N64.o %T/test_ELF_ExternalFunction_Mips64N64.o -# RUN: llvm-mc -triple=mips64-unknown-linux -code-model=small -filetype=obj -o %T/test_ELF_Mips64N64.o %s +# RUN: llvm-mc -triple=mips64-unknown-linux -filetype=obj -o %T/test_ELF_Mips64N64.o %s # RUN: llc -mtriple=mips64-unknown-linux -filetype=obj -o %T/test_ELF_ExternalFunction_Mips64N64.o %S/Inputs/ExternalFunction.ll # RUN: llvm-rtdyld -triple=mips64-unknown-linux -verify -map-section test_ELF_Mips64N64.o,.text=0x1000 -map-section test_ELF_ExternalFunction_Mips64N64.o,.text=0x10000 -check=%s %/T/test_ELF_Mips64N64.o %T/test_ELF_ExternalFunction_Mips64N64.o Index: test/ExecutionEngine/RuntimeDyld/Mips/ELF_N32_relocations.s =================================================================== --- test/ExecutionEngine/RuntimeDyld/Mips/ELF_N32_relocations.s +++ test/ExecutionEngine/RuntimeDyld/Mips/ELF_N32_relocations.s @@ -1,8 +1,8 @@ -# RUN: llvm-mc -triple=mips64el-unknown-linux -target-abi n32 -code-model=small -filetype=obj -o %T/test_ELF_N32.o %s +# RUN: llvm-mc -triple=mips64el-unknown-linux -target-abi n32 -filetype=obj -o %T/test_ELF_N32.o %s # RUN: llc -mtriple=mips64el-unknown-linux -target-abi n32 -filetype=obj -o %T/test_ELF_ExternalFunction_N32.o %S/Inputs/ExternalFunction.ll # RUN: llvm-rtdyld -triple=mips64el-unknown-linux -verify -map-section test_ELF_N32.o,.text=0x1000 -map-section test_ELF_ExternalFunction_N32.o,.text=0x10000 -check=%s %/T/test_ELF_N32.o %T/test_ELF_ExternalFunction_N32.o -# RUN: llvm-mc -triple=mips64-unknown-linux -target-abi n32 -code-model=small -filetype=obj -o %T/test_ELF_N32.o %s +# RUN: llvm-mc -triple=mips64-unknown-linux -target-abi n32 -filetype=obj -o %T/test_ELF_N32.o %s # RUN: llc -mtriple=mips64-unknown-linux -target-abi n32 -filetype=obj -o %T/test_ELF_ExternalFunction_N32.o %S/Inputs/ExternalFunction.ll # RUN: llvm-rtdyld -triple=mips64-unknown-linux -verify -map-section test_ELF_N32.o,.text=0x1000 -map-section test_ELF_ExternalFunction_N32.o,.text=0x10000 -check=%s %/T/test_ELF_N32.o %T/test_ELF_ExternalFunction_N32.o Index: test/ExecutionEngine/RuntimeDyld/Mips/ELF_N64R6_relocations.s =================================================================== --- test/ExecutionEngine/RuntimeDyld/Mips/ELF_N64R6_relocations.s +++ test/ExecutionEngine/RuntimeDyld/Mips/ELF_N64R6_relocations.s @@ -1,8 +1,8 @@ -# RUN: llvm-mc -triple=mips64el-unknown-linux -mcpu=mips64r6 -code-model=small -filetype=obj -o %T/test_ELF_N64R6.o %s +# RUN: llvm-mc -triple=mips64el-unknown-linux -mcpu=mips64r6 -filetype=obj -o %T/test_ELF_N64R6.o %s # RUN: llc -mtriple=mips64el-unknown-linux -mcpu=mips64r6 -filetype=obj -o %T/test_ELF_ExternalFunction_N64R6.o %S/Inputs/ExternalFunction.ll # RUN: llvm-rtdyld -triple=mips64el-unknown-linux -mcpu=mips64r6 -verify -map-section test_ELF_N64R6.o,.text=0x1000 -map-section test_ELF_ExternalFunction_N64R6.o,.text=0x10000 -check=%s %/T/test_ELF_N64R6.o %T/test_ELF_ExternalFunction_N64R6.o -# RUN: llvm-mc -triple=mips64-unknown-linux -mcpu=mips64r6 -code-model=small -filetype=obj -o %T/test_ELF_N64R6.o %s +# RUN: llvm-mc -triple=mips64-unknown-linux -mcpu=mips64r6 -filetype=obj -o %T/test_ELF_N64R6.o %s # RUN: llc -mtriple=mips64-unknown-linux -mcpu=mips64r6 -filetype=obj -o %T/test_ELF_ExternalFunction_N64R6.o %S/Inputs/ExternalFunction.ll # RUN: llvm-rtdyld -triple=mips64-unknown-linux -mcpu=mips64r6 -verify -map-section test_ELF_N64R6.o,.text=0x1000 -map-section test_ELF_ExternalFunction_N64R6.o,.text=0x10000 -check=%s %/T/test_ELF_N64R6.o %T/test_ELF_ExternalFunction_N64R6.o Index: test/ExecutionEngine/RuntimeDyld/Mips/ELF_O32R6_relocations.s =================================================================== --- test/ExecutionEngine/RuntimeDyld/Mips/ELF_O32R6_relocations.s +++ test/ExecutionEngine/RuntimeDyld/Mips/ELF_O32R6_relocations.s @@ -1,8 +1,8 @@ -# RUN: llvm-mc -triple=mipsel-unknown-linux -mcpu=mips32r6 -code-model=small -filetype=obj -o %T/test_ELF_O32R6.o %s +# RUN: llvm-mc -triple=mipsel-unknown-linux -mcpu=mips32r6 -filetype=obj -o %T/test_ELF_O32R6.o %s # RUN: llc -mtriple=mipsel-unknown-linux -mcpu=mips32r6 -filetype=obj -o %T/test_ELF_ExternalFunction_O32R6.o %S/Inputs/ExternalFunction.ll # RUN: llvm-rtdyld -triple=mipsel-unknown-linux -mcpu=mips32r6 -verify -map-section test_ELF_O32R6.o,.text=0x1000 -map-section test_ELF_ExternalFunction_O32R6.o,.text=0x10000 -check=%s %/T/test_ELF_O32R6.o %T/test_ELF_ExternalFunction_O32R6.o -# RUN: llvm-mc -triple=mips-unknown-linux -mcpu=mips32r6 -code-model=small -filetype=obj -o %T/test_ELF_O32R6.o %s +# RUN: llvm-mc -triple=mips-unknown-linux -mcpu=mips32r6 -filetype=obj -o %T/test_ELF_O32R6.o %s # RUN: llc -mtriple=mips-unknown-linux -mcpu=mips32r6 -filetype=obj -o %T/test_ELF_ExternalFunction_O32R6.o %S/Inputs/ExternalFunction.ll # RUN: llvm-rtdyld -triple=mips-unknown-linux -mcpu=mips32r6 -verify -map-section test_ELF_O32R6.o,.text=0x1000 -map-section test_ELF_ExternalFunction_O32R6.o,.text=0x10000 -check=%s %/T/test_ELF_O32R6.o %T/test_ELF_ExternalFunction_O32R6.o Index: test/ExecutionEngine/RuntimeDyld/Mips/ELF_O32_PIC_relocations.s =================================================================== --- test/ExecutionEngine/RuntimeDyld/Mips/ELF_O32_PIC_relocations.s +++ test/ExecutionEngine/RuntimeDyld/Mips/ELF_O32_PIC_relocations.s @@ -1,8 +1,8 @@ -# RUN: llvm-mc -triple=mipsel-unknown-linux -code-model=small -filetype=obj -o %T/test_ELF_O32.o %s +# RUN: llvm-mc -triple=mipsel-unknown-linux -filetype=obj -o %T/test_ELF_O32.o %s # RUN: llc -mtriple=mipsel-unknown-linux -filetype=obj -o %T/test_ELF_ExternalFunction_O32.o %S/Inputs/ExternalFunction.ll # RUN: llvm-rtdyld -triple=mipsel-unknown-linux -verify -map-section test_ELF_O32.o,""=0x7FF8 -map-section test_ELF_O32.o,.text=0x1000 -map-section test_ELF_ExternalFunction_O32.o,.text=0x10000 -check=%s %T/test_ELF_O32.o %T/test_ELF_ExternalFunction_O32.o -# RUN: llvm-mc -triple=mips-unknown-linux -code-model=small -filetype=obj -o %T/test_ELF_O32.o %s +# RUN: llvm-mc -triple=mips-unknown-linux -filetype=obj -o %T/test_ELF_O32.o %s # RUN: llc -mtriple=mips-unknown-linux -filetype=obj -o %/T/test_ELF_ExternalFunction_O32.o %S/Inputs/ExternalFunction.ll # RUN: llvm-rtdyld -triple=mips-unknown-linux -verify -map-section test_ELF_O32.o,""=0x7FF8 -map-section test_ELF_O32.o,.text=0x1000 -map-section test_ELF_ExternalFunction_O32.o,.text=0x10000 -check=%s %T/test_ELF_O32.o %T/test_ELF_ExternalFunction_O32.o Index: test/ExecutionEngine/RuntimeDyld/X86/ELF_x86-64_PIC-small-relocations.s =================================================================== --- test/ExecutionEngine/RuntimeDyld/X86/ELF_x86-64_PIC-small-relocations.s +++ test/ExecutionEngine/RuntimeDyld/X86/ELF_x86-64_PIC-small-relocations.s @@ -1,4 +1,4 @@ -# RUN: llvm-mc -triple=x86_64-unknown-freebsd -code-model=small -filetype=obj -o %T/testsmall_x86-64.o %s +# RUN: llvm-mc -triple=x86_64-unknown-freebsd -filetype=obj -o %T/testsmall_x86-64.o %s # RUN: llvm-rtdyld -triple=x86_64-unknown-freebsd -verify -check=%s %/T/testsmall_x86-64.o .globl foo Index: test/MC/ELF/cfi-large-model.s =================================================================== --- test/MC/ELF/cfi-large-model.s +++ test/MC/ELF/cfi-large-model.s @@ -1,4 +1,4 @@ -// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -code-model=large %s \ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -large-code-model %s \ // RUN: -o - | llvm-readobj -s -sd | FileCheck %s // CHECK: Section { Index: tools/dsymutil/DwarfLinker.cpp =================================================================== --- tools/dsymutil/DwarfLinker.cpp +++ tools/dsymutil/DwarfLinker.cpp @@ -591,7 +591,7 @@ MOFI.reset(new MCObjectFileInfo); MC.reset(new MCContext(MAI.get(), MRI.get(), MOFI.get())); - MOFI->InitMCObjectFileInfo(TheTriple, /*PIC*/ false, CodeModel::Default, *MC); + MOFI->InitMCObjectFileInfo(TheTriple, /*PIC*/ false, *MC); MCTargetOptions Options; MAB = TheTarget->createMCAsmBackend(*MRI, TripleName, "", Options); Index: tools/llvm-dwp/llvm-dwp.cpp =================================================================== --- tools/llvm-dwp/llvm-dwp.cpp +++ tools/llvm-dwp/llvm-dwp.cpp @@ -642,7 +642,7 @@ MCObjectFileInfo MOFI; MCContext MC(MAI.get(), MRI.get(), &MOFI); - MOFI.InitMCObjectFileInfo(TheTriple, /*PIC*/ false, CodeModel::Default, MC); + MOFI.InitMCObjectFileInfo(TheTriple, /*PIC*/ false, MC); MCTargetOptions Options; auto MAB = TheTarget->createMCAsmBackend(*MRI, TripleName, "", Options); Index: tools/llvm-mc/llvm-mc.cpp =================================================================== --- tools/llvm-mc/llvm-mc.cpp +++ tools/llvm-mc/llvm-mc.cpp @@ -131,20 +131,10 @@ static cl::opt PIC("position-independent", cl::desc("Position independent"), cl::init(false)); -static cl::opt -CMModel("code-model", - cl::desc("Choose code model"), - cl::init(CodeModel::Default), - cl::values(clEnumValN(CodeModel::Default, "default", - "Target default code model"), - clEnumValN(CodeModel::Small, "small", - "Small code model"), - clEnumValN(CodeModel::Kernel, "kernel", - "Kernel code model"), - clEnumValN(CodeModel::Medium, "medium", - "Medium code model"), - clEnumValN(CodeModel::Large, "large", - "Large code model"))); +static cl::opt + LargeCodeModel("large-code-model", + cl::desc("Create cfi directives that assume the code might " + "be more than 2gb away")); static cl::opt NoInitialTextSection("n", cl::desc("Don't assume assembly file starts " @@ -506,7 +496,7 @@ // MCObjectFileInfo needs a MCContext reference in order to initialize itself. MCObjectFileInfo MOFI; MCContext Ctx(MAI.get(), MRI.get(), &MOFI, &SrcMgr); - MOFI.InitMCObjectFileInfo(TheTriple, PIC, CMModel, Ctx); + MOFI.InitMCObjectFileInfo(TheTriple, PIC, Ctx, LargeCodeModel); if (SaveTempLabels) Ctx.setAllowTemporaryLabels(false); Index: tools/llvm-objdump/llvm-objdump.cpp =================================================================== --- tools/llvm-objdump/llvm-objdump.cpp +++ tools/llvm-objdump/llvm-objdump.cpp @@ -1223,7 +1223,7 @@ MCObjectFileInfo MOFI; MCContext Ctx(AsmInfo.get(), MRI.get(), &MOFI); // FIXME: for now initialize MCObjectFileInfo with default values - MOFI.InitMCObjectFileInfo(Triple(TripleName), false, CodeModel::Default, Ctx); + MOFI.InitMCObjectFileInfo(Triple(TripleName), false, Ctx); std::unique_ptr DisAsm( TheTarget->createMCDisassembler(*STI, Ctx)); Index: unittests/DebugInfo/DWARF/DwarfGenerator.cpp =================================================================== --- unittests/DebugInfo/DWARF/DwarfGenerator.cpp +++ unittests/DebugInfo/DWARF/DwarfGenerator.cpp @@ -153,7 +153,7 @@ MOFI.reset(new MCObjectFileInfo); MC.reset(new MCContext(MAI.get(), MRI.get(), MOFI.get())); - MOFI->InitMCObjectFileInfo(TheTriple, /*PIC*/ false, CodeModel::Default, *MC); + MOFI->InitMCObjectFileInfo(TheTriple, /*PIC*/ false, *MC); MCTargetOptions Options; MAB = TheTarget->createMCAsmBackend(*MRI, TripleName, "", Options);