diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index c15dc0be0b15..a2261660eab8 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -407,14 +407,14 @@ getCodeModel(const CodeGenOptions &CodeGenOpts) { return static_cast(CodeModel); } -static TargetMachine::CodeGenFileType getCodeGenFileType(BackendAction Action) { +static CodeGenFileType getCodeGenFileType(BackendAction Action) { if (Action == Backend_EmitObj) - return TargetMachine::CGFT_ObjectFile; + return CGFT_ObjectFile; else if (Action == Backend_EmitMCNull) - return TargetMachine::CGFT_Null; + return CGFT_Null; else { assert(Action == Backend_EmitAssembly && "Invalid action!"); - return TargetMachine::CGFT_AssemblyFile; + return CGFT_AssemblyFile; } } @@ -788,7 +788,7 @@ bool EmitAssemblyHelper::AddEmitPasses(legacy::PassManager &CodeGenPasses, // Normal mode, emit a .s or .o file by running the code generator. Note, // this also adds codegenerator level optimization passes. - TargetMachine::CodeGenFileType CGFT = getCodeGenFileType(Action); + CodeGenFileType CGFT = getCodeGenFileType(Action); // Add ObjC ARC final-cleanup optimizations. This is done as part of the // "codegen" passes so that it isn't run multiple times when there is diff --git a/llvm/docs/tutorial/MyFirstLanguageFrontend/LangImpl08.rst b/llvm/docs/tutorial/MyFirstLanguageFrontend/LangImpl08.rst index a794b46c71ac..bd730fea6935 100644 --- a/llvm/docs/tutorial/MyFirstLanguageFrontend/LangImpl08.rst +++ b/llvm/docs/tutorial/MyFirstLanguageFrontend/LangImpl08.rst @@ -157,7 +157,7 @@ pass: .. code-block:: c++ legacy::PassManager pass; - auto FileType = TargetMachine::CGFT_ObjectFile; + auto FileType = CGFT_ObjectFile; if (TargetMachine->addPassesToEmitFile(pass, dest, nullptr, FileType)) { errs() << "TargetMachine can't emit a file of this type"; diff --git a/llvm/examples/Kaleidoscope/Chapter8/toy.cpp b/llvm/examples/Kaleidoscope/Chapter8/toy.cpp index 8c46e4466588..2da3b602b62f 100644 --- a/llvm/examples/Kaleidoscope/Chapter8/toy.cpp +++ b/llvm/examples/Kaleidoscope/Chapter8/toy.cpp @@ -1253,7 +1253,7 @@ int main() { } legacy::PassManager pass; - auto FileType = TargetMachine::CGFT_ObjectFile; + auto FileType = CGFT_ObjectFile; if (TheTargetMachine->addPassesToEmitFile(pass, dest, nullptr, FileType)) { errs() << "TheTargetMachine can't emit a file of this type"; diff --git a/llvm/include/llvm/CodeGen/CommandFlags.inc b/llvm/include/llvm/CodeGen/CommandFlags.inc index 16b7028ce532..f1b3afbb44ae 100644 --- a/llvm/include/llvm/CodeGen/CommandFlags.inc +++ b/llvm/include/llvm/CodeGen/CommandFlags.inc @@ -102,15 +102,15 @@ static cl::opt ExceptionModel( clEnumValN(ExceptionHandling::Wasm, "wasm", "WebAssembly exception handling"))); -static cl::opt FileType( - "filetype", cl::init(TargetMachine::CGFT_AssemblyFile), +static cl::opt FileType( + "filetype", cl::init(CGFT_AssemblyFile), cl::desc( "Choose a file type (not all types are supported by all targets):"), - cl::values(clEnumValN(TargetMachine::CGFT_AssemblyFile, "asm", + cl::values(clEnumValN(CGFT_AssemblyFile, "asm", "Emit an assembly ('.s') file"), - clEnumValN(TargetMachine::CGFT_ObjectFile, "obj", + clEnumValN(CGFT_ObjectFile, "obj", "Emit a native object ('.o') file"), - clEnumValN(TargetMachine::CGFT_Null, "null", + clEnumValN(CGFT_Null, "null", "Emit nothing, for performance testing"))); static cl::opt FramePointerUsage( diff --git a/llvm/include/llvm/CodeGen/ParallelCG.h b/llvm/include/llvm/CodeGen/ParallelCG.h index a44715d4fc4f..b4c761c2269e 100644 --- a/llvm/include/llvm/CodeGen/ParallelCG.h +++ b/llvm/include/llvm/CodeGen/ParallelCG.h @@ -39,7 +39,7 @@ std::unique_ptr splitCodeGen(std::unique_ptr M, ArrayRef OSs, ArrayRef BCOSs, const std::function()> &TMFactory, - TargetMachine::CodeGenFileType FileType = TargetMachine::CGFT_ObjectFile, + CodeGenFileType FileType = CGFT_ObjectFile, bool PreserveLocals = false); } // namespace llvm diff --git a/llvm/include/llvm/LTO/Config.h b/llvm/include/llvm/LTO/Config.h index daa6585b1113..754e3126f8a9 100644 --- a/llvm/include/llvm/LTO/Config.h +++ b/llvm/include/llvm/LTO/Config.h @@ -15,8 +15,8 @@ #define LLVM_LTO_CONFIG_H #include "llvm/IR/DiagnosticInfo.h" +#include "llvm/IR/LLVMContext.h" #include "llvm/Support/CodeGen.h" -#include "llvm/Target/TargetMachine.h" #include "llvm/Target/TargetOptions.h" #include @@ -41,7 +41,7 @@ struct Config { Optional RelocModel = Reloc::PIC_; Optional CodeModel = None; CodeGenOpt::Level CGOptLevel = CodeGenOpt::Default; - TargetMachine::CodeGenFileType CGFileType = TargetMachine::CGFT_ObjectFile; + CodeGenFileType CGFileType = CGFT_ObjectFile; unsigned OptLevel = 2; bool DisableVerify = false; diff --git a/llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h b/llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h index 8718df4b88e6..fd77b18fb88b 100644 --- a/llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h +++ b/llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h @@ -87,8 +87,8 @@ struct LTOCodeGenerator { void setCodePICModel(Optional Model) { RelocModel = Model; } /// Set the file type to be emitted (assembly or object code). - /// The default is TargetMachine::CGFT_ObjectFile. - void setFileType(TargetMachine::CodeGenFileType FT) { FileType = FT; } + /// The default is CGFT_ObjectFile. + void setFileType(CodeGenFileType FT) { FileType = FT; } void setCpu(StringRef MCpu) { this->MCpu = MCpu; } void setAttr(StringRef MAttr) { this->MAttr = MAttr; } @@ -238,7 +238,7 @@ private: bool ShouldInternalize = EnableLTOInternalization; bool ShouldEmbedUselists = false; bool ShouldRestoreGlobalsLinkage = false; - TargetMachine::CodeGenFileType FileType = TargetMachine::CGFT_ObjectFile; + CodeGenFileType FileType = CGFT_ObjectFile; std::unique_ptr DiagnosticOutputFile; bool Freestanding = false; std::unique_ptr StatsFile = nullptr; diff --git a/llvm/include/llvm/Support/CodeGen.h b/llvm/include/llvm/Support/CodeGen.h index a3f423e558cf..e2aa2b68b9d2 100644 --- a/llvm/include/llvm/Support/CodeGen.h +++ b/llvm/include/llvm/Support/CodeGen.h @@ -57,6 +57,15 @@ namespace llvm { }; } + /// These enums are meant to be passed into addPassesToEmitFile to indicate + /// what type of file to emit, and returned by it to indicate what type of + /// file could actually be made. + enum CodeGenFileType { + CGFT_AssemblyFile, + CGFT_ObjectFile, + CGFT_Null // Do not emit any output. + }; + // Specify effect of frame pointer elimination optimization. namespace FramePointer { enum FP {All, NonLeaf, None}; diff --git a/llvm/include/llvm/Target/TargetMachine.h b/llvm/include/llvm/Target/TargetMachine.h index 285c0ec0fb90..176ae39b17a7 100644 --- a/llvm/include/llvm/Target/TargetMachine.h +++ b/llvm/include/llvm/Target/TargetMachine.h @@ -271,15 +271,6 @@ public: /// PassManagerBuilder::addExtension. virtual void adjustPassManager(PassManagerBuilder &) {} - /// These enums are meant to be passed into addPassesToEmitFile to indicate - /// what type of file to emit, and returned by it to indicate what type of - /// file could actually be made. - enum CodeGenFileType { - CGFT_AssemblyFile, - CGFT_ObjectFile, - CGFT_Null // Do not emit any output. - }; - /// Add passes to the specified pass manager to get the specified file /// emitted. Typically this will involve several steps of code generation. /// This method should return true if emission of this file type is not diff --git a/llvm/lib/CodeGen/ParallelCG.cpp b/llvm/lib/CodeGen/ParallelCG.cpp index e4c73658cb4f..7dbd830666fb 100644 --- a/llvm/lib/CodeGen/ParallelCG.cpp +++ b/llvm/lib/CodeGen/ParallelCG.cpp @@ -26,7 +26,7 @@ using namespace llvm; static void codegen(Module *M, llvm::raw_pwrite_stream &OS, function_ref()> TMFactory, - TargetMachine::CodeGenFileType FileType) { + CodeGenFileType FileType) { std::unique_ptr TM = TMFactory(); legacy::PassManager CodeGenPasses; if (TM->addPassesToEmitFile(CodeGenPasses, OS, nullptr, FileType)) @@ -38,7 +38,7 @@ std::unique_ptr llvm::splitCodeGen( std::unique_ptr M, ArrayRef OSs, ArrayRef BCOSs, const std::function()> &TMFactory, - TargetMachine::CodeGenFileType FileType, bool PreserveLocals) { + CodeGenFileType FileType, bool PreserveLocals) { assert(BCOSs.empty() || BCOSs.size() == OSs.size()); if (OSs.size() == 1) { diff --git a/llvm/lib/LTO/LTOCodeGenerator.cpp b/llvm/lib/LTO/LTOCodeGenerator.cpp index 882192892867..f87f232c63eb 100644 --- a/llvm/lib/LTO/LTOCodeGenerator.cpp +++ b/llvm/lib/LTO/LTOCodeGenerator.cpp @@ -259,7 +259,7 @@ bool LTOCodeGenerator::compileOptimizedToFile(const char **Name) { int FD; StringRef Extension - (FileType == TargetMachine::CGFT_AssemblyFile ? "s" : "o"); + (FileType == CGFT_AssemblyFile ? "s" : "o"); std::error_code EC = sys::fs::createTemporaryFile("lto-llvm", Extension, FD, Filename); diff --git a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp index 5a50a4830f15..300203bcc1c2 100644 --- a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp +++ b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp @@ -292,7 +292,7 @@ std::unique_ptr codegenModule(Module &TheModule, PM.add(createObjCARCContractPass()); // Setup the codegen now. - if (TM.addPassesToEmitFile(PM, OS, nullptr, TargetMachine::CGFT_ObjectFile, + if (TM.addPassesToEmitFile(PM, OS, nullptr, CGFT_ObjectFile, /* DisableVerify */ true)) report_fatal_error("Failed to setup codegen"); diff --git a/llvm/lib/Target/TargetMachineC.cpp b/llvm/lib/Target/TargetMachineC.cpp index 3ac9c38dfc0b..a38633e1f27e 100644 --- a/llvm/lib/Target/TargetMachineC.cpp +++ b/llvm/lib/Target/TargetMachineC.cpp @@ -195,13 +195,13 @@ static LLVMBool LLVMTargetMachineEmit(LLVMTargetMachineRef T, LLVMModuleRef M, Mod->setDataLayout(TM->createDataLayout()); - TargetMachine::CodeGenFileType ft; + CodeGenFileType ft; switch (codegen) { case LLVMAssemblyFile: - ft = TargetMachine::CGFT_AssemblyFile; + ft = CGFT_AssemblyFile; break; default: - ft = TargetMachine::CGFT_ObjectFile; + ft = CGFT_ObjectFile; break; } if (TM->addPassesToEmitFile(pass, OS, nullptr, ft)) { diff --git a/llvm/tools/gold/gold-plugin.cpp b/llvm/tools/gold/gold-plugin.cpp index 0f720b6be23a..d355184f866c 100644 --- a/llvm/tools/gold/gold-plugin.cpp +++ b/llvm/tools/gold/gold-plugin.cpp @@ -899,7 +899,7 @@ static std::unique_ptr createLTO(IndexWriteCallback OnIndexWrite, /* UseInputModulePath */ true)); break; case options::OT_ASM_ONLY: - Conf.CGFileType = TargetMachine::CGFT_AssemblyFile; + Conf.CGFileType = CGFT_AssemblyFile; break; } diff --git a/llvm/tools/llc/llc.cpp b/llvm/tools/llc/llc.cpp index c4cb7489cde2..b5503a4157b1 100644 --- a/llvm/tools/llc/llc.cpp +++ b/llvm/tools/llc/llc.cpp @@ -203,7 +203,7 @@ static std::unique_ptr GetOutputStream(const char *TargetName, OutputFilename = IFN; switch (FileType) { - case TargetMachine::CGFT_AssemblyFile: + case CGFT_AssemblyFile: if (TargetName[0] == 'c') { if (TargetName[1] == 0) OutputFilename += ".cbe.c"; @@ -214,13 +214,13 @@ static std::unique_ptr GetOutputStream(const char *TargetName, } else OutputFilename += ".s"; break; - case TargetMachine::CGFT_ObjectFile: + case CGFT_ObjectFile: if (OS == Triple::Win32) OutputFilename += ".obj"; else OutputFilename += ".o"; break; - case TargetMachine::CGFT_Null: + case CGFT_Null: OutputFilename += ".null"; break; } @@ -230,10 +230,10 @@ static std::unique_ptr GetOutputStream(const char *TargetName, // Decide if we need "binary" output. bool Binary = false; switch (FileType) { - case TargetMachine::CGFT_AssemblyFile: + case CGFT_AssemblyFile: break; - case TargetMachine::CGFT_ObjectFile: - case TargetMachine::CGFT_Null: + case CGFT_ObjectFile: + case CGFT_Null: Binary = true; break; } @@ -520,7 +520,7 @@ static int compileModule(char **argv, LLVMContext &Context) { setFunctionAttributes(CPUStr, FeaturesStr, *M); if (RelaxAll.getNumOccurrences() > 0 && - FileType != TargetMachine::CGFT_ObjectFile) + FileType != CGFT_ObjectFile) WithColor::warning(errs(), argv[0]) << ": warning: ignoring -mc-relax-all because filetype != obj"; @@ -531,7 +531,7 @@ static int compileModule(char **argv, LLVMContext &Context) { // so we can memcmp the contents in CompileTwice mode SmallVector Buffer; std::unique_ptr BOS; - if ((FileType != TargetMachine::CGFT_AssemblyFile && + if ((FileType != CGFT_AssemblyFile && !Out->os().supportsSeeking()) || CompileTwice) { BOS = std::make_unique(Buffer); diff --git a/llvm/tools/llvm-exegesis/lib/Assembler.cpp b/llvm/tools/llvm-exegesis/lib/Assembler.cpp index 631aed0758f5..bb89655435a8 100644 --- a/llvm/tools/llvm-exegesis/lib/Assembler.cpp +++ b/llvm/tools/llvm-exegesis/lib/Assembler.cpp @@ -238,7 +238,7 @@ void assembleToStream(const ExegesisTarget &ET, TPC->setInitialized(); // AsmPrinter is responsible for generating the assembly into AsmBuffer. - if (TM->addAsmPrinter(PM, AsmStream, nullptr, TargetMachine::CGFT_ObjectFile, + if (TM->addAsmPrinter(PM, AsmStream, nullptr, CGFT_ObjectFile, MCContext)) report_fatal_error("Cannot add AsmPrinter passes"); diff --git a/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp b/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp index a27f1147a4a2..b71ed4a70566 100644 --- a/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp +++ b/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp @@ -98,7 +98,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { TargetLibraryInfoImpl TLII(TM->getTargetTriple()); PM.add(new TargetLibraryInfoWrapperPass(TLII)); raw_null_ostream OS; - TM->addPassesToEmitFile(PM, OS, nullptr, TargetMachine::CGFT_Null); + TM->addPassesToEmitFile(PM, OS, nullptr, CGFT_Null); PM.run(*M); return 0; diff --git a/polly/lib/CodeGen/PPCGCodeGeneration.cpp b/polly/lib/CodeGen/PPCGCodeGeneration.cpp index 2516b33a0ca8..1b29fc4fd86c 100644 --- a/polly/lib/CodeGen/PPCGCodeGeneration.cpp +++ b/polly/lib/CodeGen/PPCGCodeGeneration.cpp @@ -2367,8 +2367,7 @@ std::string GPUNodeBuilder::createKernelASM() { PM.add(createTargetTransformInfoWrapperPass(TargetM->getTargetIRAnalysis())); - if (TargetM->addPassesToEmitFile(PM, ASMStream, nullptr, - TargetMachine::CGFT_AssemblyFile, + if (TargetM->addPassesToEmitFile(PM, ASMStream, nullptr, CGFT_AssemblyFile, true /* verify */)) { errs() << "The target does not support generation of this file type!\n"; return "";