================ @@ -3115,7 +3115,19 @@ class FieldDecl : public DeclaratorDecl, public Mergeable<FieldDecl> { /// Returns the index of this field within its record, /// as appropriate for passing to ASTRecordLayout::getFieldOffset. - unsigned getFieldIndex() const; + unsigned getFieldIndex() const { + const FieldDecl *C = getCanonicalDecl(); + if (C->CachedFieldIndex == 0) ---------------- rnk wrote:
I'm reasonably confident that that is the case, every canonical decl in the declaration chain is the same at any point in time. I think the surprising thing about canonical declarations is that they can *change* when modules are lazily loaded, and that has bit me in the past when attempting to apply attributes to canonical declarations. https://github.com/llvm/llvm-project/pull/122029 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits