From 7090937330f51c5876ce66a475be9c0688a4a6d9 Mon Sep 17 00:00:00 2001 From: Joerg Sonnenberger Date: Wed, 24 Oct 2012 22:03:59 +0000 Subject: Don't use stack unwinding to provide the location information for SetTheory, but pass down the location explicitly. llvm-svn: 166629 --- llvm/utils/TableGen/CodeGenSchedule.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'llvm/utils/TableGen/CodeGenSchedule.cpp') diff --git a/llvm/utils/TableGen/CodeGenSchedule.cpp b/llvm/utils/TableGen/CodeGenSchedule.cpp index fc101eec614..1cca3e3f859 100644 --- a/llvm/utils/TableGen/CodeGenSchedule.cpp +++ b/llvm/utils/TableGen/CodeGenSchedule.cpp @@ -38,8 +38,9 @@ static void dumpIdxVec(const SmallVectorImpl &V) { // (instrs a, b, ...) Evaluate and union all arguments. Identical to AddOp. struct InstrsOp : public SetTheory::Operator { - void apply(SetTheory &ST, DagInit *Expr, SetTheory::RecSet &Elts) { - ST.evaluate(Expr->arg_begin(), Expr->arg_end(), Elts); + void apply(SetTheory &ST, DagInit *Expr, SetTheory::RecSet &Elts, + ArrayRef Loc) { + ST.evaluate(Expr->arg_begin(), Expr->arg_end(), Elts, Loc); } }; @@ -55,13 +56,15 @@ struct InstRegexOp : public SetTheory::Operator { const CodeGenTarget &Target; InstRegexOp(const CodeGenTarget &t): Target(t) {} - void apply(SetTheory &ST, DagInit *Expr, SetTheory::RecSet &Elts) { + void apply(SetTheory &ST, DagInit *Expr, SetTheory::RecSet &Elts, + ArrayRef Loc) { SmallVector RegexList; for (DagInit::const_arg_iterator AI = Expr->arg_begin(), AE = Expr->arg_end(); AI != AE; ++AI) { StringInit *SI = dyn_cast(*AI); if (!SI) - throw "instregex requires pattern string: " + Expr->getAsString(); + throw TGError(Loc, "instregex requires pattern string: " + + Expr->getAsString()); std::string pat = SI->getValue(); // Implement a python-style prefix match. if (pat[0] != '^') { -- cgit v1.2.3