summaryrefslogtreecommitdiffstats
path: root/clang/tools/driver/driver.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-05-20 17:49:16 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-05-20 17:49:16 +0000
commit2fcaa549a824efeb56e807fcf750a56bf985296b (patch)
tree75deb3ebb49f66249e737f07199eda2b11209298 /clang/tools/driver/driver.cpp
parentd7d6638e3e822b266257371823d4c608a6747eaf (diff)
downloadbcm5719-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.cpp21
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) {
OpenPOWER on IntegriCloud