mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-29 22:30:33 +00:00
Registry.h should not depend on CommandLine.h.
Split Support/Registry.h into two files so that we have less to recompile every time CommandLine.h is changed. llvm-svn: 62312
This commit is contained in:
parent
4315a09f1a
commit
49be18cfc6
@ -14,8 +14,6 @@
|
||||
#ifndef LLVM_SUPPORT_REGISTRY_H
|
||||
#define LLVM_SUPPORT_REGISTRY_H
|
||||
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
|
||||
namespace llvm {
|
||||
/// A simple registry entry which provides only a name, description, and
|
||||
/// no-argument constructor.
|
||||
@ -204,33 +202,7 @@ namespace llvm {
|
||||
: Entry(Name, Desc, CtorFn), Node(Entry) {}
|
||||
};
|
||||
|
||||
|
||||
/// A command-line parser for a registry. Use like such:
|
||||
///
|
||||
/// static cl::opt<Registry<Collector>::entry, false,
|
||||
/// Registry<Collector>::Parser>
|
||||
/// GCOpt("gc", cl::desc("Garbage collector to use."),
|
||||
/// cl::value_desc());
|
||||
///
|
||||
/// To make use of the value:
|
||||
///
|
||||
/// Collector *TheCollector = GCOpt->instantiate();
|
||||
///
|
||||
class Parser : public cl::parser<const typename U::entry*>, public listener{
|
||||
typedef U traits;
|
||||
typedef typename U::entry entry;
|
||||
|
||||
protected:
|
||||
void registered(const entry &E) {
|
||||
addLiteralOption(traits::nameof(E), &E, traits::descof(E));
|
||||
}
|
||||
|
||||
public:
|
||||
void initialize(cl::Option &O) {
|
||||
listener::init();
|
||||
cl::parser<const typename U::entry*>::initialize(O);
|
||||
}
|
||||
};
|
||||
/// Registry::Parser now lives in llvm/Support/RegistryParser.h.
|
||||
|
||||
};
|
||||
|
||||
|
55
include/llvm/Support/RegistryParser.h
Normal file
55
include/llvm/Support/RegistryParser.h
Normal file
@ -0,0 +1,55 @@
|
||||
//=== RegistryParser.h - Linker-supported plugin registries -----*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Defines a command-line parser for a registry.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_SUPPORT_REGISTRY_PARSER_H
|
||||
#define LLVM_SUPPORT_REGISTRY_PARSER_H
|
||||
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/Registry.h"
|
||||
|
||||
namespace llvm {
|
||||
|
||||
/// A command-line parser for a registry. Use like such:
|
||||
///
|
||||
/// static cl::opt<Registry<Collector>::entry, false,
|
||||
/// RegistryParser<Collector> >
|
||||
/// GCOpt("gc", cl::desc("Garbage collector to use."),
|
||||
/// cl::value_desc());
|
||||
///
|
||||
/// To make use of the value:
|
||||
///
|
||||
/// Collector *TheCollector = GCOpt->instantiate();
|
||||
///
|
||||
template <typename T, typename U = RegistryTraits<T> >
|
||||
class RegistryParser :
|
||||
public cl::parser<const typename U::entry*>,
|
||||
public Registry<T, U>::listener {
|
||||
typedef U traits;
|
||||
typedef typename U::entry entry;
|
||||
typedef typename Registry<T, U>::listener listener;
|
||||
|
||||
protected:
|
||||
void registered(const entry &E) {
|
||||
addLiteralOption(traits::nameof(E), &E, traits::descof(E));
|
||||
}
|
||||
|
||||
public:
|
||||
void initialize(cl::Option &O) {
|
||||
listener::init();
|
||||
cl::parser<const typename U::entry*>::initialize(O);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // LLVM_SUPPORT_REGISTRY_PARSER_H
|
@ -17,6 +17,7 @@
|
||||
#ifndef LLVM_TARGET_TARGETMACHINEREGISTRY_H
|
||||
#define LLVM_TARGET_TARGETMACHINEREGISTRY_H
|
||||
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/Support/Registry.h"
|
||||
|
||||
namespace llvm {
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "llvm/CodeGen/AsmPrinter.h"
|
||||
#include "llvm/CodeGen/GCMetadataPrinter.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/Support/Compiler.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Target/TargetAsmInfo.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
#include "llvm/CodeGen/GCs.h"
|
||||
#include "llvm/CodeGen/GCStrategy.h"
|
||||
#include "llvm/Support/Compiler.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
|
@ -47,6 +47,7 @@
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/Target/TargetOptions.h"
|
||||
#include "llvm/Support/Compiler.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/MathExtras.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "llvm/CodeGen/GCStrategy.h"
|
||||
#include "llvm/IntrinsicInst.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/Support/Compiler.h"
|
||||
#include "llvm/Support/IRBuilder.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "JIT.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/ModuleProvider.h"
|
||||
#include "llvm/Support/RegistryParser.h"
|
||||
#include "llvm/Support/Streams.h"
|
||||
#include "llvm/Target/SubtargetFeature.h"
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
@ -22,7 +23,7 @@
|
||||
using namespace llvm;
|
||||
|
||||
static cl::opt<const TargetMachineRegistry::entry*, false,
|
||||
TargetMachineRegistry::Parser>
|
||||
RegistryParser<TargetMachine> >
|
||||
MArch("march", cl::desc("Architecture to generate assembly for:"));
|
||||
|
||||
static cl::opt<std::string>
|
||||
|
@ -27,10 +27,11 @@
|
||||
#include "llvm/PassManager.h"
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/FileUtilities.h"
|
||||
#include "llvm/Support/ManagedStatic.h"
|
||||
#include "llvm/Support/MemoryBuffer.h"
|
||||
#include "llvm/Support/PluginLoader.h"
|
||||
#include "llvm/Support/FileUtilities.h"
|
||||
#include "llvm/Support/RegistryParser.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Analysis/Verifier.h"
|
||||
#include "llvm/System/Signals.h"
|
||||
@ -60,7 +61,7 @@ static cl::opt<std::string>
|
||||
TargetTriple("mtriple", cl::desc("Override target triple for module"));
|
||||
|
||||
static cl::opt<const TargetMachineRegistry::entry*, false,
|
||||
TargetMachineRegistry::Parser>
|
||||
RegistryParser<TargetMachine> >
|
||||
MArch("march", cl::desc("Architecture to generate code for:"));
|
||||
|
||||
static cl::opt<std::string>
|
||||
|
Loading…
Reference in New Issue
Block a user