[clang] [clang] Remove diagnostic that came with `[[clang::preferred_type]]` (PR #70632)
Vlad Serebrennikov via cfe-commits
cfe-commits at lists.llvm.org
Mon Oct 30 00:47:25 PDT 2023
https://github.com/Endilll created https://github.com/llvm/llvm-project/pull/70632
https://github.com/llvm/llvm-project/pull/69104 introduce a diagnostic that checked underlying type of an enum against type of bit-field that is annotated with `[[clang::preferred_type]]`. When I tried to introduce this annotation in https://github.com/llvm/llvm-project/pull/70349, it turned out to be too chatty, despite effort to avoid that.
>From 63ca596224b3150b4225279bd3b07ce42a7fa86c Mon Sep 17 00:00:00 2001
From: Vlad Serebrennikov <serebrennikov.vladislav at gmail.com>
Date: Mon, 30 Oct 2023 10:44:28 +0300
Subject: [PATCH] [clang] Remove diagnostic that came with
[[clang::preferred_type]]
---
clang/include/clang/Basic/DiagnosticGroups.td | 1 -
.../clang/Basic/DiagnosticSemaKinds.td | 3 ---
clang/lib/Sema/SemaDeclAttr.cpp | 22 -------------------
3 files changed, 26 deletions(-)
diff --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td
index 9a8f3f03b39d165..4c4820d17b7184c 100644
--- a/clang/include/clang/Basic/DiagnosticGroups.td
+++ b/clang/include/clang/Basic/DiagnosticGroups.td
@@ -54,7 +54,6 @@ def BitFieldConstantConversion : DiagGroup<"bitfield-constant-conversion",
[SingleBitBitFieldConstantConversion]>;
def BitFieldEnumConversion : DiagGroup<"bitfield-enum-conversion">;
def BitFieldWidth : DiagGroup<"bitfield-width">;
-def BitFieldType : DiagGroup<"bitfield-type">;
def CompoundTokenSplitByMacro : DiagGroup<"compound-token-split-by-macro">;
def CompoundTokenSplitBySpace : DiagGroup<"compound-token-split-by-space">;
def CompoundTokenSplit : DiagGroup<"compound-token-split",
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index 453bd8a9a340425..70831fa0d91f2e3 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -3167,9 +3167,6 @@ def err_invalid_branch_protection_spec : Error<
"invalid or misplaced branch protection specification '%0'">;
def warn_unsupported_branch_protection_spec : Warning<
"unsupported branch protection specification '%0'">, InGroup<BranchProtection>;
-def warn_attribute_underlying_type_mismatch : Warning<
- "underlying type %0 of enumeration %1 doesn't match bit-field type %2">,
- InGroup<BitFieldType>;
def warn_unsupported_target_attribute
: Warning<"%select{unsupported|duplicate|unknown}0%select{| CPU|"
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp
index fc4e3ccf29a6051..03ec8ece0e4e124 100644
--- a/clang/lib/Sema/SemaDeclAttr.cpp
+++ b/clang/lib/Sema/SemaDeclAttr.cpp
@@ -5928,28 +5928,6 @@ static void handlePreferredTypeAttr(Sema &S, Decl *D, const ParsedAttr &AL) {
S.RequireCompleteType(ParmTSI->getTypeLoc().getBeginLoc(), QT,
diag::err_incomplete_type);
- if (QT->isEnumeralType()) {
- auto IsCorrespondingType = [&](QualType LHS, QualType RHS) {
- assert(LHS != RHS);
- if (LHS->isSignedIntegerType())
- return LHS == S.getASTContext().getCorrespondingSignedType(RHS);
- return LHS == S.getASTContext().getCorrespondingUnsignedType(RHS);
- };
- QualType BitfieldType =
- cast<FieldDecl>(D)->getType()->getCanonicalTypeUnqualified();
- QualType EnumUnderlyingType = QT->getAs<EnumType>()
- ->getDecl()
- ->getIntegerType()
- ->getCanonicalTypeUnqualified();
- if (EnumUnderlyingType != BitfieldType &&
- !IsCorrespondingType(EnumUnderlyingType, BitfieldType)) {
- S.Diag(ParmTSI->getTypeLoc().getBeginLoc(),
- diag::warn_attribute_underlying_type_mismatch)
- << EnumUnderlyingType << QT << BitfieldType;
- return;
- }
- }
-
D->addAttr(::new (S.Context) PreferredTypeAttr(S.Context, AL, ParmTSI));
}
More information about the cfe-commits
mailing list