================
@@ -4424,6 +4454,51 @@ void ASTReader::loadPendingDeclChain(Decl *FirstLocal,
uint64_t LocalOffset) {
ASTDeclReader::attachLatestDecl(CanonDecl, MostRecent);
}
+void ASTReader::loadPreferredNameAttribute(
+ const PendingPreferredNameAttribute &PreferredNameAttribute) {
+ Decl *D = PreferredNameAttribute.D;
+ ModuleFile *M = getOwningModuleFile(D);
+
+ unsigned LocalDeclIndex = D->getGlobalID().getLocalDeclIndex();
+ const DeclOffset &DOffs = M->DeclOffsets[LocalDeclIndex];
+ RecordLocation Loc(M, DOffs.getBitOffset(M->DeclsBlockStartOffset));
+
+ llvm::BitstreamCursor &Cursor = Loc.F->DeclsCursor;
+ SavedStreamPosition SavedPosition(Cursor);
+ if (llvm::Error Err = Cursor.JumpToBit(Loc.Offset)) {
+ Error(std::move(Err));
+ }
+
+ Expected<unsigned> MaybeCode = Cursor.ReadCode();
+ if (!MaybeCode) {
+ llvm::report_fatal_error(
+ Twine("ASTReader::loadPreferredNameAttribute failed reading code: ") +
+ toString(MaybeCode.takeError()));
+ }
+ unsigned Code = MaybeCode.get();
+
+ ASTRecordReader Record(*this, *Loc.F);
+ Expected<unsigned> MaybeRecCode = Record.readRecord(Cursor, Code);
+ if (!MaybeRecCode) {
+ llvm::report_fatal_error(
+ Twine(
+ "ASTReader::loadPreferredNameAttribute failed reading rec code: ")
+
+ toString(MaybeCode.takeError()));
+ }
+ unsigned RecCode = MaybeRecCode.get();
+ if (RecCode != DECL_CXX_RECORD) {
+ llvm::report_fatal_error(
+ Twine("ASTReader::loadPreferredNameAttribute failed reading rec code: "
+ "expected CXXRecord") +
+ toString(MaybeCode.takeError()));
+ }
+
+ Record.skipInts(PreferredNameAttribute.RecordIdx);
+ Attr *PreferredNameAttr = Record.readAttr(nullptr);
+ AttrVec &Attrs = getContext().getDeclAttrs(D);
+ Attrs.push_back(PreferredNameAttr);
----------------
ilya-biryukov wrote:
NIT: maybe merge the two lines?
`getContext().getDeclAttrs(D).push_back(PreferredNameAttr)`
https://github.com/llvm/llvm-project/pull/122726
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits