зеркало из https://github.com/microsoft/clang.git
switch a few Driver APIs to use llvm::ArrayRef, cleaning up code.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128142 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
0ff8818a23
Коммит
7f9fc3f7ce
|
@ -25,6 +25,7 @@
|
|||
|
||||
namespace llvm {
|
||||
class raw_ostream;
|
||||
template<typename T> class ArrayRef;
|
||||
}
|
||||
namespace clang {
|
||||
namespace driver {
|
||||
|
@ -215,14 +216,14 @@ public:
|
|||
/// argument vector. A null return value does not necessarily
|
||||
/// indicate an error condition, the diagnostics should be queried
|
||||
/// to determine if an error occurred.
|
||||
Compilation *BuildCompilation(int argc, const char **argv);
|
||||
Compilation *BuildCompilation(llvm::ArrayRef<const char *> Args);
|
||||
|
||||
/// @name Driver Steps
|
||||
/// @{
|
||||
|
||||
/// ParseArgStrings - Parse the given list of strings into an
|
||||
/// ArgList.
|
||||
InputArgList *ParseArgStrings(const char **ArgBegin, const char **ArgEnd);
|
||||
InputArgList *ParseArgStrings(llvm::ArrayRef<const char *> Args);
|
||||
|
||||
/// BuildActions - Construct the list of actions to perform for the
|
||||
/// given arguments, which are only done for a single architecture.
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include "clang/Basic/Version.h"
|
||||
|
||||
#include "llvm/Config/config.h"
|
||||
#include "llvm/ADT/ArrayRef.h"
|
||||
#include "llvm/ADT/StringSet.h"
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
#include "llvm/Support/PrettyStackTrace.h"
|
||||
|
@ -100,11 +101,10 @@ Driver::~Driver() {
|
|||
delete Host;
|
||||
}
|
||||
|
||||
InputArgList *Driver::ParseArgStrings(const char **ArgBegin,
|
||||
const char **ArgEnd) {
|
||||
InputArgList *Driver::ParseArgStrings(llvm::ArrayRef<const char *> ArgList) {
|
||||
llvm::PrettyStackTraceString CrashInfo("Command line argument parsing");
|
||||
unsigned MissingArgIndex, MissingArgCount;
|
||||
InputArgList *Args = getOpts().ParseArgs(ArgBegin, ArgEnd,
|
||||
InputArgList *Args = getOpts().ParseArgs(ArgList.begin(), ArgList.end(),
|
||||
MissingArgIndex, MissingArgCount);
|
||||
|
||||
// Check for missing argument error.
|
||||
|
@ -206,7 +206,7 @@ DerivedArgList *Driver::TranslateInputArgs(const InputArgList &Args) const {
|
|||
return DAL;
|
||||
}
|
||||
|
||||
Compilation *Driver::BuildCompilation(int argc, const char **argv) {
|
||||
Compilation *Driver::BuildCompilation(llvm::ArrayRef<const char *> ArgList) {
|
||||
llvm::PrettyStackTraceString CrashInfo("Compilation construction");
|
||||
|
||||
// FIXME: Handle environment options which effect driver behavior, somewhere
|
||||
|
@ -218,9 +218,7 @@ Compilation *Driver::BuildCompilation(int argc, const char **argv) {
|
|||
// FIXME: This stuff needs to go into the Compilation, not the driver.
|
||||
bool CCCPrintOptions = false, CCCPrintActions = false;
|
||||
|
||||
const char **Start = argv + 1, **End = argv + argc;
|
||||
|
||||
InputArgList *Args = ParseArgStrings(Start, End);
|
||||
InputArgList *Args = ParseArgStrings(ArgList.slice(1));
|
||||
|
||||
// -no-canonical-prefixes is used very early in main.
|
||||
Args->ClaimAllArgs(options::OPT_no_canonical_prefixes);
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#include "clang/Basic/TargetOptions.h"
|
||||
#include "clang/Basic/TargetInfo.h"
|
||||
#include "clang/Basic/Diagnostic.h"
|
||||
#include "llvm/ADT/ArrayRef.h"
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include "llvm/ADT/StringSet.h"
|
||||
#include "llvm/Support/Atomic.h"
|
||||
|
@ -1661,10 +1662,7 @@ ASTUnit *ASTUnit::LoadFromCommandLine(const char **ArgBegin,
|
|||
// Don't check that inputs exist, they have been remapped.
|
||||
TheDriver.setCheckInputsExist(false);
|
||||
|
||||
llvm::OwningPtr<driver::Compilation> C(
|
||||
TheDriver.BuildCompilation(
|
||||
Args->size(),
|
||||
Args->size() ? &(*Args)[0] : 0 )); // std::vector::data() not portable
|
||||
llvm::OwningPtr<driver::Compilation> C(TheDriver.BuildCompilation(*Args));
|
||||
|
||||
// Just print the cc1 options if -### was present.
|
||||
if (C->getArgs().hasArg(driver::options::OPT__HASH_HASH_HASH)) {
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "clang/Frontend/DiagnosticOptions.h"
|
||||
#include "clang/Frontend/TextDiagnosticPrinter.h"
|
||||
|
||||
#include "llvm/ADT/ArrayRef.h"
|
||||
#include "llvm/ADT/SmallString.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
|
@ -448,8 +449,7 @@ int main(int argc_, const char **argv_) {
|
|||
argv.insert(&argv[1], ExtraArgs.begin(), ExtraArgs.end());
|
||||
}
|
||||
|
||||
llvm::OwningPtr<Compilation> C(TheDriver.BuildCompilation(argv.size(),
|
||||
&argv[0]));
|
||||
llvm::OwningPtr<Compilation> C(TheDriver.BuildCompilation(argv));
|
||||
int Res = 0;
|
||||
if (C.get())
|
||||
Res = TheDriver.ExecuteCompilation(*C);
|
||||
|
|
Загрузка…
Ссылка в новой задаче