[clang-tools-extra] [clang] [C23] Fix crash with _BitInt running clang-tidy (PR #65889)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Sep 10 08:03:29 PDT 2023
================
@@ -1333,7 +1333,15 @@ void StmtProfiler::VisitPredefinedExpr(const PredefinedExpr *S) {
void StmtProfiler::VisitIntegerLiteral(const IntegerLiteral *S) {
VisitExpr(S);
S->getValue().Profile(ID);
- ID.AddInteger(S->getType()->castAs<BuiltinType>()->getKind());
+
+ int FoldingSetID = 0;
+
+ if (S->getType()->isBitIntType())
+ FoldingSetID = S->getValue().getSExtValue();
+ else
+ FoldingSetID = S->getType()->castAs<BuiltinType>()->getKind();
+
+ ID.AddInteger(FoldingSetID);
----------------
cor3ntin wrote:
I think that can lead to different expression having the same id.
Did you consider using `S->getBitWidthValue()` that gives you the number of bits in the bitfield + a boolean that tells you whether it is a bitfield?
https://github.com/llvm/llvm-project/pull/65889
More information about the cfe-commits
mailing list