diff options
| author | Reid Spencer <rspencer@reidspencer.com> | 2004-08-14 09:37:15 +0000 |
|---|---|---|
| committer | Reid Spencer <rspencer@reidspencer.com> | 2004-08-14 09:37:15 +0000 |
| commit | 9d68ff6ef0e5de0356fb627b3b029fb5158788b8 (patch) | |
| tree | 3c394f433a41ea004990885ddf857b59ac476c62 /llvm/tools/llvmc/CompilerDriver.cpp | |
| parent | e37345e78fd2e7e6af9191c03f7c44fae9d00673 (diff) | |
| download | bcm5719-llvm-9d68ff6ef0e5de0356fb627b3b029fb5158788b8.tar.gz bcm5719-llvm-9d68ff6ef0e5de0356fb627b3b029fb5158788b8.zip | |
Converted to use flex for tokenizing input so we can use an easier to
understand recursive descent parser, we can easily handle more syntax
variety, and we can more easily change the configuration items accepted.
llvm-svn: 15732
Diffstat (limited to 'llvm/tools/llvmc/CompilerDriver.cpp')
| -rw-r--r-- | llvm/tools/llvmc/CompilerDriver.cpp | 48 |
1 files changed, 36 insertions, 12 deletions
diff --git a/llvm/tools/llvmc/CompilerDriver.cpp b/llvm/tools/llvmc/CompilerDriver.cpp index f1d3e58bad9..ff63b2100ed 100644 --- a/llvm/tools/llvmc/CompilerDriver.cpp +++ b/llvm/tools/llvmc/CompilerDriver.cpp @@ -29,8 +29,38 @@ namespace { if ( dotpos = std::string::npos ) return ""; return fullName.substr(dotpos+1); } + const char OutputSuffix[] = ".o"; + void WriteAction(CompilerDriver::Action* a) { + std::cerr << a->program; + std::vector<std::string>::iterator I = a->args.begin(); + while (I != a->args.end()) { + std::cerr << " " + *I; + ++I; + } + std::cerr << "\n"; + } + + void DumpConfigData(CompilerDriver::ConfigData* cd, const std::string& type ){ + std::cerr << "Configuration Data For '" << cd->langName << "' (" << type + << ")\n"; + std::cerr << "translator.preprocesses=" << cd->TranslatorPreprocesses + << "\n"; + std::cerr << "translator.groks_dash_O=" << cd->TranslatorGroksDashO << "\n"; + std::cerr << "translator.optimizes=" << cd->TranslatorOptimizes << "\n"; + std::cerr << "preprocessor.needed=" << cd->PreprocessorNeeded << "\n"; + std::cerr << "PreProcessor: "; + WriteAction(&cd->PreProcessor); + std::cerr << "Translator: "; + WriteAction(&cd->Translator); + std::cerr << "Optimizer: "; + WriteAction(&cd->Optimizer); + std::cerr << "Assembler: "; + WriteAction(&cd->Assembler); + std::cerr << "Linker: "; + WriteAction(&cd->Linker); + } } @@ -80,21 +110,13 @@ CompilerDriver::Action* CompilerDriver::GetAction(ConfigData* cd, } assert(pat != 0 && "Invalid command pattern"); Action* a = new Action(*pat); - a->args[pat->inputAt] = input; - a->args[pat->outputAt] = output; + if (pat->inputAt < a->args.size()) + a->args[pat->inputAt] = input; + if (pat->outputAt < a->args.size()) + a->args[pat->outputAt] = output; return a; } -void CompilerDriver::WriteAction(Action* a) { - std::cerr << a->program; - std::vector<std::string>::iterator I = a->args.begin(); - while (I != a->args.end()) { - std::cerr << " " + *I; - ++I; - } - std::cerr << "\n"; -} - void CompilerDriver::DoAction(Action*a) { if (isVerbose) @@ -170,6 +192,8 @@ int CompilerDriver::execute(const InputList& InpList, if (cd == 0) error(std::string("Files of type '") + I->second + "' are not recognized." ); + if (isDebug) + DumpConfigData(cd,I->second); // We have valid configuration data, now figure out where the output // of compilation should end up. |

