mirror of https://github.com/microsoft/clang.git
PR20356: Fix all Sema warnings with mismatched ext_/warn_ versus
ExtWarn/Warnings. Mostly the name of the warning was changed to match the semantics, but in the PR20356 cases, the warning was about valid code, so the diagnostic was changed from ExtWarn to Warning instead. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213443 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d8a87ff6ac
commit
4b691c5dee
|
@ -1069,12 +1069,13 @@ def err_rref_in_exception_spec : Error<
|
|||
"rvalue reference type %0 is not allowed in exception specification">;
|
||||
def err_mismatched_exception_spec : Error<
|
||||
"exception specification in declaration does not match previous declaration">;
|
||||
def warn_mismatched_exception_spec : ExtWarn<
|
||||
"exception specification in declaration does not match previous declaration">;
|
||||
def ext_mismatched_exception_spec : ExtWarn<
|
||||
"exception specification in declaration does not match previous declaration">,
|
||||
InGroup<Microsoft>;
|
||||
def err_override_exception_spec : Error<
|
||||
"exception specification of overriding function is more lax than "
|
||||
"base version">;
|
||||
def warn_override_exception_spec : ExtWarn<
|
||||
def ext_override_exception_spec : ExtWarn<
|
||||
"exception specification of overriding function is more lax than "
|
||||
"base version">, InGroup<Microsoft>;
|
||||
def err_incompatible_exception_specs : Error<
|
||||
|
@ -1226,7 +1227,7 @@ def err_member_function_initialization : Error<
|
|||
"initializer on function does not look like a pure-specifier">;
|
||||
def err_non_virtual_pure : Error<
|
||||
"%0 is not virtual and cannot be declared pure">;
|
||||
def warn_pure_function_definition : ExtWarn<
|
||||
def ext_pure_function_definition : ExtWarn<
|
||||
"function definition with pure-specifier is a Microsoft extension">,
|
||||
InGroup<Microsoft>;
|
||||
def err_implicit_object_parameter_init : Error<
|
||||
|
@ -2648,8 +2649,8 @@ def err_param_default_argument : Error<
|
|||
"C does not support default arguments">;
|
||||
def err_param_default_argument_redefinition : Error<
|
||||
"redefinition of default argument">;
|
||||
def warn_param_default_argument_redefinition : ExtWarn<
|
||||
"redefinition of default argument">;
|
||||
def ext_param_default_argument_redefinition : ExtWarn<
|
||||
"redefinition of default argument">, InGroup<Microsoft>;
|
||||
def err_param_default_argument_missing : Error<
|
||||
"missing default argument on parameter">;
|
||||
def err_param_default_argument_missing_name : Error<
|
||||
|
@ -3470,7 +3471,7 @@ def err_nested_name_spec_non_tag : Error<
|
|||
// C++ Explicit Instantiation
|
||||
def err_explicit_instantiation_duplicate : Error<
|
||||
"duplicate explicit instantiation of %0">;
|
||||
def warn_explicit_instantiation_duplicate : ExtWarn<
|
||||
def ext_explicit_instantiation_duplicate : ExtWarn<
|
||||
"duplicate explicit instantiation of %0 ignored as a Microsoft extension">,
|
||||
InGroup<Microsoft>;
|
||||
def note_previous_explicit_instantiation : Note<
|
||||
|
@ -3796,10 +3797,10 @@ def warn_undefined_inline : Warning<"inline function %q0 is not defined">,
|
|||
InGroup<DiagGroup<"undefined-inline">>;
|
||||
def note_used_here : Note<"used here">;
|
||||
|
||||
def warn_internal_in_extern_inline : ExtWarn<
|
||||
def ext_internal_in_extern_inline : ExtWarn<
|
||||
"static %select{function|variable}0 %1 is used in an inline function with "
|
||||
"external linkage">, InGroup<StaticInInline>;
|
||||
def ext_internal_in_extern_inline : Extension<
|
||||
def ext_internal_in_extern_inline_quiet : Extension<
|
||||
"static %select{function|variable}0 %1 is used in an inline function with "
|
||||
"external linkage">, InGroup<StaticInInline>;
|
||||
def warn_static_local_in_extern_inline : Warning<
|
||||
|
@ -3808,7 +3809,7 @@ def warn_static_local_in_extern_inline : Warning<
|
|||
def note_convert_inline_to_static : Note<
|
||||
"use 'static' to give inline function %0 internal linkage">;
|
||||
|
||||
def warn_redefinition_of_typedef : ExtWarn<
|
||||
def ext_redefinition_of_typedef : ExtWarn<
|
||||
"redefinition of typedef %0 is a C11 feature">,
|
||||
InGroup<DiagGroup<"typedef-redefinition"> >;
|
||||
def err_redefinition_variably_modified_typedef : Error<
|
||||
|
@ -3976,15 +3977,15 @@ def err_variable_object_no_init : Error<
|
|||
"variable-sized object may not be initialized">;
|
||||
def err_excess_initializers : Error<
|
||||
"excess elements in %select{array|vector|scalar|union|struct}0 initializer">;
|
||||
def warn_excess_initializers : ExtWarn<
|
||||
def ext_excess_initializers : ExtWarn<
|
||||
"excess elements in %select{array|vector|scalar|union|struct}0 initializer">;
|
||||
def err_excess_initializers_in_char_array_initializer : Error<
|
||||
"excess elements in char array initializer">;
|
||||
def warn_excess_initializers_in_char_array_initializer : ExtWarn<
|
||||
def ext_excess_initializers_in_char_array_initializer : ExtWarn<
|
||||
"excess elements in char array initializer">;
|
||||
def err_initializer_string_for_char_array_too_long : Error<
|
||||
"initializer-string for char array is too long">;
|
||||
def warn_initializer_string_for_char_array_too_long : ExtWarn<
|
||||
def ext_initializer_string_for_char_array_too_long : ExtWarn<
|
||||
"initializer-string for char array is too long">;
|
||||
def warn_missing_field_initializers : Warning<
|
||||
"missing field %0 initializer">,
|
||||
|
@ -4068,7 +4069,7 @@ def warn_unused_label : Warning<"unused label %0">,
|
|||
InGroup<UnusedLabel>, DefaultIgnore;
|
||||
|
||||
def err_goto_into_protected_scope : Error<"goto into protected scope">;
|
||||
def warn_goto_into_protected_scope : ExtWarn<"goto into protected scope">,
|
||||
def ext_goto_into_protected_scope : ExtWarn<"goto into protected scope">,
|
||||
InGroup<Microsoft>;
|
||||
def warn_cxx98_compat_goto_into_protected_scope : Warning<
|
||||
"goto would jump into protected scope in C++98">,
|
||||
|
@ -4465,9 +4466,9 @@ def err_offsetof_array_type : Error<"offsetof requires array type, %0 invalid">;
|
|||
def ext_offsetof_extended_field_designator : Extension<
|
||||
"using extended field designator is an extension">,
|
||||
InGroup<DiagGroup<"extended-offsetof">>;
|
||||
def warn_offsetof_non_pod_type : ExtWarn<"offset of on non-POD type %0">,
|
||||
def ext_offsetof_non_pod_type : ExtWarn<"offset of on non-POD type %0">,
|
||||
InGroup<InvalidOffsetof>;
|
||||
def warn_offsetof_non_standardlayout_type : ExtWarn<
|
||||
def ext_offsetof_non_standardlayout_type : ExtWarn<
|
||||
"offset of on non-standard-layout type %0">, InGroup<InvalidOffsetof>;
|
||||
def err_offsetof_bitfield : Error<"cannot compute offset of bit-field %0">;
|
||||
def err_offsetof_field_of_virtual_base : Error<
|
||||
|
@ -5917,10 +5918,10 @@ def ext_typecheck_cond_incompatible_operands_nonstandard : ExtWarn<
|
|||
"pointer type %2">;
|
||||
def err_cast_selector_expr : Error<
|
||||
"cannot type cast @selector expression">;
|
||||
def warn_typecheck_cond_incompatible_pointers : ExtWarn<
|
||||
def ext_typecheck_cond_incompatible_pointers : ExtWarn<
|
||||
"pointer type mismatch%diff{ ($ and $)|}0,1">,
|
||||
InGroup<DiagGroup<"pointer-type-mismatch">>;
|
||||
def warn_typecheck_cond_pointer_integer_mismatch : ExtWarn<
|
||||
def ext_typecheck_cond_pointer_integer_mismatch : ExtWarn<
|
||||
"pointer/integer type mismatch in conditional expression"
|
||||
"%diff{ ($ and $)|}0,1">,
|
||||
InGroup<DiagGroup<"conditional-type-mismatch">>;
|
||||
|
@ -6413,12 +6414,12 @@ def warn_printf_nonsensical_flag: Warning<
|
|||
def warn_format_nonsensical_length: Warning<
|
||||
"length modifier '%0' results in undefined behavior or no effect with '%1' conversion specifier">,
|
||||
InGroup<Format>;
|
||||
def warn_format_non_standard_positional_arg: ExtWarn<
|
||||
def warn_format_non_standard_positional_arg: Warning<
|
||||
"positional arguments are not supported by ISO C">, InGroup<FormatNonStandard>, DefaultIgnore;
|
||||
def warn_format_non_standard: ExtWarn<
|
||||
def warn_format_non_standard: Warning<
|
||||
"'%0' %select{length modifier|conversion specifier}1 is not supported by ISO C">,
|
||||
InGroup<FormatNonStandard>, DefaultIgnore;
|
||||
def warn_format_non_standard_conversion_spec: ExtWarn<
|
||||
def warn_format_non_standard_conversion_spec: Warning<
|
||||
"using length modifier '%0' with conversion specifier '%1' is not supported by ISO C">,
|
||||
InGroup<FormatNonStandard>, DefaultIgnore;
|
||||
def warn_printf_ignored_flag: Warning<
|
||||
|
|
|
@ -491,7 +491,7 @@ void JumpScopeChecker::VerifyJumps() {
|
|||
if (GotoStmt *GS = dyn_cast<GotoStmt>(Jump)) {
|
||||
CheckJump(GS, GS->getLabel()->getStmt(), GS->getGotoLoc(),
|
||||
diag::err_goto_into_protected_scope,
|
||||
diag::warn_goto_into_protected_scope,
|
||||
diag::ext_goto_into_protected_scope,
|
||||
diag::warn_cxx98_compat_goto_into_protected_scope);
|
||||
continue;
|
||||
}
|
||||
|
@ -501,7 +501,7 @@ void JumpScopeChecker::VerifyJumps() {
|
|||
LabelDecl *Target = IGS->getConstantTarget();
|
||||
CheckJump(IGS, Target->getStmt(), IGS->getGotoLoc(),
|
||||
diag::err_goto_into_protected_scope,
|
||||
diag::warn_goto_into_protected_scope,
|
||||
diag::ext_goto_into_protected_scope,
|
||||
diag::warn_cxx98_compat_goto_into_protected_scope);
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -1893,7 +1893,7 @@ void Sema::MergeTypedefNameDecl(TypedefNameDecl *New, LookupResult &OldDecls) {
|
|||
Context.getSourceManager().isInSystemHeader(New->getLocation())))
|
||||
return;
|
||||
|
||||
Diag(New->getLocation(), diag::warn_redefinition_of_typedef)
|
||||
Diag(New->getLocation(), diag::ext_redefinition_of_typedef)
|
||||
<< New->getDeclName();
|
||||
Diag(Old->getLocation(), diag::note_previous_definition);
|
||||
return;
|
||||
|
@ -10121,7 +10121,7 @@ Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body,
|
|||
// MSVC permits the use of pure specifier (=0) on function definition,
|
||||
// defined at class scope, warn about this non-standard construct.
|
||||
if (getLangOpts().MicrosoftExt && FD->isPure() && FD->isCanonicalDecl())
|
||||
Diag(FD->getLocation(), diag::warn_pure_function_definition);
|
||||
Diag(FD->getLocation(), diag::ext_pure_function_definition);
|
||||
|
||||
if (!FD->isInvalidDecl()) {
|
||||
// Don't diagnose unused parameters of defaulted or deleted functions.
|
||||
|
|
|
@ -476,7 +476,7 @@ bool Sema::MergeCXXFunctionDecl(FunctionDecl *New, FunctionDecl *Old,
|
|||
OldParam->getUninstantiatedDefaultArg());
|
||||
else
|
||||
NewParam->setDefaultArg(OldParam->getInit());
|
||||
DiagDefaultParamID = diag::warn_param_default_argument_redefinition;
|
||||
DiagDefaultParamID = diag::ext_param_default_argument_redefinition;
|
||||
Invalid = false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -181,7 +181,7 @@ bool Sema::CheckEquivalentExceptionSpec(FunctionDecl *Old, FunctionDecl *New) {
|
|||
unsigned DiagID = diag::err_mismatched_exception_spec;
|
||||
bool ReturnValueOnError = true;
|
||||
if (getLangOpts().MicrosoftExt) {
|
||||
DiagID = diag::warn_mismatched_exception_spec;
|
||||
DiagID = diag::ext_mismatched_exception_spec;
|
||||
ReturnValueOnError = false;
|
||||
}
|
||||
|
||||
|
@ -326,7 +326,7 @@ bool Sema::CheckEquivalentExceptionSpec(
|
|||
const FunctionProtoType *New, SourceLocation NewLoc) {
|
||||
unsigned DiagID = diag::err_mismatched_exception_spec;
|
||||
if (getLangOpts().MicrosoftExt)
|
||||
DiagID = diag::warn_mismatched_exception_spec;
|
||||
DiagID = diag::ext_mismatched_exception_spec;
|
||||
bool Result = CheckEquivalentExceptionSpec(PDiag(DiagID),
|
||||
PDiag(diag::note_previous_declaration), Old, OldLoc, New, NewLoc);
|
||||
|
||||
|
@ -787,7 +787,7 @@ bool Sema::CheckOverridingFunctionExceptionSpec(const CXXMethodDecl *New,
|
|||
}
|
||||
unsigned DiagID = diag::err_override_exception_spec;
|
||||
if (getLangOpts().MicrosoftExt)
|
||||
DiagID = diag::warn_override_exception_spec;
|
||||
DiagID = diag::ext_override_exception_spec;
|
||||
return CheckExceptionSpecSubset(PDiag(DiagID),
|
||||
PDiag(diag::note_overridden_virtual_function),
|
||||
Old->getType()->getAs<FunctionProtoType>(),
|
||||
|
|
|
@ -226,8 +226,8 @@ static void diagnoseUseOfInternalDeclInInlineFunction(Sema &S,
|
|||
if (!DowngradeWarning && UsedFn)
|
||||
DowngradeWarning = UsedFn->isInlined() || UsedFn->hasAttr<ConstAttr>();
|
||||
|
||||
S.Diag(Loc, DowngradeWarning ? diag::ext_internal_in_extern_inline
|
||||
: diag::warn_internal_in_extern_inline)
|
||||
S.Diag(Loc, DowngradeWarning ? diag::ext_internal_in_extern_inline_quiet
|
||||
: diag::ext_internal_in_extern_inline)
|
||||
<< /*IsVar=*/!UsedFn << D;
|
||||
|
||||
S.MaybeSuggestAddingStaticToDecl(Current);
|
||||
|
@ -5547,7 +5547,7 @@ static QualType checkConditionalPointerCompatibility(Sema &S, ExprResult &LHS,
|
|||
QualType CompositeTy = S.Context.mergeTypes(lhptee, rhptee);
|
||||
|
||||
if (CompositeTy.isNull()) {
|
||||
S.Diag(Loc, diag::warn_typecheck_cond_incompatible_pointers)
|
||||
S.Diag(Loc, diag::ext_typecheck_cond_incompatible_pointers)
|
||||
<< LHSTy << RHSTy << LHS.get()->getSourceRange()
|
||||
<< RHS.get()->getSourceRange();
|
||||
// In this situation, we assume void* type. No especially good
|
||||
|
@ -5677,7 +5677,7 @@ static bool checkPointerIntegerMismatch(Sema &S, ExprResult &Int,
|
|||
Expr *Expr1 = IsIntFirstExpr ? Int.get() : PointerExpr;
|
||||
Expr *Expr2 = IsIntFirstExpr ? PointerExpr : Int.get();
|
||||
|
||||
S.Diag(Loc, diag::warn_typecheck_cond_pointer_integer_mismatch)
|
||||
S.Diag(Loc, diag::ext_typecheck_cond_pointer_integer_mismatch)
|
||||
<< Expr1->getType() << Expr2->getType()
|
||||
<< Expr1->getSourceRange() << Expr2->getSourceRange();
|
||||
Int = S.ImpCastExprToType(Int.get(), PointerExpr->getType(),
|
||||
|
@ -10276,8 +10276,8 @@ ExprResult Sema::BuildBuiltinOffsetOf(SourceLocation BuiltinLoc,
|
|||
if (CXXRecordDecl *CRD = dyn_cast<CXXRecordDecl>(RD)) {
|
||||
bool IsSafe = LangOpts.CPlusPlus11? CRD->isStandardLayout() : CRD->isPOD();
|
||||
unsigned DiagID =
|
||||
LangOpts.CPlusPlus11? diag::warn_offsetof_non_standardlayout_type
|
||||
: diag::warn_offsetof_non_pod_type;
|
||||
LangOpts.CPlusPlus11? diag::ext_offsetof_non_standardlayout_type
|
||||
: diag::ext_offsetof_non_pod_type;
|
||||
|
||||
if (!IsSafe && !DidWarnAboutNonPOD &&
|
||||
DiagRuntimeBehavior(BuiltinLoc, nullptr,
|
||||
|
|
|
@ -189,7 +189,7 @@ static void CheckStringInit(Expr *Str, QualType &DeclT, const ArrayType *AT,
|
|||
// C99 6.7.8p14.
|
||||
if (StrLength-1 > CAT->getSize().getZExtValue())
|
||||
S.Diag(Str->getLocStart(),
|
||||
diag::warn_initializer_string_for_char_array_too_long)
|
||||
diag::ext_initializer_string_for_char_array_too_long)
|
||||
<< Str->getSourceRange();
|
||||
}
|
||||
|
||||
|
@ -788,7 +788,7 @@ void InitListChecker::CheckExplicitInitList(const InitializedEntity &Entity,
|
|||
if (StructuredIndex == 1 &&
|
||||
IsStringInit(StructuredList->getInit(0), T, SemaRef.Context) ==
|
||||
SIF_None) {
|
||||
unsigned DK = diag::warn_excess_initializers_in_char_array_initializer;
|
||||
unsigned DK = diag::ext_excess_initializers_in_char_array_initializer;
|
||||
if (SemaRef.getLangOpts().CPlusPlus) {
|
||||
DK = diag::err_excess_initializers_in_char_array_initializer;
|
||||
hadError = true;
|
||||
|
@ -807,7 +807,7 @@ void InitListChecker::CheckExplicitInitList(const InitializedEntity &Entity,
|
|||
CurrentObjectType->isUnionType()? 3 :
|
||||
4;
|
||||
|
||||
unsigned DK = diag::warn_excess_initializers;
|
||||
unsigned DK = diag::ext_excess_initializers;
|
||||
if (SemaRef.getLangOpts().CPlusPlus) {
|
||||
DK = diag::err_excess_initializers;
|
||||
hadError = true;
|
||||
|
|
|
@ -6546,7 +6546,7 @@ Sema::CheckSpecializationInstantiationRedecl(SourceLocation NewLoc,
|
|||
|
||||
// MSVCCompat: MSVC silently ignores duplicate explicit instantiations.
|
||||
Diag(NewLoc, (getLangOpts().MSVCCompat)
|
||||
? diag::warn_explicit_instantiation_duplicate
|
||||
? diag::ext_explicit_instantiation_duplicate
|
||||
: diag::err_explicit_instantiation_duplicate)
|
||||
<< PrevDecl;
|
||||
Diag(DiagLocForExplicitInstantiation(PrevDecl, PrevPointOfInstantiation),
|
||||
|
|
|
@ -18,11 +18,14 @@ This test serves two purposes:
|
|||
|
||||
The list of warnings below should NEVER grow. It should gradually shrink to 0.
|
||||
|
||||
CHECK: Warnings without flags (105):
|
||||
CHECK: Warnings without flags (103):
|
||||
CHECK-NEXT: ext_delete_void_ptr_operand
|
||||
CHECK-NEXT: ext_excess_initializers
|
||||
CHECK-NEXT: ext_excess_initializers_in_char_array_initializer
|
||||
CHECK-NEXT: ext_expected_semi_decl_list
|
||||
CHECK-NEXT: ext_explicit_specialization_storage_class
|
||||
CHECK-NEXT: ext_implicit_lib_function_decl
|
||||
CHECK-NEXT: ext_initializer_string_for_char_array_too_long
|
||||
CHECK-NEXT: ext_many_braces_around_scalar_init
|
||||
CHECK-NEXT: ext_missing_declspec
|
||||
CHECK-NEXT: ext_missing_whitespace_after_macro_name
|
||||
|
@ -69,8 +72,6 @@ CHECK-NEXT: warn_dup_category_def
|
|||
CHECK-NEXT: warn_duplicate_protocol_def
|
||||
CHECK-NEXT: warn_enum_value_overflow
|
||||
CHECK-NEXT: warn_exception_caught_by_earlier_handler
|
||||
CHECK-NEXT: warn_excess_initializers
|
||||
CHECK-NEXT: warn_excess_initializers_in_char_array_initializer
|
||||
CHECK-NEXT: warn_expected_qualified_after_typename
|
||||
CHECK-NEXT: warn_extraneous_char_constant
|
||||
CHECK-NEXT: warn_fe_cc_log_diagnostics_failure
|
||||
|
@ -80,12 +81,10 @@ CHECK-NEXT: warn_file_asm_volatile
|
|||
CHECK-NEXT: warn_ignoring_ftabstop_value
|
||||
CHECK-NEXT: warn_implements_nscopying
|
||||
CHECK-NEXT: warn_incompatible_qualified_id
|
||||
CHECK-NEXT: warn_initializer_string_for_char_array_too_long
|
||||
CHECK-NEXT: warn_inline_namespace_reopened_noninline
|
||||
CHECK-NEXT: warn_invalid_asm_cast_lvalue
|
||||
CHECK-NEXT: warn_maynot_respond
|
||||
CHECK-NEXT: warn_method_param_redefinition
|
||||
CHECK-NEXT: warn_mismatched_exception_spec
|
||||
CHECK-NEXT: warn_missing_case_for_condition
|
||||
CHECK-NEXT: warn_missing_dependent_template_keyword
|
||||
CHECK-NEXT: warn_missing_exception_specification
|
||||
|
@ -97,7 +96,6 @@ CHECK-NEXT: warn_not_compound_assign
|
|||
CHECK-NEXT: warn_objc_property_copy_missing_on_block
|
||||
CHECK-NEXT: warn_objc_protocol_qualifier_missing_id
|
||||
CHECK-NEXT: warn_on_superclass_use
|
||||
CHECK-NEXT: warn_param_default_argument_redefinition
|
||||
CHECK-NEXT: warn_partial_specs_not_deducible
|
||||
CHECK-NEXT: warn_pp_convert_lhs_to_positive
|
||||
CHECK-NEXT: warn_pp_convert_rhs_to_positive
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* RUN: %clang_cc1 -fsyntax-only -verify -triple i386-apple-darwin9 -pedantic -std=c89 %s
|
||||
/* RUN: %clang_cc1 -fsyntax-only -verify -triple i386-apple-darwin9 -Wformat-non-iso -std=c89 %s
|
||||
*/
|
||||
|
||||
int scanf(const char * restrict, ...);
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify -triple i386-apple-darwin9 -pedantic -DALLOWED %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -triple thumbv6-apple-ios4.0 -pedantic -DALLOWED %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -triple i386-apple-darwin9 -Wformat-non-iso -DALLOWED %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -triple thumbv6-apple-ios4.0 -Wformat-non-iso -DALLOWED %s
|
||||
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-mingw32 -pedantic %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-pc-win32 -pedantic %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-mingw32 -Wformat-non-iso %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-pc-win32 -Wformat-non-iso %s
|
||||
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-linux-gnu -pedantic %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-unknown-freebsd -pedantic %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-linux-gnu -Wformat-non-iso %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-unknown-freebsd -Wformat-non-iso %s
|
||||
|
||||
int printf(const char *restrict, ...);
|
||||
int scanf(const char * restrict, ...) ;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify -fms-compatibility -triple=i386-pc-win32 -pedantic %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -fms-compatibility -triple=i386-pc-win32 -Wformat-non-iso %s
|
||||
|
||||
int printf(const char *format, ...) __attribute__((format(printf, 1, 2)));
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 -triple i686-linux-gnu -fsyntax-only -verify -std=c99 -pedantic %s
|
||||
// RUN: %clang_cc1 -triple i686-linux-gnu -fsyntax-only -verify -std=c99 -Wformat-non-iso %s
|
||||
|
||||
int printf(const char *restrict, ...);
|
||||
int scanf(const char * restrict, ...);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify -Wformat-nonliteral -pedantic -fblocks %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -Wformat-nonliteral -Wformat-non-iso -fblocks %s
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
|
|
Loading…
Reference in New Issue