mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
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
This commit is contained in:
parent
981b5bd708
commit
4c2b7a3808
@ -280,6 +280,7 @@ static std::pair<unsigned, unsigned> parseConstraint(const std::string &CStr,
|
|||||||
assert(pos != std::string::npos && "Unrecognized constraint");
|
assert(pos != std::string::npos && "Unrecognized constraint");
|
||||||
std::string Name = CStr.substr(1, pos); // Skip '$'
|
std::string Name = CStr.substr(1, pos); // Skip '$'
|
||||||
|
|
||||||
|
// TIED_TO: $src1 = $dst
|
||||||
const std::string delims(" \t");
|
const std::string delims(" \t");
|
||||||
std::string::size_type wpos = Name.find_first_of(delims);
|
std::string::size_type wpos = Name.find_first_of(delims);
|
||||||
if (wpos != std::string::npos)
|
if (wpos != std::string::npos)
|
||||||
@ -291,6 +292,8 @@ static std::pair<unsigned, unsigned> parseConstraint(const std::string &CStr,
|
|||||||
if (wpos != std::string::npos)
|
if (wpos != std::string::npos)
|
||||||
Name = Name.substr(wpos+1);
|
Name = Name.substr(wpos+1);
|
||||||
unsigned TIdx = I->getOperandNamed(Name);
|
unsigned TIdx = I->getOperandNamed(Name);
|
||||||
|
if (TIdx >= FIdx)
|
||||||
|
throw "Illegal tied-to operand constraint '" + CStr + "'";
|
||||||
return std::make_pair(FIdx, (TIdx << 16) | 1);
|
return std::make_pair(FIdx, (TIdx << 16) | 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user