mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
Use a std::map so that we record the group ID.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174910 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -531,8 +531,7 @@ bool BitcodeReader::ParseAttributeGroupBlock() {
|
|||||||
if (Record.size() < 3)
|
if (Record.size() < 3)
|
||||||
return Error("Invalid ENTRY record");
|
return Error("Invalid ENTRY record");
|
||||||
|
|
||||||
// FIXME: Record[0] is the 'group ID'. What should we do with it here?
|
uint64_t GrpID = Record[0];
|
||||||
|
|
||||||
uint64_t Idx = Record[1]; // Index of the object this attribute refers to.
|
uint64_t Idx = Record[1]; // Index of the object this attribute refers to.
|
||||||
|
|
||||||
AttrBuilder B;
|
AttrBuilder B;
|
||||||
@@ -545,27 +544,29 @@ bool BitcodeReader::ParseAttributeGroupBlock() {
|
|||||||
else
|
else
|
||||||
B.addStackAlignmentAttr(Record[++i]);
|
B.addStackAlignmentAttr(Record[++i]);
|
||||||
} else { // String attribute
|
} else { // String attribute
|
||||||
|
assert((Record[i] == 3 || Record[i] == 4) &&
|
||||||
|
"Invalid attribute group entry");
|
||||||
bool HasValue = (Record[i++] == 4);
|
bool HasValue = (Record[i++] == 4);
|
||||||
SmallString<64> KindStr;
|
SmallString<64> KindStr;
|
||||||
SmallString<64> ValStr;
|
SmallString<64> ValStr;
|
||||||
|
|
||||||
while (Record[i] != 0 && i != e)
|
while (Record[i] != 0 && i != e)
|
||||||
KindStr += Record[i++];
|
KindStr += Record[i++];
|
||||||
assert(Record[i] == 0 && "Kind string not terminated with 0");
|
assert(Record[i] == 0 && "Kind string not null terminated");
|
||||||
|
|
||||||
if (HasValue) {
|
if (HasValue) {
|
||||||
// Has a value associated with it.
|
// Has a value associated with it.
|
||||||
++i; // Skip the '0' that terminates the kind string.
|
++i; // Skip the '0' that terminates the "kind" string.
|
||||||
while (Record[i] != 0 && i != e)
|
while (Record[i] != 0 && i != e)
|
||||||
ValStr += Record[i++];
|
ValStr += Record[i++];
|
||||||
assert(Record[i] == 0 && "Value string not terminated with 0");
|
assert(Record[i] == 0 && "Value string not null terminated");
|
||||||
}
|
}
|
||||||
|
|
||||||
B.addAttribute(KindStr.str(), ValStr.str());
|
B.addAttribute(KindStr.str(), ValStr.str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MAttributeGroups.push_back(AttributeSet::get(Context, Idx, B));
|
MAttributeGroups[GrpID] = AttributeSet::get(Context, Idx, B);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -149,7 +149,7 @@ class BitcodeReader : public GVMaterializer {
|
|||||||
std::vector<AttributeSet> MAttributes;
|
std::vector<AttributeSet> MAttributes;
|
||||||
|
|
||||||
/// \brief The set of attribute groups.
|
/// \brief The set of attribute groups.
|
||||||
std::vector<AttributeSet> MAttributeGroups;
|
std::map<unsigned, AttributeSet> MAttributeGroups;
|
||||||
|
|
||||||
/// FunctionBBs - While parsing a function body, this is a list of the basic
|
/// FunctionBBs - While parsing a function body, this is a list of the basic
|
||||||
/// blocks for the function.
|
/// blocks for the function.
|
||||||
|
Reference in New Issue
Block a user