projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tidy up. remove unused local.
[oota-llvm.git]
/
lib
/
CompilerDriver
/
Main.cpp
diff --git
a/lib/CompilerDriver/Main.cpp
b/lib/CompilerDriver/Main.cpp
index 96877077cc8a98597b3027000dfcd2d5fb08f523..0a6613aa77a3b4e4d1f172e88b4c4a9da01cad37 100644
(file)
--- a/
lib/CompilerDriver/Main.cpp
+++ b/
lib/CompilerDriver/Main.cpp
@@
-11,16
+11,15
@@
//
//===----------------------------------------------------------------------===//
//
//===----------------------------------------------------------------------===//
+#include "llvm/CompilerDriver/AutoGenerated.h"
#include "llvm/CompilerDriver/BuiltinOptions.h"
#include "llvm/CompilerDriver/CompilationGraph.h"
#include "llvm/CompilerDriver/Error.h"
#include "llvm/CompilerDriver/BuiltinOptions.h"
#include "llvm/CompilerDriver/CompilationGraph.h"
#include "llvm/CompilerDriver/Error.h"
-#include "llvm/CompilerDriver/Plugin.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/System/Path.h"
#include <sstream>
#include "llvm/Support/raw_ostream.h"
#include "llvm/System/Path.h"
#include <sstream>
-#include <stdexcept>
#include <string>
namespace cl = llvm::cl;
#include <string>
namespace cl = llvm::cl;
@@
-31,9
+30,9
@@
namespace {
std::stringstream* GlobalTimeLog;
std::stringstream* GlobalTimeLog;
- sys::Path getTempDir() {
- sys::Path tempDir;
-
+ /// GetTempDir - Get the temporary directory location. Returns non-zero value
+ /// on error.
+ int GetTempDir(sys::Path& tempDir) {
// The --temp-dir option.
if (!TempDirname.empty()) {
tempDir = TempDirname;
// The --temp-dir option.
if (!TempDirname.empty()) {
tempDir = TempDirname;
@@
-41,7
+40,7
@@
namespace {
// GCC 4.5-style -save-temps handling.
else if (SaveTemps == SaveTempsEnum::Unset) {
tempDir = sys::Path::GetTemporaryDirectory();
// GCC 4.5-style -save-temps handling.
else if (SaveTemps == SaveTempsEnum::Unset) {
tempDir = sys::Path::GetTemporaryDirectory();
- return
tempDir
;
+ return
0
;
}
else if (SaveTemps == SaveTempsEnum::Obj && !OutputFilename.empty()) {
tempDir = OutputFilename;
}
else if (SaveTemps == SaveTempsEnum::Obj && !OutputFilename.empty()) {
tempDir = OutputFilename;
@@
-49,35
+48,35
@@
namespace {
}
else {
// SaveTemps == Cwd --> use current dir (leave tempDir empty).
}
else {
// SaveTemps == Cwd --> use current dir (leave tempDir empty).
- return
tempDir
;
+ return
0
;
}
if (!tempDir.exists()) {
std::string ErrMsg;
}
if (!tempDir.exists()) {
std::string ErrMsg;
- if (tempDir.createDirectoryOnDisk(true, &ErrMsg))
- throw std::runtime_error(ErrMsg);
+ if (tempDir.createDirectoryOnDisk(true, &ErrMsg)) {
+ PrintError(ErrMsg);
+ return 1;
+ }
}
}
- return
tempDir
;
+ return
0
;
}
}
- /// BuildTargets - A small wrapper for CompilationGraph::Build.
+ /// BuildTargets - A small wrapper for CompilationGraph::Build. Returns
+ /// non-zero value in case of error.
int BuildTargets(CompilationGraph& graph, const LanguageMap& langMap) {
int ret;
int BuildTargets(CompilationGraph& graph, const LanguageMap& langMap) {
int ret;
-
const sys::Path& tempDir = getTempDir()
;
+
sys::Path tempDir
;
bool toDelete = (SaveTemps == SaveTempsEnum::Unset);
bool toDelete = (SaveTemps == SaveTempsEnum::Unset);
- try {
- ret = graph.Build(tempDir, langMap);
- }
- catch(...) {
- if (toDelete)
- tempDir.eraseFromDisk(true);
- throw;
- }
+ if (int ret = GetTempDir(tempDir))
+ return ret;
+
+ ret = graph.Build(tempDir, langMap);
if (toDelete)
tempDir.eraseFromDisk(true);
if (toDelete)
tempDir.eraseFromDisk(true);
+
return ret;
}
}
return ret;
}
}
@@
-89,67
+88,58
@@
void AppendToGlobalTimeLog(const std::string& cmd, double time) {
*GlobalTimeLog << "# " << cmd << ' ' << time << '\n';
}
*GlobalTimeLog << "# " << cmd << ' ' << time << '\n';
}
-// Sometimes
plugins want to condition on the value in argv[0]
.
+// Sometimes
user code wants to access the argv[0] value
.
const char* ProgramName;
int Main(int argc, char** argv) {
const char* ProgramName;
int Main(int argc, char** argv) {
- try {
- LanguageMap langMap;
- CompilationGraph graph;
-
- ProgramName = argv[0];
+ int ret = 0;
+ LanguageMap langMap;
+ CompilationGraph graph;
- cl::ParseCommandLineOptions
- (argc, argv, "LLVM Compiler Driver (Work In Progress)", true);
+ ProgramName = argv[0];
- PluginLoader Plugins;
- Plugins.RunInitialization(langMap, graph);
+ cl::ParseCommandLineOptions
+ (argc, argv,
+ /* Overview = */ "LLVM Compiler Driver (Work In Progress)",
+ /* ReadResponseFiles = */ false);
- if (CheckGraph) {
- int ret = graph.Check();
- if (!ret)
- llvm::errs() << "check-graph: no errors found.\n";
+ if (int ret = autogenerated::RunInitialization(langMap, graph))
+ return ret;
- return ret;
- }
+ if (CheckGraph) {
+ ret = graph.Check();
+ if (!ret)
+ llvm::errs() << "check-graph: no errors found.\n";
- if (ViewGraph) {
- graph.viewGraph();
- if (!WriteGraph)
- return 0;
- }
+ return ret;
+ }
- if (WriteGraph) {
- graph.writeGraph(OutputFilename.empty()
- ? std::string("compilation-graph.dot")
- : OutputFilename);
+ if (ViewGraph) {
+ graph.viewGraph();
+ if (!WriteGraph)
return 0;
return 0;
-
}
+ }
- if (Time) {
- GlobalTimeLog = new std::stringstream;
- GlobalTimeLog->precision(2);
- }
+ if (WriteGraph) {
+ const std::string& Out = (OutputFilename.empty()
+ ? std::string("compilation-graph.dot")
+ : OutputFilename);
+ return graph.writeGraph(Out);
+ }
- int ret = BuildTargets(graph, langMap);
+ if (Time) {
+ GlobalTimeLog = new std::stringstream;
+ GlobalTimeLog->precision(2);
+ }
- if (Time) {
- llvm::errs() << GlobalTimeLog->str();
- delete GlobalTimeLog;
- }
+ ret = BuildTargets(graph, langMap);
- return ret;
- }
- catch(llvmc::error_code& ec) {
- return ec.code();
+ if (Time) {
+ llvm::errs() << GlobalTimeLog->str();
+ delete GlobalTimeLog;
}
}
- catch(const std::exception& ex) {
- llvm::errs() << argv[0] << ": " << ex.what() << '\n';
- }
- catch(...) {
- llvm::errs() << argv[0] << ": unknown error!\n";
- }
- return 1;
+
+ return ret;
}
} // end namespace llvmc
}
} // end namespace llvmc