From: Evan Cheng Date: Wed, 1 Nov 2006 23:03:11 +0000 (+0000) Subject: Tied-to constraint must be op_with_larger_idx = op_with_smaller_idx or else throw... X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=4c2b7a380830d783e7df4c2c3418b8921ed0684f;p=oota-llvm.git Tied-to constraint must be op_with_larger_idx = op_with_smaller_idx or else throw an exception. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31361 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/utils/TableGen/CodeGenTarget.cpp b/utils/TableGen/CodeGenTarget.cpp index 489aba98141..753651d950f 100644 --- a/utils/TableGen/CodeGenTarget.cpp +++ b/utils/TableGen/CodeGenTarget.cpp @@ -280,6 +280,7 @@ static std::pair parseConstraint(const std::string &CStr, assert(pos != std::string::npos && "Unrecognized constraint"); std::string Name = CStr.substr(1, pos); // Skip '$' + // TIED_TO: $src1 = $dst const std::string delims(" \t"); std::string::size_type wpos = Name.find_first_of(delims); if (wpos != std::string::npos) @@ -291,6 +292,8 @@ static std::pair parseConstraint(const std::string &CStr, if (wpos != std::string::npos) Name = Name.substr(wpos+1); unsigned TIdx = I->getOperandNamed(Name); + if (TIdx >= FIdx) + throw "Illegal tied-to operand constraint '" + CStr + "'"; return std::make_pair(FIdx, (TIdx << 16) | 1); }