projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make error messages more useful than jsut an abort
[oota-llvm.git]
/
lib
/
AsmParser
/
Parser.cpp
diff --git
a/lib/AsmParser/Parser.cpp
b/lib/AsmParser/Parser.cpp
index 3e55e90461f96be071ebaff61b6ccc08325121ef..dfe8d559a44cd526c8c28ea788e3bd907be9cc39 100644
(file)
--- a/
lib/AsmParser/Parser.cpp
+++ b/
lib/AsmParser/Parser.cpp
@@
-7,7
+7,6
@@
#include "llvm/Analysis/Verifier.h"
#include "llvm/Module.h"
#include "ParserInternals.h"
#include "llvm/Analysis/Verifier.h"
#include "llvm/Module.h"
#include "ParserInternals.h"
-#include <stdio.h> // for sprintf
using std::string;
// The useful interface defined by this file... Parse an ascii file, and return
using std::string;
// The useful interface defined by this file... Parse an ascii file, and return
@@
-16,26
+15,24
@@
using std::string;
Module *ParseAssemblyFile(const string &Filename) { // throw (ParseException)
FILE *F = stdin;
Module *ParseAssemblyFile(const string &Filename) { // throw (ParseException)
FILE *F = stdin;
- if (Filename != "-")
+ if (Filename != "-")
{
F = fopen(Filename.c_str(), "r");
F = fopen(Filename.c_str(), "r");
- if (F == 0) {
- throw ParseException(Filename, string("Could not open file '") +
- Filename + "'");
+ if (F == 0)
+ throw ParseException(Filename, "Could not open file '" + Filename + "'");
}
}
- // TODO: If this throws an exception, F is not closed.
- Module *Result = RunVMAsmParser(Filename, F);
+ Module *Result;
+ try {
+ Result = RunVMAsmParser(Filename, F);
+ } catch (...) {
+ if (F != stdin) fclose(F); // Make sure to close file descriptor if an
+ throw; // exception is thrown
+ }
if (F != stdin)
fclose(F);
if (F != stdin)
fclose(F);
- if (Result) { // Check to see that it is valid...
- if (verifyModule(Result)) {
- delete Result;
- throw ParseException(Filename, "Source file is not well formed LLVM!");
- }
- }
return Result;
}
return Result;
}