Author: rsmith Date: Thu Apr 14 14:45:19 2016 New Revision: 266359 URL: http://llvm.org/viewvc/llvm-project?rev=266359&view=rev Log: Make this code less brittle. The benefits of a fixed-size array aren't worth the maintenance cost.
Modified: cfe/trunk/include/clang/Serialization/ASTWriter.h Modified: cfe/trunk/include/clang/Serialization/ASTWriter.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Serialization/ASTWriter.h?rev=266359&r1=266358&r2=266359&view=diff ============================================================================== --- cfe/trunk/include/clang/Serialization/ASTWriter.h (original) +++ cfe/trunk/include/clang/Serialization/ASTWriter.h Thu Apr 14 14:45:19 2016 @@ -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); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits