diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-05-20 17:49:16 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-05-20 17:49:16 +0000 |
commit | 2fcaa549a824efeb56e807fcf750a56bf985296b (patch) | |
tree | 75deb3ebb49f66249e737f07199eda2b11209298 /clang/tools/driver/driver.cpp | |
parent | d7d6638e3e822b266257371823d4c608a6747eaf (diff) | |
download | bcm5719-llvm-2fcaa549a824efeb56e807fcf750a56bf985296b.tar.gz bcm5719-llvm-2fcaa549a824efeb56e807fcf750a56bf985296b.zip |
Driver/MC: Add 'clang -cc1as' integrated assembler tool, currently accepts approximately the same interface as 'llvm-mc'.
llvm-svn: 104239
Diffstat (limited to 'clang/tools/driver/driver.cpp')
-rw-r--r-- | clang/tools/driver/driver.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/clang/tools/driver/driver.cpp b/clang/tools/driver/driver.cpp index 3f1cca1f887..c4b12cba0f7 100644 --- a/clang/tools/driver/driver.cpp +++ b/clang/tools/driver/driver.cpp @@ -170,15 +170,28 @@ static void ApplyQAOverride(std::vector<const char*> &Args, extern int cc1_main(const char **ArgBegin, const char **ArgEnd, const char *Argv0, void *MainAddr); +extern int cc1as_main(const char **ArgBegin, const char **ArgEnd, + const char *Argv0, void *MainAddr); int main(int argc, const char **argv) { llvm::sys::PrintStackTraceOnErrorSignal(); llvm::PrettyStackTraceProgram X(argc, argv); - // Dispatch to cc1_main if appropriate. - if (argc > 1 && llvm::StringRef(argv[1]) == "-cc1") - return cc1_main(argv+2, argv+argc, argv[0], - (void*) (intptr_t) GetExecutablePath); + // Handle -cc1 integrated tools. + if (argc > 1 && llvm::StringRef(argv[1]).startswith("-cc1")) { + llvm::StringRef Tool = argv[1] + 4; + + if (Tool == "") + return cc1_main(argv+2, argv+argc, argv[0], + (void*) (intptr_t) GetExecutablePath); + if (Tool == "as") + return cc1as_main(argv+2, argv+argc, argv[0], + (void*) (intptr_t) GetExecutablePath); + + // Reject unknown tools. + llvm::errs() << "error: unknown integrated tool '" << Tool << "'\n"; + return 1; + } bool CanonicalPrefixes = true; for (int i = 1; i < argc; ++i) { |