From 4257098c360f598209c2b7e66579e254799e4ed5 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 26 Nov 2003 07:24:58 +0000 Subject: To not barf when an error occurs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10236 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AsmParser/llvmAsmParser.y | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'lib') diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index e5018ec..5706b53 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -554,10 +554,6 @@ static bool setValueName(Value *V, char *NameStr) { } } - // Clear the symbol table so it doesn't complain when it - // gets destructed - CurFun.LocalSymtab.clear(); - ThrowException("Redefinition of value named '" + Name + "' in the '" + V->getType()->getDescription() + "' type plane!"); } @@ -572,10 +568,6 @@ static bool setValueName(Value *V, char *NameStr) { // If it already exists if (Existing) { - // Clear the symbol table so it doesn't complain when it - // gets destructed - CurFun.LocalSymtab.clear(); - // Bail ThrowException("Redefinition of value named '" + Name + "' in the '" + V->getType()->getDescription() + "' type plane!"); @@ -646,7 +638,15 @@ Module *RunVMAsmParser(const std::string &Filename, FILE *F) { // Allocate a new module to read CurModule.CurrentModule = new Module(Filename); - yyparse(); // Parse the file. + + try { + yyparse(); // Parse the file. + } catch (...) { + // Clear the symbol table so it doesn't complain when it + // gets destructed + CurFun.LocalSymtab.clear(); + throw; + } Module *Result = ParserResult; -- cgit v1.1