Author: Craig Topper Date: 2023-02-28T11:16:45-08:00 New Revision: 8ce68969b90288a3dc75c5c15283fc11f97b278a
URL: https://github.com/llvm/llvm-project/commit/8ce68969b90288a3dc75c5c15283fc11f97b278a DIFF: https://github.com/llvm/llvm-project/commit/8ce68969b90288a3dc75c5c15283fc11f97b278a.diff LOG: [Sema] Add missing entries to the arrays in GetImplicitConversionName and GetConversionRank. It appears that ICK_Zero_Queue_Conversion was inserted into the ICK enum without updating this table. Easy to do since the table size was set to ICK_Num_Conversion_Kinds. I've used ICR_Exact_Match to match what was previously done for ICK_Zero_Event_Conversion that last time someone noticed this had happened. To prevent this from happening again, I've removed the explicit size and used a static_assert to check the size against ICK_Num_Conversion_Kinds. Differential Revision: https://reviews.llvm.org/D144990 Added: Modified: clang/lib/Sema/SemaOverload.cpp Removed: ################################################################################ diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index 80b414c369777..3f1bb3f571222 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -120,7 +120,7 @@ CompareDerivedToBaseConversions(Sema &S, SourceLocation Loc, /// corresponding to the given implicit conversion kind. ImplicitConversionRank clang::GetConversionRank(ImplicitConversionKind Kind) { static const ImplicitConversionRank - Rank[(int)ICK_Num_Conversion_Kinds] = { + Rank[] = { ICR_Exact_Match, ICR_Exact_Match, ICR_Exact_Match, @@ -149,16 +149,20 @@ ImplicitConversionRank clang::GetConversionRank(ImplicitConversionKind Kind) { ICR_Exact_Match, // NOTE(gbiv): This may not be completely right -- // it was omitted by the patch that added // ICK_Zero_Event_Conversion + ICR_Exact_Match, // NOTE(ctopper): This may not be completely right -- + // it was omitted by the patch that added + // ICK_Zero_Queue_Conversion ICR_C_Conversion, ICR_C_Conversion_Extension }; + static_assert(std::size(Rank) == (int)ICK_Num_Conversion_Kinds); return Rank[(int)Kind]; } /// GetImplicitConversionName - Return the name of this kind of /// implicit conversion. static const char* GetImplicitConversionName(ImplicitConversionKind Kind) { - static const char* const Name[(int)ICK_Num_Conversion_Kinds] = { + static const char* const Name[] = { "No conversion", "Lvalue-to-rvalue", "Array-to-pointer", @@ -185,9 +189,11 @@ static const char* GetImplicitConversionName(ImplicitConversionKind Kind) { "Transparent Union Conversion", "Writeback conversion", "OpenCL Zero Event Conversion", + "OpenCL Zero Queue Conversion", "C specific type conversion", "Incompatible pointer conversion" }; + static_assert(std::size(Name) == (int)ICK_Num_Conversion_Kinds); return Name[Kind]; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits