Skip to content

Commit 743eb11

Browse files
authored
merge main into amd-staging (llvm#1955)
2 parents 6d9199e + 957507a commit 743eb11

File tree

271 files changed

+6652
-2163
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

271 files changed

+6652
-2163
lines changed

clang-tools-extra/docs/clang-tidy/checks/boost/use-ranges.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ Calls to the following std library algorithms are checked:
6464
``std::mismatch``,
6565
``std::next_permutation``,
6666
``std::none_of``,
67-
``std::parital_sum``,
67+
``std::partial_sum``,
6868
``std::partial_sort_copy``,
6969
``std::partition_copy``,
7070
``std::partition_point``,

clang-tools-extra/docs/clang-tidy/checks/bugprone/casting-through-void.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Note: it is expected that, after applying the suggested fix and using
2626
<../cppcoreguidelines/pro-type-reinterpret-cast>` will emit a warning.
2727
This is intentional: ``reinterpret_cast`` is a dangerous operation that can
2828
easily break the strict aliasing rules when dereferencing the casted pointer,
29-
invoking Undefined Behavior. The warning is there to prompt users to carefuly
29+
invoking Undefined Behavior. The warning is there to prompt users to carefully
3030
analyze whether the usage of ``reinterpret_cast`` is safe, in which case the
3131
warning may be suppressed.
3232

clang/docs/ReleaseNotes.rst

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ Resolutions to C++ Defect Reports
134134
- Bumped the ``__cpp_constexpr`` feature-test macro to ``202002L`` in C++20 mode as indicated in
135135
`P2493R0 <https://wg21.link/P2493R0>`_.
136136

137+
- Implemented `CWG3005 Function parameters should never be name-independent <https://wg21.link/CWG3005>`_.
138+
137139
C Language Changes
138140
------------------
139141

@@ -203,6 +205,10 @@ C Language Changes
203205
``-Wunterminated-string-initialization``. However, this diagnostic is not
204206
silenced by the ``nonstring`` attribute as these initializations are always
205207
incompatible with C++.
208+
- Added ``-Wjump-bypasses-init``, which is off by default and grouped under
209+
``-Wc++-compat``. It diagnoses when a jump (``goto`` to its label, ``switch``
210+
to its ``case``) will bypass the initialization of a local variable, which is
211+
invalid in C++.
206212
- Added the existing ``-Wduplicate-decl-specifier`` diagnostic, which is on by
207213
default, to ``-Wc++-compat`` because duplicated declaration specifiers are
208214
not valid in C++.
@@ -245,6 +251,10 @@ C23 Feature Support
245251
scope.
246252
- Fixed a bug where you could not cast a null pointer constant to type
247253
``nullptr_t``. Fixes #GH133644.
254+
- Implemented `WG14 N3037 <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3037.pdf>`_
255+
which allows tag types to be redefined within the same translation unit so
256+
long as both definitions are structurally equivalent (same tag types, same
257+
tag names, same tag members, etc).
248258
- Fixed a failed assertion with an invalid parameter to the ``#embed``
249259
directive. Fixes #GH126940.
250260

@@ -567,6 +577,9 @@ Bug Fixes to Compiler Builtins
567577
``void(char *, char *)`` to ``void(void *, void *)`` to match GCC's signature
568578
for the same builtin. (#GH47833)
569579

580+
- ``__has_unique_object_representations(Incomplete[])`` is no longer accepted, per
581+
`LWG4113 <https://cplusplus.github.io/LWG/issue4113>`_.
582+
570583
Bug Fixes to Attribute Support
571584
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
572585
- Fixed crash when a parameter to the ``clang::annotate`` attribute evaluates to ``void``. See #GH119125
@@ -643,6 +656,8 @@ Bug Fixes to C++ Support
643656
- Clang now emits a warning when class template argument deduction for alias templates is used in C++17. (#GH133806)
644657
- Fix a crash when checking the template template parameters of a dependent lambda appearing in an alias declaration.
645658
(#GH136432), (#GH137014), (#GH138018)
659+
- Fixed an assertion when trying to constant-fold various builtins when the argument
660+
referred to a reference to an incomplete type. (#GH129397)
646661

647662
Bug Fixes to AST Handling
648663
^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -793,7 +808,7 @@ clang-format
793808

794809
libclang
795810
--------
796-
- Fixed a bug in ``clang_File_isEqual`` that sometimes led to different
811+
- Fixed a bug in ``clang_File_isEqual`` that sometimes led to different
797812
in-memory files to be considered as equal.
798813
- Added ``clang_visitCXXMethods``, which allows visiting the methods
799814
of a class.

clang/include/clang/AST/ASTContext.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3147,6 +3147,7 @@ class ASTContext : public RefCountedBase<ASTContext> {
31473147
QualType mergeTransparentUnionType(QualType, QualType,
31483148
bool OfBlockPointer=false,
31493149
bool Unqualified = false);
3150+
QualType mergeTagDefinitions(QualType, QualType);
31503151

31513152
QualType mergeObjCGCQualifiers(QualType, QualType);
31523153

clang/include/clang/AST/ASTStructuralEquivalence.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ struct StructuralEquivalenceContext {
4343
/// key: (from, to, IgnoreTemplateParmDepth)
4444
using NonEquivalentDeclSet = llvm::DenseSet<std::tuple<Decl *, Decl *, int>>;
4545

46+
/// The language options to use for making a structural equivalence check.
47+
const LangOptions &LangOpts;
48+
4649
/// AST contexts for which we are checking structural equivalence.
4750
ASTContext &FromCtx, &ToCtx;
4851

@@ -76,15 +79,17 @@ struct StructuralEquivalenceContext {
7679
/// Whether to ignore comparing the depth of template param(TemplateTypeParm)
7780
bool IgnoreTemplateParmDepth;
7881

79-
StructuralEquivalenceContext(ASTContext &FromCtx, ASTContext &ToCtx,
82+
StructuralEquivalenceContext(const LangOptions &LangOpts, ASTContext &FromCtx,
83+
ASTContext &ToCtx,
8084
NonEquivalentDeclSet &NonEquivalentDecls,
8185
StructuralEquivalenceKind EqKind,
8286
bool StrictTypeSpelling = false,
8387
bool Complain = true,
8488
bool ErrorOnTagTypeMismatch = false,
8589
bool IgnoreTemplateParmDepth = false)
86-
: FromCtx(FromCtx), ToCtx(ToCtx), NonEquivalentDecls(NonEquivalentDecls),
87-
EqKind(EqKind), StrictTypeSpelling(StrictTypeSpelling),
90+
: LangOpts(LangOpts), FromCtx(FromCtx), ToCtx(ToCtx),
91+
NonEquivalentDecls(NonEquivalentDecls), EqKind(EqKind),
92+
StrictTypeSpelling(StrictTypeSpelling),
8893
ErrorOnTagTypeMismatch(ErrorOnTagTypeMismatch), Complain(Complain),
8994
IgnoreTemplateParmDepth(IgnoreTemplateParmDepth) {}
9095

clang/include/clang/Basic/DiagnosticASTKinds.td

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -478,16 +478,23 @@ def warn_odr_function_type_inconsistent : Warning<
478478
"external function %0 declared with incompatible types in different "
479479
"translation units (%1 vs. %2)">,
480480
InGroup<ODR>;
481+
def warn_odr_tag_type_with_attributes : Warning<
482+
"type %0 has %select{an attribute|a member with an attribute}1 which "
483+
"currently causes the types to be treated as though they are incompatible">,
484+
InGroup<ODR>, DefaultError;
485+
def note_odr_attr_here : Note<"attribute %0 here">;
481486
def err_odr_tag_type_inconsistent
482-
: Error<"type %0 has incompatible definitions in different translation "
483-
"units">;
487+
: Error<"type %0 has incompatible definitions%select{| in different "
488+
"translation units}1">;
484489
def warn_odr_tag_type_inconsistent
485-
: Warning<"type %0 has incompatible definitions in different translation "
486-
"units">,
490+
: Warning<"type %0 has incompatible definitions%select{| in different "
491+
"translation units}1">,
487492
InGroup<ODR>;
488493
def note_odr_tag_kind_here: Note<
489494
"%0 is a %select{struct|interface|union|class|enum}1 here">;
490495
def note_odr_field : Note<"field %0 has type %1 here">;
496+
def note_odr_field_bit_width : Note<"bit-field %0 has bit-width %1 here">;
497+
def note_odr_field_not_bit_field : Note<"field %0 is not a bit-field">;
491498
def note_odr_field_name : Note<"field has name %0 here">;
492499
def note_odr_missing_field : Note<"no corresponding field here">;
493500
def note_odr_base : Note<"class has base type %0">;

clang/include/clang/Basic/DiagnosticGroups.td

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,11 +177,12 @@ def DefaultConstInit : DiagGroup<"default-const-init",
177177
def ImplicitVoidPtrCast : DiagGroup<"implicit-void-ptr-cast">;
178178
def ImplicitIntToEnumCast : DiagGroup<"implicit-int-enum-cast",
179179
[ImplicitEnumEnumCast]>;
180+
def JumpBypassesInit : DiagGroup<"jump-bypasses-init">;
180181
def TentativeDefnCompat : DiagGroup<"tentative-definition-compat">;
181182
def CXXCompat: DiagGroup<"c++-compat", [ImplicitVoidPtrCast, DefaultConstInit,
182-
ImplicitIntToEnumCast, CppKeywordInC,
183-
HiddenCppDecl, TentativeDefnCompat,
184-
InitStringTooLongForCpp,
183+
ImplicitIntToEnumCast, HiddenCppDecl,
184+
InitStringTooLongForCpp, CppKeywordInC,
185+
TentativeDefnCompat, JumpBypassesInit,
185186
DuplicateDeclSpecifier]>;
186187

187188
def ExternCCompat : DiagGroup<"extern-c-compat">;

clang/include/clang/Basic/DiagnosticSemaKinds.td

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6541,6 +6541,16 @@ def warn_missing_braces : Warning<
65416541
"suggest braces around initialization of subobject">,
65426542
InGroup<MissingBraces>, DefaultIgnore;
65436543

6544+
// This diagnostic exists only to determine whether -Wc++-compat was explicitly
6545+
// enabled. This allows us to tell the difference between when a diagnostic was
6546+
// enabled by default, was enabled because its subgroup was enabled, or enabled
6547+
// because the -Wc++-compat superset was enabled, generally for purposes of
6548+
// deciding whether to emit "and is incompatible with C++" on diagnostics which
6549+
// are useful in C alone as well as for compatibility checks.
6550+
def warn_cxx_compat_hack_fake_diagnostic_do_not_emit : Warning<
6551+
"if you see this diagnostic, a Clang developer has made a mistake">,
6552+
InGroup<CXXCompat>, DefaultIgnore;
6553+
65446554
def err_redefinition_of_label : Error<"redefinition of label %0">;
65456555
def err_undeclared_label_use : Error<"use of undeclared label %0">;
65466556
def err_goto_ms_asm_label : Error<
@@ -6561,18 +6571,28 @@ def ext_goto_into_protected_scope : ExtWarn<
65616571
def warn_cxx98_compat_goto_into_protected_scope : Warning<
65626572
"jump from this goto statement to its label is incompatible with C++98">,
65636573
InGroup<CXX98Compat>, DefaultIgnore;
6574+
def warn_cpp_compat_goto_into_protected_scope : Warning<
6575+
"jump from this goto statement to its label is incompatible with C++">,
6576+
InGroup<JumpBypassesInit>, DefaultIgnore;
65646577
def err_switch_into_protected_scope : Error<
65656578
"cannot jump from switch statement to this case label">;
65666579
def warn_cxx98_compat_switch_into_protected_scope : Warning<
65676580
"jump from switch statement to this case label is incompatible with C++98">,
65686581
InGroup<CXX98Compat>, DefaultIgnore;
6582+
def warn_cpp_compat_switch_into_protected_scope : Warning<
6583+
"jump from switch statement to this case label is incompatible with C++">,
6584+
InGroup<JumpBypassesInit>, DefaultIgnore;
65696585
def err_indirect_goto_without_addrlabel : Error<
65706586
"indirect goto in function with no address-of-label expressions">;
65716587
def err_indirect_goto_in_protected_scope : Error<
65726588
"cannot jump from this %select{indirect|asm}0 goto statement to one of its possible targets">;
65736589
def warn_cxx98_compat_indirect_goto_in_protected_scope : Warning<
65746590
"jump from this %select{indirect|asm}0 goto statement to one of its possible targets "
65756591
"is incompatible with C++98">, InGroup<CXX98Compat>, DefaultIgnore;
6592+
def warn_cpp_compat_indirect_goto_in_protected_scope : Warning<
6593+
"jump from this %select{indirect|asm}0 goto statement to one of its possible "
6594+
"targets is incompatible with C++">,
6595+
InGroup<JumpBypassesInit>, DefaultIgnore;
65766596
def note_indirect_goto_target : Note<
65776597
"possible target of %select{indirect|asm}0 goto statement">;
65786598
def note_protected_by_variable_init : Note<
@@ -8234,11 +8254,11 @@ def warn_default_init_const : Warning<
82348254
InGroup<DefaultConstInitVar>, DefaultIgnore;
82358255
def warn_default_init_const_field_unsafe : Warning<
82368256
"default initialization of an object of type %0 with const member leaves the "
8237-
"object uninitialized and is incompatible with C++">,
8257+
"object uninitialized%select{| and is incompatible with C++}1">,
82388258
InGroup<DefaultConstInitFieldUnsafe>;
82398259
def warn_default_init_const_unsafe : Warning<
82408260
"default initialization of an object of type %0 leaves the object "
8241-
"uninitialized and is incompatible with C++">,
8261+
"uninitialized%select{| and is incompatible with C++}1">,
82428262
InGroup<DefaultConstInitVarUnsafe>;
82438263
def err_default_init_const : Error<
82448264
"default initialization of an object of const type %0"
@@ -12993,7 +13013,10 @@ def err_acc_clause_appertainment
1299313013
def err_acc_duplicate_clause_disallowed
1299413014
: Error<"OpenACC '%1' clause cannot appear more than once on a '%0' "
1299513015
"directive">;
12996-
def note_acc_previous_clause_here : Note<"previous clause is here">;
13016+
def note_acc_previous_clause_here : Note<"previous '%0' clause is here">;
13017+
def note_acc_active_applies_clause_here
13018+
: Note<"%enum_select<ACCDeviceTypeApp>{%Active{active}|%Applies{which "
13019+
"applies to}}0 '%1' clause here">;
1299713020
def note_acc_previous_expr_here : Note<"previous expression is here">;
1299813021
def note_acc_previous_reference : Note<"previous reference is here">;
1299913022
def err_acc_branch_in_out_compute_construct
@@ -13079,6 +13102,9 @@ def err_acc_clause_routine_one_of_in_region
1307913102
def err_acc_clause_since_last_device_type
1308013103
: Error<"OpenACC '%0' clause cannot appear more than once%select{| in a "
1308113104
"'device_type' region}2 on a '%1' directive">;
13105+
def err_acc_clause_conflicts_prev_dev_type
13106+
: Error<"OpenACC '%0' clause applies to 'device_type' '%1', which "
13107+
"conflicts with previous '%0' clause">;
1308213108

1308313109
def err_acc_reduction_num_gangs_conflict
1308413110
: Error<"OpenACC '%1' clause %select{|with more than 1 argument }0may not "
@@ -13241,7 +13267,7 @@ def err_acc_duplicate_bind
1324113267
"permitted to refer to the same function">;
1324213268
def err_acc_duplicate_unnamed_bind
1324313269
: Error<"OpenACC 'bind' clause on a declaration must bind to the same name "
13244-
"as previous bind clauses">;
13270+
"as previous 'bind' clauses">;
1324513271
def warn_acc_confusing_routine_name
1324613272
: Warning<"OpenACC 'routine' directive with a name refers to a function "
1324713273
"with the same name as the function on the following line; this "

clang/include/clang/Basic/FPOptions.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ OPTION(NoHonorInfs, bool, 1, NoHonorNaNs)
2424
OPTION(NoSignedZero, bool, 1, NoHonorInfs)
2525
OPTION(AllowReciprocal, bool, 1, NoSignedZero)
2626
OPTION(AllowApproxFunc, bool, 1, AllowReciprocal)
27-
OPTION(FPEvalMethod, LangOptions::FPEvalMethodKind, 3, AllowApproxFunc)
27+
OPTION(FPEvalMethod, LangOptions::FPEvalMethodKind, 2, AllowApproxFunc)
2828
OPTION(Float16ExcessPrecision, LangOptions::ExcessPrecisionKind, 2, FPEvalMethod)
2929
OPTION(BFloat16ExcessPrecision, LangOptions::ExcessPrecisionKind, 2, Float16ExcessPrecision)
3030
OPTION(MathErrno, bool, 1, BFloat16ExcessPrecision)

clang/include/clang/Basic/LangOptions.def

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -362,21 +362,7 @@ BENIGN_ENUM_LANGOPT(DefaultFPContractMode, FPModeKind, 2, FPM_Off, "FP contracti
362362
COMPATIBLE_LANGOPT(ExpStrictFP, 1, false, "Enable experimental strict floating point")
363363
BENIGN_LANGOPT(RoundingMath, 1, false, "Do not assume default floating-point rounding behavior")
364364
BENIGN_ENUM_LANGOPT(FPExceptionMode, FPExceptionModeKind, 2, FPE_Default, "FP Exception Behavior Mode type")
365-
366-
#if defined(__clang__) && defined(__has_warning)
367-
#if __has_warning("-Wpreferred-type-bitfield-enum-conversion")
368-
// FIXME: Remove this once the warning is fixed, https://llvm.org/PR137600
369-
#pragma clang diagnostic push
370-
#pragma clang diagnostic ignored "-Wpreferred-type-bitfield-enum-conversion"
371-
#endif
372-
#endif
373-
BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
374-
#if defined(__clang__) && defined(__has_warning)
375-
#if __has_warning("-Wpreferred-type-bitfield-enum-conversion")
376-
#pragma clang diagnostic pop
377-
#endif
378-
#endif
379-
365+
BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 2, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
380366
ENUM_LANGOPT(Float16ExcessPrecision, ExcessPrecisionKind, 2, FPP_Standard, "Intermediate truncation behavior for Float16 arithmetic")
381367
ENUM_LANGOPT(BFloat16ExcessPrecision, ExcessPrecisionKind, 2, FPP_Standard, "Intermediate truncation behavior for BFloat16 arithmetic")
382368
LANGOPT(NoBitFieldTypeAlign , 1, 0, "bit-field type alignment")

clang/include/clang/Basic/LangOptions.h

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -76,23 +76,6 @@ class LangOptionsBase {
7676
using RoundingMode = llvm::RoundingMode;
7777
using CFBranchLabelSchemeKind = clang::CFBranchLabelSchemeKind;
7878

79-
LangOptionsBase() = default;
80-
81-
#if defined(__clang__) && defined( __has_warning)
82-
#if __has_warning("-Wpreferred-type-bitfield-enum-conversion")
83-
// FIXME: Remove this once the warning is fixed, https://llvm.org/PR137600
84-
#pragma clang diagnostic push
85-
#pragma clang diagnostic ignored "-Wpreferred-type-bitfield-enum-conversion"
86-
#endif
87-
#endif
88-
LangOptionsBase(const LangOptionsBase&) = default;
89-
LangOptionsBase& operator=(const LangOptionsBase&) = default;
90-
#if defined(__clang__) && defined( __has_warning)
91-
#if __has_warning("-Wpreferred-type-bitfield-enum-conversion")
92-
#pragma clang diagnostic pop
93-
#endif
94-
#endif
95-
9679
enum GCMode { NonGC, GCOnly, HybridGC };
9780
enum StackProtectorMode { SSPOff, SSPOn, SSPStrong, SSPReq };
9881

@@ -321,10 +304,7 @@ class LangOptionsBase {
321304
};
322305

323306
/// Possible float expression evaluation method choices.
324-
enum FPEvalMethodKind {
325-
/// The evaluation method cannot be determined or is inconsistent for this
326-
/// target.
327-
FEM_Indeterminable = -1,
307+
enum FPEvalMethodKind : unsigned {
328308
/// Use the declared type for fp arithmetic.
329309
FEM_Source = 0,
330310
/// Use the type double for fp arithmetic.

clang/include/clang/CIR/Dialect/IR/CIROps.td

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1952,4 +1952,28 @@ def TrapOp : CIR_Op<"trap", [Terminator]> {
19521952
let assemblyFormat = "attr-dict";
19531953
}
19541954

1955+
//===----------------------------------------------------------------------===//
1956+
// VecCreate
1957+
//===----------------------------------------------------------------------===//
1958+
1959+
def VecCreateOp : CIR_Op<"vec.create", [Pure]> {
1960+
1961+
let summary = "Create a vector value";
1962+
let description = [{
1963+
The `cir.vec.create` operation creates a vector value with the given element
1964+
values. The number of element arguments must match the number of elements
1965+
in the vector type.
1966+
}];
1967+
1968+
let arguments = (ins Variadic<CIR_AnyType>:$elements);
1969+
let results = (outs CIR_VectorType:$result);
1970+
1971+
let assemblyFormat = [{
1972+
`(` ($elements^ `:` type($elements))? `)` `:` qualified(type($result))
1973+
attr-dict
1974+
}];
1975+
1976+
let hasVerifier = 1;
1977+
}
1978+
19551979
#endif // CLANG_CIR_DIALECT_IR_CIROPS_TD

clang/include/clang/Driver/Options.td

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2834,10 +2834,12 @@ def finput_charset_EQ : Joined<["-"], "finput-charset=">,
28342834
Visibility<[ClangOption, FlangOption, FC1Option]>, Group<f_Group>,
28352835
HelpText<"Specify the default character set for source files">;
28362836
def fexec_charset_EQ : Joined<["-"], "fexec-charset=">, Group<f_Group>;
2837-
def finstrument_functions : Flag<["-"], "finstrument-functions">, Group<f_Group>,
2838-
Visibility<[ClangOption, CC1Option]>,
2839-
HelpText<"Generate calls to instrument function entry and exit">,
2840-
MarshallingInfoFlag<CodeGenOpts<"InstrumentFunctions">>;
2837+
def finstrument_functions
2838+
: Flag<["-"], "finstrument-functions">,
2839+
Group<f_Group>,
2840+
Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>,
2841+
HelpText<"Generate calls to instrument function entry and exit">,
2842+
MarshallingInfoFlag<CodeGenOpts<"InstrumentFunctions">>;
28412843
def finstrument_functions_after_inlining : Flag<["-"], "finstrument-functions-after-inlining">, Group<f_Group>,
28422844
Visibility<[ClangOption, CC1Option]>,
28432845
HelpText<"Like -finstrument-functions, but insert the calls after inlining">,

clang/include/clang/Parse/Parser.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2579,7 +2579,8 @@ class Parser : public CodeCompletionHandler {
25792579
void ParseEnumSpecifier(SourceLocation TagLoc, DeclSpec &DS,
25802580
const ParsedTemplateInfo &TemplateInfo,
25812581
AccessSpecifier AS, DeclSpecContext DSC);
2582-
void ParseEnumBody(SourceLocation StartLoc, Decl *TagDecl);
2582+
void ParseEnumBody(SourceLocation StartLoc, Decl *TagDecl,
2583+
SkipBodyInfo *SkipBody = nullptr);
25832584
void ParseStructUnionBody(SourceLocation StartLoc, DeclSpec::TST TagType,
25842585
RecordDecl *TagDecl);
25852586

0 commit comments

Comments
 (0)