================ @@ -1496,9 +1615,37 @@ static bool IsStructurallyEquivalent(StructuralEquivalenceContext &Context, return false; } - if (Field1->isBitField()) - return IsStructurallyEquivalent(Context, Field1->getBitWidth(), - Field2->getBitWidth()); + if ((Field1->isBitField() || Field2->isBitField()) && + !IsStructurallyEquivalent(Context, Field1->getBitWidth(), + Field2->getBitWidth())) { + if (Context.Complain) { + auto DiagNote = [&](const FieldDecl *FD, + DiagnosticBuilder ( + StructuralEquivalenceContext::*Diag)( + SourceLocation, unsigned)) { + if (FD->isBitField()) { + std::string Str; + llvm::raw_string_ostream OS(Str); + PrintingPolicy Policy(Context.LangOpts); + FD->getBitWidth()->printPretty(OS, nullptr, Policy); ---------------- AaronBallman wrote:
I ended up switching to use `getBitWidthValue()`; I still can't find a way to induce an issue with it and it simplifies things. https://github.com/llvm/llvm-project/pull/132939 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits