eliminate FileModel::Model, just use CodeGenFileType. The client
authorChris Lattner <sabre@nondot.org>
Tue, 2 Feb 2010 21:06:45 +0000 (21:06 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 2 Feb 2010 21:06:45 +0000 (21:06 +0000)
of the code generator shouldn't care what object format a target
uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95124 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetMachine.h
lib/CodeGen/LLVMTargetMachine.cpp
lib/Target/CBackend/CBackend.cpp
lib/Target/CppBackend/CPPBackend.cpp
lib/Target/MSIL/MSILWriter.cpp
tools/llc/llc.cpp
tools/lto/LTOCodeGenerator.cpp

index 2471067599b2322f5aade569572a8590d71ffaf4..7ba7ec2e48371e2401d121415e161bfe6da388bb 100644 (file)
@@ -60,16 +60,6 @@ namespace CodeModel {
   };
 }
 
-namespace FileModel {
-  enum Model {
-    Error,
-    None,
-    AsmFile,
-    MachOFile,
-    ElfFile
-  };
-}
-
 // Code generation optimization level.
 namespace CodeGenOpt {
   enum Level {
@@ -206,9 +196,13 @@ public:
   }
 
   /// CodeGenFileType - These enums are meant to be passed into
-  /// addPassesToEmitFile to indicate what type of file to emit.
+  /// 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 {
-    AssemblyFile, ObjectFile, DynamicLibrary
+    CGFT_AssemblyFile,
+    CGFT_ObjectFile,
+    CGFT_DynamicLibrary,
+    CGFT_ErrorOccurred
   };
 
   /// getEnableTailMergeDefault - the default setting for -enable-tail-merge
@@ -218,14 +212,14 @@ public:
   /// addPassesToEmitFile - 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 FileModel::Error if emission of this file type
+  /// This method should return InvalidFile if emission of this file type
   /// is not supported.
   ///
-  virtual FileModel::Model addPassesToEmitFile(PassManagerBase &,
-                                               formatted_raw_ostream &,
-                                               CodeGenFileType,
-                                               CodeGenOpt::Level) {
-    return FileModel::None;
+  virtual CodeGenFileType addPassesToEmitFile(PassManagerBase &,
+                                              formatted_raw_ostream &,
+                                              CodeGenFileType Filetype,
+                                              CodeGenOpt::Level) {
+    return CGFT_ErrorOccurred;
   }
 
   /// addPassesToEmitMachineCode - Add passes to the specified pass manager to
@@ -271,19 +265,19 @@ public:
   
   /// addPassesToEmitFile - Add passes to the specified pass manager to get the
   /// specified file emitted.  Typically this will involve several steps of code
-  /// generation.  If OptLevel is None, the code generator should emit code as fast
-  /// as possible, though the generated code may be less efficient.  This method
-  /// should return FileModel::Error if emission of this file type is not
-  /// supported.
+  /// generation.  If OptLevel is None, the code generator should emit code as
+  /// fast as possible, though the generated code may be less efficient.  This
+  /// method should return CGFT_ErrorOccurred if emission of this file type is
+  /// not supported.
   ///
   /// The default implementation of this method adds components from the
   /// LLVM retargetable code generator, invoking the methods below to get
   /// target-specific passes in standard locations.
   ///
-  virtual FileModel::Model addPassesToEmitFile(PassManagerBase &PM,
-                                               formatted_raw_ostream &Out,
-                                               CodeGenFileType FileType,
-                                               CodeGenOpt::Level);
+  virtual CodeGenFileType addPassesToEmitFile(PassManagerBase &PM,
+                                              formatted_raw_ostream &Out,
+                                              CodeGenFileType FileType,
+                                              CodeGenOpt::Level);
   
   /// addPassesToEmitMachineCode - Add passes to the specified pass manager to
   /// get machine code emitted.  This uses a MachineCodeEmitter object to handle
index 4bb8af5ac6f418ef072cb0fb6fdb2cba84821328..81b73aeec49aa28ef353ffba51bf28bb8fa2efc2 100644 (file)
@@ -96,28 +96,25 @@ LLVMTargetMachine::setCodeModelForStatic() {
   setCodeModel(CodeModel::Small);
 }
 
-FileModel::Model
+TargetMachine::CodeGenFileType
 LLVMTargetMachine::addPassesToEmitFile(PassManagerBase &PM,
                                        formatted_raw_ostream &Out,
                                        CodeGenFileType FileType,
                                        CodeGenOpt::Level OptLevel) {
   // Add common CodeGen passes.
   if (addCommonCodeGenPasses(PM, OptLevel))
-    return FileModel::Error;
+    return CGFT_ErrorOccurred;
 
-  FileModel::Model ResultTy;
   switch (FileType) {
   default:
-    return FileModel::Error;
-  case TargetMachine::ObjectFile:
-    return FileModel::Error;
-  case TargetMachine::AssemblyFile: {
+  case CGFT_ObjectFile:
+    return CGFT_ErrorOccurred;
+  case CGFT_AssemblyFile: {
     FunctionPass *Printer =
       getTarget().createAsmPrinter(Out, *this, getMCAsmInfo(),
                                    getAsmVerbosityDefault());
-    if (Printer == 0) return FileModel::Error;
+    if (Printer == 0) return CGFT_ErrorOccurred;
     PM.add(Printer);
-    ResultTy = FileModel::AsmFile;
     break;
   }
   }
@@ -125,7 +122,7 @@ LLVMTargetMachine::addPassesToEmitFile(PassManagerBase &PM,
   // Make sure the code model is set.
   setCodeModelForStatic();
   PM.add(createGCInfoDeleter());
-  return ResultTy;
+  return FileType;
 }
 
 /// addPassesToEmitMachineCode - Add passes to the specified pass manager to
index e76565517ad6f91d35815276242e75f0a459f67f..f63398ec8592b31ada491c361b0d042dcb6f49d2 100644 (file)
@@ -3706,7 +3706,7 @@ bool CTargetMachine::addPassesToEmitWholeFile(PassManager &PM,
                                               formatted_raw_ostream &o,
                                               CodeGenFileType FileType,
                                               CodeGenOpt::Level OptLevel) {
-  if (FileType != TargetMachine::AssemblyFile) return true;
+  if (FileType != TargetMachine::CGFT_AssemblyFile) return true;
 
   PM.add(createGCLoweringPass());
   PM.add(createLowerInvokePass());
index 1f08775894941906efda561e5be86d51edf3dd5d..4f3f0047b36bceffd984e399e04cf74a785efdfd 100644 (file)
@@ -2009,7 +2009,7 @@ bool CPPTargetMachine::addPassesToEmitWholeFile(PassManager &PM,
                                                 formatted_raw_ostream &o,
                                                 CodeGenFileType FileType,
                                                 CodeGenOpt::Level OptLevel) {
-  if (FileType != TargetMachine::AssemblyFile) return true;
+  if (FileType != TargetMachine::CGFT_AssemblyFile) return true;
   PM.add(new CppWriter(o));
   return false;
 }
index 1bc708eb79aa5eb669e39321bfbad09ff9caf8b7..a96ee49a8d9accb955c6b1514876c4a3942164bb 100644 (file)
@@ -1690,7 +1690,7 @@ bool MSILTarget::addPassesToEmitWholeFile(PassManager &PM,
                                           CodeGenFileType FileType,
                                           CodeGenOpt::Level OptLevel)
 {
-  if (FileType != TargetMachine::AssemblyFile) return true;
+  if (FileType != TargetMachine::CGFT_AssemblyFile) return true;
   MSILWriter* Writer = new MSILWriter(o);
   PM.add(createGCLoweringPass());
   // FIXME: Handle switch through native IL instruction "switch"
index 395eaa29e24b1335709d852578917b5cc62ee461..0927e1c8b6fa8b9da78b0c127a472a88509a3261 100644 (file)
@@ -85,14 +85,14 @@ MAttrs("mattr",
   cl::value_desc("a1,+a2,-a3,..."));
 
 cl::opt<TargetMachine::CodeGenFileType>
-FileType("filetype", cl::init(TargetMachine::AssemblyFile),
+FileType("filetype", cl::init(TargetMachine::CGFT_AssemblyFile),
   cl::desc("Choose a file type (not all types are supported by all targets):"),
   cl::values(
-       clEnumValN(TargetMachine::AssemblyFile, "asm",
+       clEnumValN(TargetMachine::CGFT_AssemblyFile, "asm",
                   "Emit an assembly ('.s') file"),
-       clEnumValN(TargetMachine::ObjectFile, "obj",
+       clEnumValN(TargetMachine::CGFT_ObjectFile, "obj",
                   "Emit a native object ('.o') file [experimental]"),
-       clEnumValN(TargetMachine::DynamicLibrary, "dynlib",
+       clEnumValN(TargetMachine::CGFT_DynamicLibrary, "dynlib",
                   "Emit a native dynamic library ('.so') file"
                   " [experimental]"),
        clEnumValEnd));
@@ -162,7 +162,8 @@ static formatted_raw_ostream *GetOutputStream(const char *TargetName,
 
   bool Binary = false;
   switch (FileType) {
-  case TargetMachine::AssemblyFile:
+  default: assert(0 && "Unknown file type");
+  case TargetMachine::CGFT_AssemblyFile:
     if (TargetName[0] == 'c') {
       if (TargetName[1] == 0)
         OutputFilename += ".cbe.c";
@@ -173,11 +174,11 @@ static formatted_raw_ostream *GetOutputStream(const char *TargetName,
     } else
       OutputFilename += ".s";
     break;
-  case TargetMachine::ObjectFile:
+  case TargetMachine::CGFT_ObjectFile:
     OutputFilename += ".o";
     Binary = true;
     break;
-  case TargetMachine::DynamicLibrary:
+  case TargetMachine::CGFT_DynamicLibrary:
     OutputFilename += LTDL_SHLIB_EXT;
     Binary = true;
     break;
@@ -352,14 +353,14 @@ int main(int argc, char **argv) {
     default:
       assert(0 && "Invalid file model!");
       return 1;
-    case FileModel::Error:
+    case TargetMachine::CGFT_ErrorOccurred:
       errs() << argv[0] << ": target does not support generation of this"
              << " file type!\n";
       if (Out != &fouts()) delete Out;
       // And the Out file is empty and useless, so remove it now.
       sys::Path(OutputFilename).eraseFromDisk();
       return 1;
-    case FileModel::AsmFile:
+    case TargetMachine::CGFT_AssemblyFile:
       break;
     }
 
index 5275cc36737cde6a06b070d38bb047fe38b30c47..bb31b0bb6bd1d198964392038753370a8a22f031 100644 (file)
@@ -396,9 +396,9 @@ bool LTOCodeGenerator::generateAssemblyCode(formatted_raw_ostream& out,
     codeGenPasses->add(new TargetData(*_target->getTargetData()));
 
     switch (_target->addPassesToEmitFile(*codeGenPasses, out,
-                                         TargetMachine::AssemblyFile,
+                                         TargetMachine::CGFT_AssemblyFile,
                                          CodeGenOpt::Aggressive)) {
-        case FileModel::AsmFile:
+        case TargetMachine::CGFT_AssemblyFile:
             break;
         default:
             errMsg = "target file type not supported";