summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/include/clang/Serialization/ASTWriter.h14
1 files changed, 5 insertions, 9 deletions
diff --git a/clang/include/clang/Serialization/ASTWriter.h b/clang/include/clang/Serialization/ASTWriter.h
index a5915e7c7eb..c1ec38c8890 100644
--- a/clang/include/clang/Serialization/ASTWriter.h
+++ b/clang/include/clang/Serialization/ASTWriter.h
@@ -704,13 +704,10 @@ class ASTRecordWriter {
/// declaration or type.
SmallVector<Stmt *, 16> StmtsToEmit;
- /// Worst case: bases, vbases, visible and lexical contents, local redecls.
- static const int MaxOffsetIndices = 5;
/// \brief Indices of record elements that describe offsets within the
/// bitcode. These will be converted to offsets relative to the current
/// record when emitted.
- unsigned OffsetIndices[MaxOffsetIndices];
- unsigned NumOffsetIndices = 0;
+ SmallVector<unsigned, 8> OffsetIndices;
/// \brief Flush all of the statements and expressions that have
/// been added to the queue via AddStmt().
@@ -719,13 +716,13 @@ class ASTRecordWriter {
void PrepareToEmit(uint64_t MyOffset) {
// Convert offsets into relative form.
- for (unsigned I = 0; I != NumOffsetIndices; ++I) {
- auto &StoredOffset = (*Record)[OffsetIndices[I]];
+ for (unsigned I : OffsetIndices) {
+ auto &StoredOffset = (*Record)[I];
assert(StoredOffset < MyOffset && "invalid offset");
if (StoredOffset)
StoredOffset = MyOffset - StoredOffset;
}
- NumOffsetIndices = 0;
+ OffsetIndices.clear();
}
public:
@@ -779,8 +776,7 @@ public:
/// \brief Add a bit offset into the record. This will be converted into an
/// offset relative to the current record when emitted.
void AddOffset(uint64_t BitOffset) {
- assert(NumOffsetIndices != MaxOffsetIndices && "too many offset indices");
- OffsetIndices[NumOffsetIndices++] = Record->size();
+ OffsetIndices.push_back(Record->size());
Record->push_back(BitOffset);
}
OpenPOWER on IntegriCloud