core/sal: register issue fixed

Before, it was not possible to add registers in arbitrary order.

Change-Id: I952c03ea4339da2cdaf34bd4546c76c33cecd4cd
This commit is contained in:
Richard Hellwig
2013-11-01 17:26:26 +01:00
parent aec5798f32
commit 3bf64351a4

View File

@ -7,9 +7,10 @@ void CPUArchitecture::m_addRegister(Register* reg, RegisterType type)
{
// We may be called multiple times with the same register, if it needs to
// reside in multiple subsets.
if (std::find(m_Registers.begin(), m_Registers.end(), reg) == m_Registers.end()) {
m_Registers.push_back(reg);
if ((m_Registers.size()) < reg->getId()+1) {
m_Registers.resize(reg->getId()+1);
}
m_Registers[reg->getId()] = reg;
UniformRegisterSet* urs = getRegisterSetOfType(type);
if (!urs) {
@ -21,7 +22,7 @@ void CPUArchitecture::m_addRegister(Register* reg, RegisterType type)
Register* CPUArchitecture::getRegister(size_t i) const
{
assert(i < m_Registers.size() && "FATAL ERROR: Invalid index provided!");
assert(i < m_Registers.size() && m_Registers[i] != NULL && "FATAL ERROR: Invalid index provided!");
assert(m_Registers[i]->getId() == i && "FATAL ERROR: Register index mismatch");
return m_Registers[i];
}