Diagnostic flags in Clang

Introduction

This page lists the diagnostic flags currently supported by Clang.

Diagnostic flags

-W

Synonym for -Wextra.

-W#pragma-messages

This diagnostic is enabled by default.

Diagnostic text:

The text of this diagnostic is not controlled by Clang.

-W#warnings

This diagnostic is enabled by default.

Diagnostic text:

The text of this diagnostic is not controlled by Clang.

-WCFString-literal

This diagnostic is enabled by default.

Diagnostic text:

warning: input conversion stopped due to an input byte that does not belong to the input codeset UTF-8

-WCL4

Some of the diagnostics controlled by this flag are enabled by default.

Controls -Wall, -Wextra.

-WIndependentClass-attribute

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘objc_independent_class’ attribute may be put on a typedef only; attribute is ignored
warning: ‘objc_independent_class’ attribute may be put on Objective-C object pointer type only; attribute is ignored

-WNSObject-attribute

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘NSObject’ attribute may be put on a typedef only; attribute is ignored

-Wabi

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wabsolute-value

This diagnostic is enabled by default.

Diagnostic text:

warning: absolute value function A given an argument of type B but has parameter of type C which may cause truncation of value
warning: taking the absolute value of 
pointer
function
array
 type B is suspicious
warning: taking the absolute value of unsigned type A has no effect
warning: using 
integer
floating point
complex
 absolute value function A when argument is of 
integer
floating point
complex
 type

-Wabstract-final-class

This diagnostic is enabled by default.

Diagnostic text:

warning: abstract class is marked ‘
final
sealed

-Wabstract-vbase-init

Diagnostic text:

warning: initializer for virtual base class A of abstract class B will never be used

-Waddress

This diagnostic is enabled by default.

Controls -Wpointer-bool-conversion, -Wstring-compare, -Wtautological-pointer-compare.

-Waddress-of-packed-member

This diagnostic is enabled by default.

Diagnostic text:

warning: taking address of packed member A of class or structure B may result in an unaligned pointer value

-Waddress-of-temporary

This diagnostic is an error by default, but the flag -Wno-address-of-temporary can be used to disable the error.

Diagnostic text:

error: taking the address of a temporary object of type A

-Waggregate-return

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Waix-compat

This diagnostic is enabled by default.

Diagnostic text:

warning: alignment of 16 bytes for a struct member is not binary compatible with IBM XL C/C++ for AIX 16.1.0 or older
warning: #pragma align(packed) may not be compatible with objects generated with AIX XL C/C++

-Walign-mismatch

This diagnostic is enabled by default.

Diagnostic text:

warning: passing A-byte aligned argument to B-byte aligned parameter C
 
 of E
 may result in an unaligned pointer access

-Wall

Some of the diagnostics controlled by this flag are enabled by default.

Controls -Wmisleading-indentation, -Wmost, -Wparentheses, -Wswitch, -Wswitch-bool.

-Walloca

Diagnostic text:

warning: use of function A is discouraged; there is no way to check for failure but failure may still occur, resulting in a possibly exploitable security vulnerability

-Walloca-with-align-alignof

This diagnostic is enabled by default.

Diagnostic text:

warning: second argument to __builtin_alloca_with_align is supposed to be in bits

-Walways-inline-coroutine

This diagnostic is enabled by default.

Diagnostic text:

warning: this coroutine may be split into pieces; not every piece is guaranteed to be inlined

-Wambiguous-delete

This diagnostic is enabled by default.

Diagnostic text:

warning: multiple suitable A functions for B; no ‘operator delete’ function will be invoked if initialization throws an exception

-Wambiguous-ellipsis

This diagnostic is enabled by default.

Diagnostic text:

warning: ’…’ in this location creates a C-style varargs function
, not a function parameter pack
 

-Wambiguous-macro

This diagnostic is enabled by default.

Diagnostic text:

warning: ambiguous expansion of macro A

-Wambiguous-member-template

This diagnostic is enabled by default.

Diagnostic text:

warning: lookup of A in member access expression is ambiguous; using member of B

-Wambiguous-reversed-operator

This diagnostic is enabled by default.

Diagnostic text:

warning: ISO C++20 considers use of overloaded operator ‘A’ (with operand types B and C) to be ambiguous despite there being a unique best viable function
 with non-reversed arguments
 

-Wanalyzer-incompatible-plugin

This diagnostic is enabled by default.

Diagnostic text:

warning: checker plugin ‘A’ is not compatible with this version of the analyzer

-Wanon-enum-enum-conversion

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wdeprecated-anon-enum-enum-conversion.

Diagnostic text:

warning: 
arithmetic between
bitwise operation between
comparison of
conditional expression between
compound assignment of
 different enumeration types
 (B and C)
 

-Wanonymous-pack-parens

This diagnostic is enabled by default.

Diagnostic text:

warning: ISO C++11 requires a parenthesized pack declaration to have a name

-Warc

This diagnostic is enabled by default.

Controls -Warc-non-pod-memaccess, -Warc-retain-cycles, -Warc-unsafe-retained-assign.

-Warc-bridge-casts-disallowed-in-nonarc

This diagnostic is enabled by default.

Diagnostic text:

warning: A’ casts have no effect when not using ARC

-Warc-maybe-repeated-use-of-weak

Diagnostic text:

warning: weak 
variable
property
implicit property
instance variable
 B may be accessed multiple times in this 
function
method
block
lambda
 and may be unpredictably set to nil; assign to a strong variable to keep the object alive

-Warc-non-pod-memaccess

This diagnostic is enabled by default.

Diagnostic text:

warning: 
destination for
source of
 this B call is a pointer to ownership-qualified type C

-Warc-performSelector-leaks

This diagnostic is enabled by default.

Diagnostic text:

warning: performSelector may cause a leak because its selector is unknown

-Warc-repeated-use-of-weak

Also controls -Warc-maybe-repeated-use-of-weak.

Diagnostic text:

warning: weak 
variable
property
implicit property
instance variable
 B is accessed multiple times in this 
function
method
block
lambda
 but may be unpredictably set to nil; assign to a strong variable to keep the object alive

-Warc-retain-cycles

This diagnostic is enabled by default.

Diagnostic text:

warning: capturing A strongly in this block is likely to lead to a retain cycle

-Warc-unsafe-retained-assign

This diagnostic is enabled by default.

Diagnostic text:

warning: assigning 
array literal
dictionary literal
numeric literal
boxed expression
<should not happen>
block literal
 to a weak 
property
variable
; object will be released after assignment
warning: assigning retained object to 
weak
unsafe_unretained
 
property
variable
; object will be released after assignment
warning: assigning retained object to unsafe property; object will be released after assignment

-Wargument-outside-range

This diagnostic is an error by default, but the flag -Wno-argument-outside-range can be used to disable the error.

Diagnostic text:

error: argument value A is outside the valid range [B, C]

-Wargument-undefined-behaviour

This diagnostic is enabled by default.

Diagnostic text:

warning: argument value A will result in undefined behaviour

-Warray-bounds

This diagnostic is enabled by default.

Diagnostic text:

warning: array index A is past the end of the array (that has type B
 
, cast to D
)
warning: array index A refers past the last possible element for an array in B-bit address space containing C-bit (D-byte) elements (max possible E element
 
s
)
warning: array index A is before the beginning of the array
warning: the pointer incremented by A refers past the last possible element for an array in B-bit address space containing C-bit (D-byte) elements (max possible E element
 
s
)
warning: array argument is too small; 
contains A elements
is of size A
, callee requires at least B

-Warray-bounds-pointer-arithmetic

Diagnostic text:

warning: the pointer incremented by A refers past the end of the array (that has type B)
warning: the pointer decremented by A refers before the beginning of the array

-Warray-parameter

Diagnostic text:

warning: argument A of type B with mismatched bound

-Wasm-operand-widths

This diagnostic is enabled by default.

Diagnostic text:

warning: value size does not match register size specified by the constraint and modifier

-Wassign-enum

Diagnostic text:

warning: integer constant not in range of enumerated type A

-Wassume

This diagnostic is enabled by default.

Diagnostic text:

warning: the argument to A has side effects that will be discarded

-Wat-protocol

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Watimport-in-framework-header

This diagnostic is enabled by default.

Diagnostic text:

warning: use of ‘@import’ in framework header is discouraged, including this header requires -fmodules

-Watomic-access

This diagnostic is an error by default, but the flag -Wno-atomic-access can be used to disable the error.

Diagnostic text:

error: accessing a member of an atomic structure or union is undefined behavior

-Watomic-alignment

This diagnostic is enabled by default.

Diagnostic text:

warning: misaligned atomic operation may incur significant performance penalty; the expected alignment (A bytes) exceeds the actual alignment (B bytes)
warning: large atomic operation may incur significant performance penalty; the access size (A bytes) exceeds the max lock-free size (B  bytes)

-Watomic-implicit-seq-cst

Diagnostic text:

warning: implicit use of sequentially-consistent atomic may incur stronger memory barriers than necessary

-Watomic-memory-ordering

This diagnostic is enabled by default.

Diagnostic text:

warning: memory order argument to atomic operation is invalid

-Watomic-property-with-user-defined-accessor

This diagnostic is enabled by default.

Diagnostic text:

warning: writable atomic property A cannot pair a synthesized 
getter
setter
 with a user defined 
getter
setter

-Wattribute-packed-for-bitfield

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘packed’ attribute was ignored on bit-fields with single-byte alignment in older versions of GCC and Clang

-Wattribute-warning

This diagnostic is enabled by default.

Diagnostic text:

warning: call to ‘A’ declared with ‘warning’ attribute: B

-Wattributes

This diagnostic is enabled by default.

Controls -Wignored-attributes, -Wunknown-attributes.

-Wauto-disable-vptr-sanitizer

This diagnostic is enabled by default.

Diagnostic text:

warning: implicitly disabling vptr sanitizer because rtti wasn’t enabled

-Wauto-import

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wauto-storage-class

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘auto’ storage class specifier is not permitted in C++11, and will not be supported in future releases

-Wauto-var-id

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘auto’ deduced as ‘id’ in declaration of A

-Wavailability

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘unavailable’ availability overrides all other availability information
warning: Fuchsia API Level prohibits specifying a minor or sub-minor version
warning: ignoring availability attribute 
on ‘+load’ method
with constructor attribute
with destructor attribute
warning: only ‘unavailable’ and ‘deprecated’ are supported for Swift availability
warning: unknown platform A in availability macro
warning: feature cannot be 
introduced
deprecated
obsoleted
 in B version C before it was 
introduced
deprecated
obsoleted
 in version E; attribute ignored
warning: use same version number separators ‘_’ or ‘.’; as in ‘major[.minor[.subminor]]’
warning: availability does not match previous declaration
warning: 
 
overriding 
method 
introduced after
deprecated before
obsoleted before
 
the protocol method it implements
overridden method
 on B (C vs. D)
warning: 
 
overriding 
method cannot be unavailable on A when 
the protocol method it implements
its overridden method
 is available

-Wavr-rtlib-linking-quirks

This diagnostic is enabled by default.

Diagnostic text:

warning: support for linking stdlibs for microcontroller ‘A’ is not implemented
warning: no avr-libc installation can be found on the system, cannot link standard libraries
warning: support for passing the data section address to the linker for microcontroller ‘A’ is not implemented
warning: no target microcontroller specified on command line, cannot link standard libraries, please pass -mmcu=<mcu name>
warning: standard library not linked and so no interrupt vector table or compiler runtime routines will be linked

-Wbackend-plugin

This diagnostic is enabled by default.

Diagnostic text:

The text of this diagnostic is not controlled by Clang.

warning: A (B) exceeds limit (C) in ‘D

-Wbackslash-newline-escape

This diagnostic is enabled by default.

Diagnostic text:

warning: backslash and newline separated by space

-Wbad-function-cast

Diagnostic text:

warning: cast from function call of type A to non-matching type B

-Wbind-to-temporary-copy

Also controls -Wc++98-compat-bind-to-temporary-copy.

Diagnostic text:

warning: C++98 requires an accessible copy constructor for class C when binding a reference to a temporary; was 
private
protected
warning: no viable constructor 
copying variable
copying parameter
initializing template parameter
returning object
initializing statement expression result
throwing object
copying member subobject
copying array element
allocating object
copying temporary
initializing base subobject
initializing vector element
capturing value
 of type B; C++98 requires a copy constructor when binding a reference to a temporary

-Wbinding-in-condition

This diagnostic is enabled by default.

Diagnostic text:

warning: ISO C++17 does not permit structured binding declaration in a condition

-Wbit-int-extension

Diagnostic text:

warning: ‘_BitInt’ in 
C17 and earlier
C++
 is a Clang extension

-Wbitfield-constant-conversion

This diagnostic is enabled by default.

Also controls -Wsingle-bit-bitfield-constant-conversion.

Diagnostic text:

warning: implicit truncation from C to bit-field changes value from A to B

-Wbitfield-enum-conversion

Diagnostic text:

warning: bit-field A is not wide enough to store all enumerators of B
warning: signed bit-field A needs an extra bit to represent the largest positive enumerators of B
warning: assigning value of signed enum type B to unsigned bit-field A; negative enumerators of enum B will be converted to positive values

-Wbitfield-width

This diagnostic is enabled by default.

Diagnostic text:

warning: width of bit-field A (B bits) exceeds the width of its type; value will be truncated to C bit
 
s

-Wbitwise-conditional-parentheses

This diagnostic is enabled by default.

Diagnostic text:

warning: operator ‘?:’ has lower precedence than ‘A’; ‘A’ will be evaluated first

-Wbitwise-instead-of-logical

Diagnostic text:

warning: use of bitwise ‘A’ with boolean operands

-Wbitwise-op-parentheses

Diagnostic text:

warning: A’ within ‘B

-Wblock-capture-autoreleasing

This diagnostic is enabled by default.

Diagnostic text:

warning: block captures an autoreleasing out-parameter, which may result in use-after-free bugs

-Wbool-conversion

This diagnostic is enabled by default.

Also controls -Wpointer-bool-conversion, -Wundefined-bool-conversion.

Diagnostic text:

warning: initialization of pointer of type A to null from a constant boolean expression

-Wbool-operation

Also controls -Wbitwise-instead-of-logical.

Diagnostic text:

warning: bitwise negation of a boolean expression
;
 always evaluates to ‘true’;
 did you mean logical negation?

-Wbraced-scalar-init

This diagnostic is enabled by default.

Diagnostic text:

warning: braces around 
scalar 
 
initializer

-Wbranch-protection

This diagnostic is enabled by default.

Diagnostic text:

warning: ’-mbranch-protection=’ option is incompatible with the ‘A’ architecture
warning: ignoring the ‘branch-protection’ attribute because the ‘A’ architecture does not support it
warning: invalid branch protection option ‘A’ in ‘B
warning: unsupported branch protection specification ‘A

-Wbridge-cast

This diagnostic is enabled by default.

Diagnostic text:

warning: A bridges to B, not C
warning: A cannot bridge to B

-Wbuiltin-assume-aligned-alignment

This diagnostic is enabled by default.

Diagnostic text:

warning: requested alignment must be A bytes or smaller; maximum alignment assumed

-Wbuiltin-macro-redefined

This diagnostic is enabled by default.

Diagnostic text:

warning: redefining builtin macro
warning: undefining builtin macro

-Wbuiltin-memcpy-chk-size

This diagnostic is enabled by default.

Diagnostic text:

warning: A’ will always overflow; destination buffer has size B, but size argument is C

-Wbuiltin-requires-header

This diagnostic is enabled by default.

Diagnostic text:

warning: declaration of built-in function ‘B’ requires inclusion of the header <A>

-Wc++-compat

Diagnostic text:

warning: 
 
empty 
struct
union
 has size 0 in C, 
size 1
non-zero size
 in C++

-Wc++11-compat

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wc++11-compat-deprecated-writable-strings, -Wc++11-compat-reserved-user-defined-literal, -Wc++11-narrowing, -Wpre-c++14-compat, -Wpre-c++17-compat, -Wpre-c++20-compat, -Wpre-c++2b-compat.

Diagnostic text:

warning: integer literal is too large to be represented in type ‘long’ and is subject to undefined behavior under C++98, interpreting as ‘unsigned long’; this literal will 
have type ‘long long’
be ill-formed
 in C++11 onwards
warning: ‘auto’ storage class specifier is redundant and incompatible with C++11
warning: identifier after literal will be treated as a user-defined literal suffix in C++11
warning: A’ is a keyword in C++11
warning: use of right-shift operator (‘>>’) in template argument will require parentheses in C++11
warning: explicit instantiation cannot be ‘inline’
warning: explicit instantiation of A must occur at global scope
warning: explicit instantiation of A not in a namespace enclosing B
warning: explicit instantiation of A must occur in namespace B
warning: integer literal is too large to be represented in type ‘long’, interpreting as ‘unsigned long’ per C++98; this literal will 
have type ‘long long’
be ill-formed
 in C++11 onwards

-Wc++11-compat-deprecated-writable-strings

This diagnostic is enabled by default.

Diagnostic text:

warning: conversion from string literal to A is deprecated

-Wc++11-compat-reserved-user-defined-literal

Diagnostic text:

warning: identifier after literal will be treated as a reserved user-defined literal suffix in C++11

-Wc++11-extensions

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wc++11-extra-semi, -Wc++11-inline-namespace, -Wc++11-long-long.

Diagnostic text:

warning: alias declarations are a C++11 extension
warning: implicit conversion from array size expression of type A to 
integral
enumeration
 type C is a C++11 extension
warning: ‘auto’ type specifier is a C++11 extension
warning: enumeration types with a fixed underlying type are a C++11 extension
warning: 
defaulted
deleted
 function definitions are a C++11 extension
warning: befriending enumeration type A is a C++11 extension
warning: commas at the end of enumerator lists are a C++11 extension
warning: explicit conversion functions are a C++11 extension
warning: extern templates are a C++11 extension
warning: range-based for loop is a C++11 extension
warning: generalized initializer lists are a C++11 extension
warning: use of enumeration in a nested name specifier is a C++11 extension
warning: non-class friend type A is a C++11 extension
warning: default member initializer for non-static data member is a C++11 extension
warning: A’ keyword is a C++11 extension
warning: reference qualifiers on functions are a C++11 extension
warning: rvalue references are a C++11 extension
warning: scoped enumerations are a C++11 extension
warning: static data member A in union is a C++11 extension
warning: non-type template argument referring to 
function
object
 B with internal linkage is a C++11 extension
warning: ‘template’ keyword outside of a template
warning: default template arguments for a function template are a C++11 extension
warning: ‘typename’ occurs outside of a template
warning: unelaborated friend declaration is a C++11 extension; specify ‘
struct
interface
union
class
enum
‘ to befriend B
warning: variadic templates are a C++11 extension

-Wc++11-extra-semi

Diagnostic text:

warning: extra ‘;’ outside of a function is a C++11 extension

-Wc++11-inline-namespace

This diagnostic is enabled by default.

Diagnostic text:

warning: inline namespaces are a C++11 feature

-Wc++11-long-long

Diagnostic text:

warning: ‘long long’ is a C++11 extension

-Wc++11-narrowing

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

error: 
case value
enumerator value
non-type template argument
array size
explicit specifier argument
noexcept specifier argument
 
cannot be narrowed from type C to D
evaluates to C, which cannot be narrowed to type D
error: constant expression evaluates to A which cannot be narrowed to type B
error: type A cannot be narrowed to B in initializer list
error: non-constant-expression cannot be narrowed from type A to B in initializer list
warning: constant expression evaluates to A which cannot be narrowed to type B in C++11
warning: type A cannot be narrowed to B in initializer list in C++11
warning: non-constant-expression cannot be narrowed from type A to B in initializer list in C++11

-Wc++14-attribute-extensions

Diagnostic text:

warning: use of the A attribute is a C++14 extension

-Wc++14-binary-literal

Diagnostic text:

warning: binary integer literals are a C++14 extension

-Wc++14-extensions

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wc++14-attribute-extensions, -Wc++14-binary-literal.

Diagnostic text:

warning: use of this statement in a constexpr 
function
constructor
 is a C++14 extension
warning: multiple return statements in constexpr function is a C++14 extension
warning: variable declaration in a constexpr 
function
constructor
 is a C++14 extension
warning: type definition in a constexpr 
function
constructor
 is a C++14 extension
warning: ‘decltype(auto)’ type specifier is a C++14 extension
warning: initialized lambda captures are a C++14 extension
warning: variable templates are a C++14 extension

-Wc++17-attribute-extensions

Diagnostic text:

warning: use of the A attribute is a C++17 extension

-Wc++17-compat

Some of the diagnostics controlled by this flag are enabled by default.

Controls -Wc++17-compat-mangling, -Wdeprecated-increment-bool, -Wdeprecated-register, -Wpre-c++20-compat, -Wpre-c++2b-compat.

-Wc++17-compat-mangling

This diagnostic is enabled by default.

Diagnostic text:

warning: mangled name of A will change in C++17 due to non-throwing exception specification in function signature

-Wc++17-compat-pedantic

Some of the diagnostics controlled by this flag are enabled by default.

Controls -Wc++17-compat, -Wpre-c++20-compat-pedantic, -Wpre-c++2b-compat-pedantic.

-Wc++17-extensions

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wc++17-attribute-extensions.

Diagnostic text:

warning: ISO C++ standards before C++17 do not allow new expression for type A to use list-initialization
warning: constexpr if is a C++17 extension
warning: ‘constexpr’ on lambda expressions is a C++17 extension
warning: ‘static_assert’ with no message is a C++17 extension
warning: decomposition declarations are a C++17 extension
warning: pack fold expression is a C++17 extension
warning: ‘begin’ and ‘end’ returning different types (A and B) is a C++17 extension
warning: hexadecimal floating literals are a C++17 feature
warning: 
if
switch
‘ initialization statements are a C++17 extension
warning: inline variables are a C++17 extension
warning: use of multiple declarators in a single using declaration is a C++17 extension
warning: nested namespace definition is a C++17 extension; define each namespace separately
warning: attributes on 
a namespace
an enumerator
 declaration are a C++17 extension
warning: capture of ‘*this’ by copy is a C++17 extension
warning: template template parameter using ‘typename’ is a C++17 extension
warning: default scope specifier for attributes is a C++17 extension
warning: pack expansion of using declaration is a C++17 extension

-Wc++20-attribute-extensions

Diagnostic text:

warning: use of the A attribute is a C++20 extension

-Wc++20-compat

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wpre-c++2b-compat.

Diagnostic text:

warning: use of implicit ‘typename’ is incompatible with C++ standards before C++20
warning: aggregate initialization of type A with user-declared constructors is incompatible with C++20
warning: ‘consteval’ specifier is incompatible with C++ standards before C++20
warning: ‘constinit’ specifier is incompatible with C++ standards before C++20
warning: this expression will be parsed as explicit(bool) in C++20
warning: ’<=>’ is a single token in C++20; add a space to avoid a change in behavior
warning: taking address of non-addressable standard library function is incompatible with C++20
warning: type of UTF-8 string literal will change from array of const char to array of const char8_t in C++20
warning: A’ is a keyword in C++20

-Wc++20-compat-pedantic

Some of the diagnostics controlled by this flag are enabled by default.

Controls -Wc++20-compat, -Wpre-c++2b-compat-pedantic.

-Wc++20-designator

Diagnostic text:

warning: designated initializers are a C++20 extension

-Wc++20-extensions

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wc++20-attribute-extensions, -Wc++20-designator.

Diagnostic text:

warning: use of function template name with no prior declaration in function call with explicit template arguments is a C++20 extension
warning: default member initializer for bit-field is a C++20 extension
warning: captured structured bindings are a C++20 extension
warning: use of this statement in a constexpr 
function
constructor
 is a C++20 extension
warning: constexpr constructor that does not initialize all members is a C++20 extension
warning: function try block in constexpr 
function
constructor
 is a C++20 extension
warning: uninitialized variable in a constexpr 
function
constructor
 is a C++20 extension
warning: constexpr union constructor that does not initialize any member is a C++20 extension
warning: decomposition declaration declared 
B
with ‘B’ specifiers
 is a C++20 extension
warning: defaulted comparison operators are a C++20 extension
warning: explicit capture of ‘this’ with a capture default of ‘=’ is a C++20 extension
warning: explicit(bool) is a C++20 extension
warning: range-based for loop initialization statements are a C++20 extension
warning: missing ‘typename’ prior to dependent type name AB; implicit ‘typename’ is a C++20 extension
warning: initialized lambda pack captures are a C++20 extension
warning: inline nested namespace definition is a C++20 extension
warning: explicit template parameter list for lambdas is a C++20 extension
warning: invoking a pointer to a ‘const &’ member function on an rvalue is a C++20 extension
warning: using declaration naming a scoped enumerator is a C++20 extension
warning: using enum declaration is a C++20 extension
warning: aggregate initialization of type A from a parenthesized list of values is a C++20 extension

-Wc++2b-extensions

This diagnostic is enabled by default.

Diagnostic text:

warning: static lambdas are a C++2b extension
warning: alias declaration in this context is a C++2b extension
warning: consteval if is a C++2b extension
warning: use of this statement in a constexpr 
function
constructor
 is a C++2b extension
warning: definition of a 
static
thread_local
 variable in a constexpr 
function
constructor
 is a C++2b extension
warning: use of a ‘#
<BUG IF SEEN>
elifdef
elifndef
‘ directive is a C++2b extension
warning: ‘size_t’ suffix for literals is a C++2b extension
warning: label at end of compound statement is a C++2b extension
warning: an attribute specifier sequence in this position is a C++2b extension
warning: lambda without a parameter clause is a C++2b extension
warning: declaring overloaded A as ‘static’ is a C++2b extension

-Wc++98-c++11-compat-binary-literal

Diagnostic text:

warning: binary integer literals are incompatible with C++ standards before C++14

-Wc++98-compat

Also controls -Wc++98-compat-local-type-template-args, -Wc++98-compat-unnamed-type-template-args, -Wpre-c++14-compat, -Wpre-c++17-compat, -Wpre-c++20-compat, -Wpre-c++2b-compat.

Diagnostic text:

warning: alias declarations are incompatible with C++98
warning: ‘alignas’ is incompatible with C++98
warning: alignof expressions are incompatible with C++98
warning: C++11 attribute syntax is incompatible with C++98
warning: ‘auto’ type specifier is incompatible with C++98
warning: ‘constexpr’ specifier is incompatible with C++98
warning: constructor call from initializer list is incompatible with C++98
warning: ‘decltype’ type specifier is incompatible with C++98
warning: 
defaulted
deleted
 function definitions are incompatible with C++98
warning: delegating constructors are incompatible with C++98
warning: scalar initialized from empty initializer list is incompatible with C++98
warning: initializing A from an empty initializer list is incompatible with C++98
warning: enumeration types with a fixed underlying type are incompatible with C++98
warning: befriending enumeration type A is incompatible with C++98
warning: enumeration type in nested name specifier is incompatible with C++98
warning: explicit conversion functions are incompatible with C++98
warning: range-based for loop is incompatible with C++98
warning: friend declaration naming a member of the declaring class is incompatible with C++98
warning: generalized initializer lists are incompatible with C++98
warning: jump from this goto statement to its label is incompatible with C++98
warning: jump from this 
indirect
asm
 goto statement to one of its possible targets is incompatible with C++98
warning: initialization of initializer_list object is incompatible with C++98
warning: inline namespaces are incompatible with C++98
warning: lambda expressions are incompatible with C++98
warning: ’<::’ is treated as digraph ‘<:’ (aka ‘[‘) followed by ‘:’ in C++98
warning: literal operators are incompatible with C++98
warning: universal character name referring to a control character is incompatible with C++98
warning: specifying character ‘A’ with a universal character name is incompatible with C++98
warning: noexcept specifications are incompatible with C++98
warning: noexcept expressions are incompatible with C++98
warning: use of non-static data member A in an unevaluated context is incompatible with C++98
warning: non-class friend type A is incompatible with C++98
warning: default member initializer for non-static data members is incompatible with C++98
warning: 
anonymous struct
union
 member B with a non-trivial 
default constructor
copy constructor
move constructor
copy assignment operator
move assignment operator
destructor
 is incompatible with C++98
warning: ‘nullptr’ is incompatible with C++98
warning: A’ keyword is incompatible with C++98
warning: passing object of trivial but non-POD type A through variadic 
function
block
method
constructor
 is incompatible with C++98
warning: raw string literals are incompatible with C++98
warning: reference qualifiers on functions are incompatible with C++98
warning: reference initialized from initializer list is incompatible with C++98
warning: rvalue references are incompatible with C++98
warning: scoped enumerations are incompatible with C++98
warning: substitution failure due to access control is incompatible with C++98
warning: ‘static_assert’ declarations are incompatible with C++98
warning: static data member A in union is incompatible with C++98
warning: jump from switch statement to this case label is incompatible with C++98
warning: redundant parentheses surrounding address non-type template argument are incompatible with C++98
warning: use of null pointer as non-type template argument is incompatible with C++98
warning: non-type template argument referring to 
function
object
 B with internal linkage is incompatible with C++98
warning: use of ‘template’ keyword outside of a template is incompatible with C++98
warning: default template arguments for a function template are incompatible with C++98
warning: trailing return types are incompatible with C++98
warning: consecutive right angle brackets are incompatible with C++98 (use ‘> >’)
warning: use of ‘typename’ outside of a template is incompatible with C++98
warning: befriending B without ‘
struct
interface
union
class
enum
‘ keyword is incompatible with C++98
warning: unicode literals are incompatible with C++98
warning: A’ type specifier is incompatible with C++98
warning: inheriting constructors are incompatible with C++98
warning: variadic templates are incompatible with C++98

-Wc++98-compat-bind-to-temporary-copy

Diagnostic text:

warning: 
copying variable
copying parameter
initializing template parameter
returning object
initializing statement expression result
throwing object
copying member subobject
copying array element
allocating object
copying temporary
initializing base subobject
initializing vector element
capturing value
 of type C when binding a reference to a temporary would 
invoke an inaccessible constructor
find no viable constructor
find ambiguous constructors
invoke a deleted constructor
 in C++98

-Wc++98-compat-extra-semi

Diagnostic text:

warning: extra ‘;’ outside of a function is incompatible with C++98

-Wc++98-compat-local-type-template-args

Diagnostic text:

warning: local type A as template argument is incompatible with C++98

-Wc++98-compat-pedantic

Also controls -Wc++98-compat, -Wc++98-compat-bind-to-temporary-copy, -Wc++98-compat-extra-semi, -Wpre-c++14-compat-pedantic, -Wpre-c++17-compat-pedantic, -Wpre-c++20-compat-pedantic, -Wpre-c++2b-compat-pedantic.

Diagnostic text:

warning: implicit conversion from array size expression of type A to 
integral
enumeration
 type C is incompatible with C++98
warning: cast between pointer-to-function and pointer-to-object is incompatible with C++98
warning: empty macro arguments are incompatible with C++98
warning: commas at the end of enumerator lists are incompatible with C++98
warning: extern templates are incompatible with C++98
warning: ‘long long’ is incompatible with C++98
warning: C++98 requires newline at end of file
warning: #line number greater than 32767 is incompatible with C++98
warning: variadic macros are incompatible with C++98

-Wc++98-compat-unnamed-type-template-args

Diagnostic text:

warning: unnamed type as template argument is incompatible with C++98

-Wc11-extensions

Diagnostic text:

warning: anonymous unions are a C11 extension
warning: anonymous structs are a C11 extension
warning: A’ is a C11 extension
warning: pointer comparisons before C11 need to be between two complete or two incomplete types; A is 
 
in
complete and B is 
 
in
complete

-Wc2x-compat

Diagnostic text:

warning: A’ is a keyword in C2x

-Wc2x-extensions

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

warning: ‘_BitInt’ suffix for literals is a C2x extension
warning: use of a ‘#
<BUG IF SEEN>
elifdef
elifndef
‘ directive is a C2x extension
warning: label at end of compound statement is a C2x extension
warning: ‘nullptr’ is a C2x extension
warning: ‘_Static_assert’ with no message is a C2x extension
warning: omitting the parameter name in a function definition is a C2x extension

-Wc99-compat

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

warning: 
using this character in an identifier
starting an identifier with this character
 is incompatible with C99
warning: unicode literals are incompatible with C99
warning: A’ is a keyword in C99
warning: integer literal is too large to be represented in type ‘long’, interpreting as ‘unsigned long’ per C89; this literal will 
have type ‘long long’
be ill-formed
 in C99 onwards

-Wc99-designator

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wc++20-designator.

Diagnostic text:

warning: designated initializers are a C99 feature
warning: array designators are a C99 extension
warning: brace elision for designated initializer is a C99 extension
warning: mixture of designated and non-designated initializers in the same initializer list is a C99 extension
warning: nested designators are a C99 extension

-Wc99-extensions

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wc99-designator.

Diagnostic text:

warning: initializer for aggregate is not a compile-time constant
warning: 
qualifier in 
static 
 
array size 
 
 
‘[*] ‘
is a C99 feature
warning: compound literals are a C99-specific feature
warning: A’ is a C99 extension
warning: flexible array members are a C99 feature
warning: variable declaration in for loop is a C99-specific feature
warning: ISO C99 requires whitespace after the macro name
warning: empty macro arguments are a C99 feature
warning: commas at the end of enumerator lists are a C99-specific feature
warning: hexadecimal floating constants are a C99 feature

-Wcall-to-pure-virtual-from-ctor-dtor

This diagnostic is enabled by default.

Diagnostic text:

warning: call to pure virtual member function A has undefined behavior; overrides of A in subclasses are not available in the 
constructor
destructor
 of C

-Wcalled-once-parameter

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wcompletion-handler.

Diagnostic text:

warning: A parameter marked ‘called_once’ is called twice
warning: 
 
captured 
A parameter marked ‘called_once’ is never called
warning: A parameter marked ‘called_once’ is never 
used
called
 when 
taking true branch
taking false branch
handling this case
none of the cases applies
entering the loop
skipping the loop
taking one of the branches

-Wcast-align

Diagnostic text:

warning: cast from A to B increases required alignment from C to D

-Wcast-calling-convention

This diagnostic is enabled by default.

Diagnostic text:

warning: cast between incompatible calling conventions ‘A’ and ‘B’; calls through this pointer may abort at runtime

-Wcast-function-type

Also controls -Wcast-function-type-strict.

Diagnostic text:

warning: cast 
from A to B 
 
converts to incompatible function type

-Wcast-function-type-strict

Diagnostic text:

warning: cast 
from A to B 
 
converts to incompatible function type

-Wcast-of-sel-type

This diagnostic is enabled by default.

Diagnostic text:

warning: cast of type A to B is deprecated; use sel_getName instead

-Wcast-qual

Diagnostic text:

warning: cast from A to B drops 
const and volatile qualifiers
const qualifier
volatile qualifier
warning: cast from A to B must have all intermediate pointers const qualified to be safe

-Wcast-qual-unrelated

This diagnostic is enabled by default.

Diagnostic text:

warning: ISO C++ does not allow 
const_cast
static_cast
reinterpret_cast
dynamic_cast
C-style cast
functional-style cast
 
 from B to C because it casts away qualifiers, even though the source and destination types are unrelated

-Wchar-align

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wchar-subscripts

Diagnostic text:

warning: array section 
lower bound
length
 is of type ‘char’
warning: array subscript is of type ‘char’

-Wclang-cl-pch

This diagnostic is enabled by default.

Diagnostic text:

warning: support for ‘/Yc’ with more than one source file not implemented yet; flag ignored
warning: support for ‘/Yc’ and ‘/Yu’ with different filenames not implemented yet; flags ignored
warning: #pragma hdrstop filename not supported, /Fp can be used to specify precompiled header filename
warning: definition of macro A does not match definition in precompiled header

-Wclass-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: conversion function converting A to its base class B will never be used
warning: conversion function converting A to itself will never be used
warning: conversion function converting A to B will never be used

-Wclass-varargs

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wnon-pod-varargs.

Diagnostic text:

warning: passing object of class type A through variadic 
function
block
method
constructor
 
; did you mean to call ‘D’?

-Wcmse-union-leak

This diagnostic is enabled by default.

Diagnostic text:

warning: passing union across security boundary via 
parameter B
return value
 may leak information

-Wcomma

Diagnostic text:

warning: possible misuse of comma operator here

-Wcomment

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

warning: escaped newline between */ characters at block comment end
warning: // comments are not allowed in this language
warning: multi-line // comment
warning: ’/*’ within block comment

-Wcomments

Synonym for -Wcomment.

-Wcompare-distinct-pointer-types

This diagnostic is enabled by default.

Diagnostic text:

warning: comparison of distinct pointer types
 (A and B)
 

-Wcompletion-handler

Diagnostic text:

warning: completion handler is called twice
warning: 
 
captured 
completion handler is never called
warning: completion handler is never 
used
called
 when 
taking true branch
taking false branch
handling this case
none of the cases applies
entering the loop
skipping the loop
taking one of the branches

-Wcomplex-component-init

Diagnostic text:

warning: complex initialization specifying real and imaginary components is an extension

-Wcompound-token-split

Some of the diagnostics controlled by this flag are enabled by default.

Controls -Wcompound-token-split-by-macro, -Wcompound-token-split-by-space.

-Wcompound-token-split-by-macro

This diagnostic is enabled by default.

Diagnostic text:

warning: 
B and 
 
C tokens 
introducing statement expression
terminating statement expression
introducing attribute
terminating attribute
forming pointer to member type
 appear in different macro expansion contexts

-Wcompound-token-split-by-space

Diagnostic text:

warning: 
B and 
 
C tokens 
introducing statement expression
terminating statement expression
introducing attribute
terminating attribute
forming pointer to member type
 are separated by whitespace

-Wconditional-type-mismatch

This diagnostic is enabled by default.

Diagnostic text:

warning: pointer/integer type mismatch in conditional expression
 (A and B)
 

-Wconditional-uninitialized

Diagnostic text:

warning: variable A may be uninitialized when 
used here
captured by block

-Wconfig-macros

This diagnostic is enabled by default.

Diagnostic text:

warning: 
definition
#undef
 of configuration macro ‘B’ has no effect on the import of ‘C’; pass ‘
-DB=…
-UB
‘ on the command line to configure the module

-Wconstant-conversion

This diagnostic is enabled by default.

Also controls -Wbitfield-constant-conversion, -Wobjc-bool-constant-conversion.

Diagnostic text:

warning: implicit conversion from C to D changes value from A to B

-Wconstant-evaluated

This diagnostic is enabled by default.

Diagnostic text:

warning: A’ will always evaluate to ‘true’ in a manifestly constant-evaluated expression

-Wconstant-logical-operand

This diagnostic is enabled by default.

Diagnostic text:

warning: use of logical ‘A’ with constant operand

-Wconstexpr-not-const

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘constexpr’ non-static member function will not be implicitly ‘const’ in C++14; add ‘const’ to avoid a change in behavior

-Wconsumed

Diagnostic text:

warning: consumed analysis attribute is attached to member of class A which isn’t marked as consumable
warning: state of variable ‘A’ must match at the entry and exit of loop
warning: parameter ‘A’ not in expected state when the function returns: expected ‘B’, observed ‘C
warning: argument not in expected state; expected ‘A’, observed ‘B
warning: return state set for an unconsumable type ‘A
warning: return value not in expected state; expected ‘A’, observed ‘B
warning: invalid invocation of method ‘A’ on object ‘B’ while it is in the ‘C’ state
warning: invalid invocation of method ‘A’ on a temporary object while it is in the ‘B’ state

-Wconversion

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wbitfield-enum-conversion, -Wbool-conversion, -Wconstant-conversion, -Wenum-conversion, -Wfloat-conversion, -Wimplicit-float-conversion, -Wimplicit-int-conversion, -Wint-conversion, -Wliteral-conversion, -Wnon-literal-null-conversion, -Wnull-conversion, -Wobjc-literal-conversion, -Wshorten-64-to-32, -Wsign-conversion, -Wstring-conversion.

Diagnostic text:

warning: implicit conversion discards imaginary component: A to B
warning: implicit conversion turns vector to scalar: A to B
warning: passing non-generic address space pointer to A may cause dynamic conversion affecting performance
warning: non-type template argument with value ‘A’ converted to ‘B’ for unsigned template parameter of type C
warning: non-type template argument value ‘A’ truncated to ‘B’ for template parameter of type C

-Wcoro-non-aligned-allocation-function

This diagnostic is enabled by default.

Diagnostic text:

warning: under -fcoro-aligned-allocation, the non-aligned allocation function for the promise type A has higher precedence than the global aligned allocation function

-Wcoroutine

This diagnostic is enabled by default.

Also controls -Walways-inline-coroutine, -Wcoro-non-aligned-allocation-function, -Wcoroutine-missing-unhandled-exception, -Wdeprecated-coroutine.

Diagnostic text:

warning: return type of ‘coroutine_handle<>::address should be ‘void*’ (have A) in order to get capability with existing async C API.

-Wcoroutine-missing-unhandled-exception

This diagnostic is enabled by default.

Diagnostic text:

warning: A is required to declare the member ‘unhandled_exception()’ when exceptions are enabled

-Wcovered-switch-default

Diagnostic text:

warning: default label in switch which covers all enumeration values

-Wcpp

Synonym for -W#warnings.

-Wcstring-format-directive

Diagnostic text:

warning: using A directive in 
NSString
CFString
 which is being passed as a formatting argument to the formatting 
method
CFfunction

-Wctad-maybe-unsupported

Diagnostic text:

warning: A may not intend to support class template argument deduction

-Wctor-dtor-privacy

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wctu

This diagnostic is enabled by default.

Diagnostic text:

warning: imported AST from ‘A’ had been generated for a different target, current: B, imported: C

-Wcuda-compat

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

warning: A attribute parameter B is negative and will be ignored
warning: nvcc does not allow ‘__A__’ to appear after the parameter list in lambdas
warning: ignored ‘inline’ attribute on kernel function A
warning: kernel function A is a member function; this may not be accepted by nvcc
warning: argument to ‘#pragma unroll’ should not be in parentheses in CUDA C/C++

-Wcustom-atomic-properties

Diagnostic text:

warning: atomic by default property A has a user defined 
getter
setter
 (property should be marked ‘atomic’ if this is intended)

-Wcxx-attribute-extension

This diagnostic is enabled by default.

Diagnostic text:

warning: ISO C++ does not allow an attribute list to appear here

-Wdangling

This diagnostic is enabled by default.

Also controls -Wdangling-field, -Wdangling-gsl, -Wdangling-initializer-list, -Wreturn-stack-address.

Diagnostic text:

warning: 
temporary 
whose address is used as value of
 
implicitly 
bound to
 
 
reference 
member of local variable
local 
variable
reference
array backing 
initializer list subobject of local variable
local initializer list
 
D 
 
will be destroyed at the end of the full-expression
warning: sorry, lifetime extension of 
temporary
backing array of initializer list
 created by aggregate initialization using default member initializer is not supported; lifetime of 
temporary
backing array
 will end at the end of the full-expression

-Wdangling-else

This diagnostic is enabled by default.

Diagnostic text:

warning: add explicit braces to avoid dangling else

-Wdangling-field

This diagnostic is enabled by default.

Diagnostic text:

warning: binding reference member A to stack allocated 
variable
parameter
 B
warning: 
reference
backing array for ‘std::initializer_list’
 
 
subobject of 
member A 
binds to
is
 a temporary object whose lifetime is shorter than the lifetime of the constructed object
warning: initializing pointer member A with the stack address of 
variable
parameter
 B
warning: temporary bound to reference member of allocated object will be destroyed at the end of the full-expression

-Wdangling-gsl

This diagnostic is enabled by default.

Diagnostic text:

warning: object backing the pointer will be destroyed at the end of the full-expression
warning: initializing pointer member A to point to a temporary object whose lifetime is shorter than the lifetime of the constructed object

-Wdangling-initializer-list

This diagnostic is enabled by default.

Diagnostic text:

warning: array backing 
initializer list subobject of the allocated object
the allocated initializer list
 will be destroyed at the end of the full-expression

-Wdarwin-sdk-settings

This diagnostic is enabled by default.

Diagnostic text:

warning: SDK settings were ignored as ‘SDKSettings.json’ could not be parsed

-Wdate-time

Diagnostic text:

warning: expansion of date or time macro is not reproducible

-Wdealloc-in-category

This diagnostic is enabled by default.

Diagnostic text:

warning: -dealloc is being overridden in a category

-Wdebug-compression-unavailable

This diagnostic is enabled by default.

Diagnostic text:

warning: cannot compress debug sections (A not enabled)

-Wdeclaration-after-statement

Diagnostic text:

warning: mixing declarations and code is a C99 extension
warning: mixing declarations and code is incompatible with standards before C99

-Wdefaulted-function-deleted

This diagnostic is enabled by default.

Diagnostic text:

warning: explicitly defaulted 
<ERROR>
equality
three-way
equality
relational
 comparison operator is implicitly deleted
warning: explicitly defaulted 
default constructor
copy constructor
move constructor
copy assignment operator
move assignment operator
destructor
 is implicitly deleted

-Wdelegating-ctor-cycles

This diagnostic is an error by default, but the flag -Wno-delegating-ctor-cycles can be used to disable the error.

Diagnostic text:

error: constructor for A creates a delegation cycle

-Wdelete-abstract-non-virtual-dtor

This diagnostic is enabled by default.

Diagnostic text:

warning: 
delete
destructor
 called on B that is abstract but has non-virtual destructor

-Wdelete-incomplete

This diagnostic is enabled by default.

Diagnostic text:

warning: cannot delete expression with pointer-to-‘void’ type A
warning: deleting pointer to incomplete type A may cause undefined behavior

-Wdelete-non-abstract-non-virtual-dtor

Diagnostic text:

warning: 
delete
destructor
 called on non-final B that has virtual functions but non-virtual destructor

-Wdelete-non-virtual-dtor

Some of the diagnostics controlled by this flag are enabled by default.

Controls -Wdelete-abstract-non-virtual-dtor, -Wdelete-non-abstract-non-virtual-dtor.

-Wdelimited-escape-sequence-extension

Diagnostic text:

warning: 
delimited
named
 escape sequences are a 
Clang
C++2b
 extension

-Wdeprecate-lax-vec-conv-all

This diagnostic is enabled by default.

Diagnostic text:

warning: Implicit conversion between vector types (‘A’ and ‘B’) is deprecated. In the future, the behavior implied by ‘-fno-lax-vector-conversions’ will be the default.

-Wdeprecated

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wdeprecated-anon-enum-enum-conversion, -Wdeprecated-array-compare, -Wdeprecated-attributes, -Wdeprecated-builtins, -Wdeprecated-comma-subscript, -Wdeprecated-copy, -Wdeprecated-copy-with-dtor, -Wdeprecated-declarations, -Wdeprecated-dynamic-exception-spec, -Wdeprecated-enum-compare, -Wdeprecated-enum-compare-conditional, -Wdeprecated-enum-enum-conversion, -Wdeprecated-enum-float-conversion, -Wdeprecated-increment-bool, -Wdeprecated-pragma, -Wdeprecated-register, -Wdeprecated-this-capture, -Wdeprecated-type, -Wdeprecated-volatile, -Wdeprecated-writable-strings.

Diagnostic text:

warning: -O4 is equivalent to -O3
warning: access declarations are deprecated; use using declarations instead
warning: out-of-line definition of constexpr static data member is redundant in C++17 and is deprecated
warning: argument ‘A’ is deprecated, use ‘B’ instead
warning: treating ‘A’ input as ‘B’ when in C++ mode, this behavior is deprecated
warning: A does not support the option ‘B
warning: Use of ‘long’ with ‘__vector’ is deprecated

-Wdeprecated-altivec-src-compat

This diagnostic is enabled by default.

Diagnostic text:

warning: Current handling of vector bool and vector pixel types in this context are deprecated. The default behaviour will soon change to that implied by the ‘-altivec-compat=xl’ option

-Wdeprecated-anon-enum-enum-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: 
arithmetic between
bitwise operation between
comparison of
conditional expression between
compound assignment of
 different enumeration types
 (B and C)
 
 is deprecated

-Wdeprecated-array-compare

This diagnostic is enabled by default.

Diagnostic text:

warning: comparison between two arrays is deprecated; to compare array addresses, use unary ‘+’ to decay operands to pointers

-Wdeprecated-attributes

This diagnostic is enabled by default.

Diagnostic text:

warning: the ‘[[_Noreturn]]’ attribute spelling is deprecated in C2x; use ‘[[noreturn]]’ instead
warning: applying attribute A to a declaration is deprecated; apply it to the type instead
warning: specifying vector types with the ‘mode’ attribute is deprecated; use the ‘vector_size’ attribute instead

-Wdeprecated-builtins

This diagnostic is enabled by default.

Diagnostic text:

warning: builtin A is deprecated; use B instead

-Wdeprecated-comma-subscript

This diagnostic is enabled by default.

Diagnostic text:

warning: top-level comma expression in array subscript is deprecated in C++20 and unsupported in C++2b

-Wdeprecated-copy

Also controls -Wdeprecated-copy-with-user-provided-copy.

Diagnostic text:

warning: definition of implicit copy 
constructor
assignment operator
 for A is deprecated because it has a user-declared copy 
assignment operator
constructor

-Wdeprecated-copy-with-dtor

Also controls -Wdeprecated-copy-with-user-provided-dtor.

Diagnostic text:

warning: definition of implicit copy 
constructor
assignment operator
 for A is deprecated because it has a user-declared destructor

-Wdeprecated-copy-with-user-provided-copy

Diagnostic text:

warning: definition of implicit copy 
constructor
assignment operator
 for A is deprecated because it has a user-provided copy 
assignment operator
constructor

-Wdeprecated-copy-with-user-provided-dtor

Diagnostic text:

warning: definition of implicit copy 
constructor
assignment operator
 for A is deprecated because it has a user-provided destructor

-Wdeprecated-coroutine

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘for co_await’ belongs to CoroutineTS instead of C++20, which is deprecated

-Wdeprecated-declarations

This diagnostic is enabled by default.

Diagnostic text:

warning: specifying ‘uuid’ as an ATL attribute is deprecated; use __declspec instead
warning: use of C-style parameters in Objective-C method declarations is deprecated
warning: A is deprecated
warning: A may be deprecated because the receiver type is unknown
warning: A is deprecated: B
warning: property access is using A method which is deprecated

-Wdeprecated-dynamic-exception-spec

Diagnostic text:

warning: dynamic exception specifications are deprecated

-Wdeprecated-enum-compare

This diagnostic is enabled by default.

Diagnostic text:

warning: 
arithmetic between
bitwise operation between
comparison of
conditional expression between
compound assignment of
 different enumeration types
 (B and C)
 
 is deprecated

-Wdeprecated-enum-compare-conditional

This diagnostic is enabled by default.

Diagnostic text:

warning: 
arithmetic between
bitwise operation between
comparison of
conditional expression between
compound assignment of
 different enumeration types
 (B and C)
 
 is deprecated

-Wdeprecated-enum-enum-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: 
arithmetic between
bitwise operation between
comparison of
conditional expression between
compound assignment of
 different enumeration types
 (B and C)
 
 is deprecated

-Wdeprecated-enum-float-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: 
arithmetic between
bitwise operation between
comparison of
conditional expression between
compound assignment of
 
floating-point
enumeration
 type C 
with
from
and
 
enumeration
floating-point
 type D is deprecated

-Wdeprecated-implementations

Diagnostic text:

warning: implementing deprecated 
method
class
category
warning: implementing unavailable method

-Wdeprecated-increment-bool

This diagnostic is enabled by default.

Diagnostic text:

warning: incrementing expression of type bool is deprecated and incompatible with C++17

-Wdeprecated-non-prototype

This diagnostic is enabled by default.

Diagnostic text:

warning: a function 
declaration
definition
 without a prototype is deprecated in all versions of C 
and is not supported in C2x
and is treated as a zero-parameter prototype in C2x, conflicting with a 
previous
subsequent
 
declaration
definition
warning: passing arguments to 
a function
B
 without a prototype is deprecated in all versions of C and is not supported in C2x

-Wdeprecated-objc-isa-usage

This diagnostic is enabled by default.

Diagnostic text:

warning: assignment to Objective-C’s isa is deprecated in favor of object_setClass()
warning: direct access to Objective-C’s isa is deprecated in favor of object_getClass()

-Wdeprecated-objc-pointer-introspection

This diagnostic is enabled by default.

Also controls -Wdeprecated-objc-pointer-introspection-performSelector.

Diagnostic text:

warning: bitmasking for introspection of Objective-C object pointers is strongly discouraged

-Wdeprecated-objc-pointer-introspection-performSelector

This diagnostic is enabled by default.

Diagnostic text:

warning: bitmasking for introspection of Objective-C object pointers is strongly discouraged

-Wdeprecated-pragma

This diagnostic is enabled by default.

Diagnostic text:

warning: macro A has been marked as deprecated
 
: C

-Wdeprecated-register

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘register’ storage class specifier is deprecated and incompatible with C++17

-Wdeprecated-static-analyzer-flag

This diagnostic is enabled by default.

Diagnostic text:

warning: analyzer option ‘A’ is deprecated. This flag will be removed in B, and passing this option will be an error.
warning: analyzer option ‘A’ is deprecated. This flag will be removed in B, and passing this option will be an error. Use ‘C’ instead.

-Wdeprecated-this-capture

This diagnostic is enabled by default.

Diagnostic text:

warning: implicit capture of ‘this’ with a capture default of ‘=’ is deprecated

-Wdeprecated-type

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘_ExtInt’ is deprecated; use ‘_BitInt’ instead

-Wdeprecated-volatile

This diagnostic is enabled by default.

Diagnostic text:

warning: 
decrement
increment
 of object of volatile-qualified type B is deprecated
warning: use of result of assignment to object of volatile-qualified type A is deprecated
warning: volatile-qualified parameter type A is deprecated
warning: volatile-qualified return type A is deprecated
warning: volatile qualifier in structured binding declaration is deprecated

-Wdirect-ivar-access

Diagnostic text:

warning: instance variable A is being directly accessed

-Wdisabled-macro-expansion

Diagnostic text:

warning: disabled expansion of recursive macro

-Wdisabled-optimization

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wdiscard-qual

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wdistributed-object-modifiers

This diagnostic is enabled by default.

Diagnostic text:

warning: conflicting distributed object modifiers on parameter type in implementation of A
warning: conflicting distributed object modifiers on return type in implementation of A

-Wdivision-by-zero

This diagnostic is enabled by default.

Diagnostic text:

warning: 
remainder
division
 by zero is undefined

-Wdll-attribute-on-redeclaration

This diagnostic is enabled by default.

Diagnostic text:

warning: redeclaration of A should not add B attribute

-Wdllexport-explicit-instantiation-decl

This diagnostic is enabled by default.

Diagnostic text:

warning: explicit instantiation declaration should not be ‘dllexport’

-Wdllimport-static-field-def

This diagnostic is enabled by default.

Diagnostic text:

warning: definition of dllimport static field

-Wdocumentation

Also controls -Wdocumentation-deprecated-sync, -Wdocumentation-html.

Diagnostic text:

warning: 
\
@
class
interface
protocol
struct
union
‘ command should not be used in a comment attached to a non-
class
interface
protocol
struct
union
 declaration
warning: duplicated command ‘
\
@
B
warning: empty paragraph passed to ‘
\
@
B’ command
warning: 
\
@
classdesign
coclass
dependency
helper
helperclass
helps
instancesize
ownership
performance
security
superclass
‘ command should not be used in a comment attached to a non-container declaration
warning: 
\
@
function
functiongroup
method
methodgroup
callback
‘ command should be used in a comment attached to 
a function
a function
an Objective-C method
an Objective-C method
a pointer to function
 declaration
warning: HTML start tag prematurely ended, expected attribute name or ‘>’
warning: expected quoted string after equals sign
warning: 
\
@
B’ command has 
no
C
 word argument
 
s
, expected D
warning: parameter ‘A’ is already documented
warning: unrecognized parameter passing direction, valid directions are ‘[in]’, ‘[out]’ and ‘[in,out]’
warning: 
\
@
param’ command used in a comment that is not attached to a function declaration
warning: parameter ‘A’ not found in the function declaration
warning: 
\
@
B’ command used in a comment that is attached to a 
function returning void
constructor
destructor
method returning void
warning: 
\
@
B’ command used in a comment that is not attached to a function or method declaration
warning: template parameter ‘A’ is already documented
warning: 
\
@
tparam’ command used in a comment that is not attached to a template declaration
warning: template parameter ‘A’ not found in the template declaration
warning: not a Doxygen trailing comment
warning: 
\
@
B’ command does not terminate a verbatim text block

-Wdocumentation-deprecated-sync

Diagnostic text:

warning: declaration is marked with ‘
\
@
deprecated’ command but does not have a deprecation attribute

-Wdocumentation-html

Diagnostic text:

warning: HTML end tag ‘A’ is forbidden
warning: HTML end tag does not match any start tag
warning: HTML tag ‘A’ requires an end tag
warning: HTML start tag ‘A’ closed by ‘B

-Wdocumentation-pedantic

Also controls -Wdocumentation-unknown-command.

Diagnostic text:

warning: whitespace is not allowed in parameter passing direction

-Wdocumentation-unknown-command

Diagnostic text:

warning: unknown command tag name ‘A’; did you mean ‘B’?
warning: unknown command tag name

-Wdollar-in-identifier-extension

Diagnostic text:

warning: ’$’ in identifier

-Wdouble-promotion

Diagnostic text:

warning: implicit conversion increases floating-point precision: A to B

-Wdtor-name

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

warning: ISO C++ considers this destructor name lookup to be ambiguous
warning: ISO C++ requires the name after ‘::~’ to be found in the same scope as the name before ‘::~’
warning: qualified destructor name only found in lexical scope; omit the qualifier to find this type name by unqualified lookup

-Wdtor-typedef

This diagnostic is an error by default, but the flag -Wno-dtor-typedef can be used to disable the error.

Diagnostic text:

error: destructor cannot be declared using a 
typedef
type alias
 A of the class name

-Wduplicate-decl-specifier

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

warning: duplicate ‘A’ declaration specifier
warning: duplicate ‘A’ declaration specifier
warning: multiple identical address spaces specified for type
warning: duplicate ‘A’ declaration specifier

-Wduplicate-enum

Diagnostic text:

warning: element A has been implicitly assigned B which another element has been assigned

-Wduplicate-method-arg

Diagnostic text:

warning: redeclaration of method parameter A

-Wduplicate-method-match

Diagnostic text:

warning: multiple declarations of method A found and ignored

-Wduplicate-protocol

This diagnostic is enabled by default.

Diagnostic text:

warning: duplicate protocol definition of A is ignored

-Wdxil-validation

This diagnostic is enabled by default.

Diagnostic text:

warning: dxv not found. Resulting DXIL will not be validated or signed for use in release environments.

-Wdynamic-class-memaccess

This diagnostic is enabled by default.

Diagnostic text:

warning: 
destination for
source of
first operand of
second operand of
 this B call is a pointer to 
 
class containing a 
dynamic class D; vtable pointer will be 
overwritten
copied
moved
compared

-Wdynamic-exception-spec

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wdeprecated-dynamic-exception-spec.

Diagnostic text:

error: ISO C++17 does not allow dynamic exception specifications

-Weager-load-cxx-named-modules

This diagnostic is enabled by default.

Diagnostic text:

warning: the form ‘-fmodule-file=<BMI-path>’ is deprecated for standard C++ named modules;consider to use ‘-fmodule-file=<module-name>=<BMI-path>’ instead

-Welaborated-enum-base

This diagnostic is an error by default, but the flag -Wno-elaborated-enum-base can be used to disable the error.

Diagnostic text:

error: non-defining declaration of enumeration with a fixed underlying type is only permitted as a standalone declaration
 
; missing list of enumerators?

-Welaborated-enum-class

This diagnostic is an error by default, but the flag -Wno-elaborated-enum-class can be used to disable the error.

Diagnostic text:

error: reference to enumeration must use ‘enum’ not ‘enum 
struct
class

-Wembedded-directive

Diagnostic text:

warning: embedding a directive within macro arguments has undefined behavior

-Wempty-body

This diagnostic is enabled by default.

Diagnostic text:

warning: for loop has empty body
warning: if statement has empty body
warning: range-based for loop has empty body
warning: switch statement has empty body
warning: while loop has empty body

-Wempty-decomposition

This diagnostic is enabled by default.

Diagnostic text:

warning: ISO C++17 does not allow a decomposition group to be empty

-Wempty-init-stmt

Diagnostic text:

warning: empty initialization statement of ‘
if
switch
range-based for
‘ has no effect

-Wempty-translation-unit

Diagnostic text:

warning: ISO C requires a translation unit to contain at least one declaration

-Wencode-type

This diagnostic is enabled by default.

Diagnostic text:

warning: encoding of A type is incomplete because B component has unknown encoding

-Wenum-compare

This diagnostic is enabled by default.

Also controls -Wdeprecated-enum-compare, -Wenum-compare-switch.

Diagnostic text:

warning: 
arithmetic between
bitwise operation between
comparison of
conditional expression between
compound assignment of
 different enumeration types
 (B and C)
 

-Wenum-compare-conditional

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wdeprecated-enum-compare-conditional.

Diagnostic text:

warning: 
arithmetic between
bitwise operation between
comparison of
conditional expression between
compound assignment of
 different enumeration types
 (B and C)
 

-Wenum-compare-switch

This diagnostic is enabled by default.

Diagnostic text:

warning: comparison of different enumeration types in switch statement
 (A and B)
 

-Wenum-constexpr-conversion

This diagnostic is an error by default, but the flag -Wno-enum-constexpr-conversion can be used to disable the error.

Diagnostic text:

error: integer value A is outside the valid range of values [B, C] for this enumeration type

-Wenum-conversion

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wenum-compare-conditional, -Wenum-enum-conversion, -Wenum-float-conversion.

Diagnostic text:

warning: implicit conversion from enumeration type A to different enumeration type B

-Wenum-enum-conversion

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wdeprecated-enum-enum-conversion.

Diagnostic text:

warning: 
arithmetic between
bitwise operation between
comparison of
conditional expression between
compound assignment of
 different enumeration types
 (B and C)
 

-Wenum-float-conversion

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wdeprecated-enum-float-conversion.

Diagnostic text:

warning: 
arithmetic between
bitwise operation between
comparison of
conditional expression between
compound assignment of
 
floating-point
enumeration
 type C 
with
from
and
 
enumeration
floating-point
 type D

-Wenum-too-large

This diagnostic is enabled by default.

Diagnostic text:

warning: enumeration values exceed range of largest integer
warning: incremented enumerator value A is not representable in the largest integer type

-Wexceptions

This diagnostic is enabled by default.

Diagnostic text:

warning: cannot refer to a non-static member from the handler of a 
constructor
destructor
 function try block
warning: exception of type A will be caught by earlier handler
warning: A has a non-throwing exception specification but can still throw

-Wexcess-initializers

This diagnostic is enabled by default.

Diagnostic text:

warning: excess elements in 
array
vector
scalar
union
struct
 initializer
warning: excess elements in initializer for indivisible sizeless type A
warning: excess elements in char array initializer
warning: initializer-string for char array is too long

-Wexit-time-destructors

Diagnostic text:

warning: declaration requires an exit-time destructor

-Wexpansion-to-defined

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

warning: macro expansion producing ‘defined’ has undefined behavior
warning: macro expansion producing ‘defined’ has undefined behavior

-Wexplicit-initialize-call

This diagnostic is enabled by default.

Diagnostic text:

warning: explicit call to +initialize results in duplicate call to +initialize
warning: explicit call to [super initialize] should only be in implementation of +initialize

-Wexplicit-ownership-type

Diagnostic text:

warning: method parameter of type A with no explicit ownership

-Wexport-unnamed

This diagnostic is enabled by default.

Diagnostic text:

warning: ISO C++20 does not permit 
an empty
a static_assert
 declaration to appear in an export block
warning: ISO C++20 does not permit a declaration that does not introduce any names to be exported

-Wexport-using-directive

This diagnostic is enabled by default.

Diagnostic text:

warning: ISO C++20 does not permit using directive to be exported

-Wextern-c-compat

This diagnostic is enabled by default.

Diagnostic text:

warning: 
 
empty 
struct
union
 has size 0 in C, 
size 1
non-zero size
 in C++

-Wextern-initializer

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘extern’ variable has an initializer

-Wextra

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wdeprecated-copy, -Wempty-init-stmt, -Wfuse-ld-path, -Wignored-qualifiers, -Winitializer-overrides, -Wmissing-field-initializers, -Wmissing-method-return-type, -Wnull-pointer-arithmetic, -Wnull-pointer-subtraction, -Wsemicolon-before-method-body, -Wsign-compare, -Wstring-concatenation, -Wunused-but-set-parameter, -Wunused-parameter.

Diagnostic text:

warning: call to function without interrupt attribute could clobber interruptee’s VFP registers

-Wextra-qualification

This diagnostic is enabled by default.

Diagnostic text:

warning: extra qualification on member A

-Wextra-semi

Also controls -Wc++11-extra-semi, -Wc++98-compat-extra-semi.

Diagnostic text:

warning: extra ‘;’ 
outside of a function
inside a B
inside instance variable list
after member function definition
warning: extra ‘;’ after member function definition

-Wextra-semi-stmt

Also controls -Wempty-init-stmt.

Diagnostic text:

warning: empty expression statement has no effect; remove unnecessary ‘;’ to silence this warning

-Wextra-tokens

This diagnostic is enabled by default.

Diagnostic text:

warning: extra tokens at end of #A directive
warning: extra tokens at the end of ‘#pragma omp A’ are ignored

-Wfinal-dtor-non-final-class

This diagnostic is enabled by default.

Diagnostic text:

warning: class with destructor marked ‘
final
sealed
‘ cannot be inherited from

-Wfinal-macro

This diagnostic is enabled by default.

Diagnostic text:

warning: macro A has been marked as final and should not be 
undefined
redefined

-Wfixed-enum-extension

Diagnostic text:

warning: enumeration types with a fixed underlying type are a Clang extension

-Wfixed-point-overflow

This diagnostic is enabled by default.

Diagnostic text:

warning: overflow in expression; result is A with type B

-Wflag-enum

This diagnostic is enabled by default.

Diagnostic text:

warning: enumeration value A is out of range of flags in enumeration type B

-Wflexible-array-extensions

Diagnostic text:

warning: A may not be used as an array element due to flexible array member
warning: A may not be nested in a struct due to flexible array member

-Wfloat-conversion

Also controls -Wfloat-overflow-conversion, -Wfloat-zero-conversion.

Diagnostic text:

warning: implicit conversion turns floating-point number into integer: A to B

-Wfloat-equal

Diagnostic text:

warning: comparing floating point with == or != is unsafe

-Wfloat-overflow-conversion

Diagnostic text:

warning: implicit conversion from A to B changes value from C to D
warning: implicit conversion of out of range value from A to B is undefined

-Wfloat-zero-conversion

Diagnostic text:

warning: implicit conversion from A to B changes non-zero value from C to D

-Wfor-loop-analysis

Diagnostic text:

warning: variable A is 
decremented
incremented
 both in the loop header and in the loop body
warning: variable
s
 B
s B and C
s B, C, and D
s B, C, D, and E
 used in loop condition not modified in loop body

-Wformat

This diagnostic is enabled by default.

Also controls -Wformat-extra-args, -Wformat-insufficient-args, -Wformat-invalid-specifier, -Wformat-security, -Wformat-y2k, -Wformat-zero-length, -Wnonnull.

Diagnostic text:

warning: using ‘%%P’ format specifier without precision
warning: 
values of type
enum values with underlying type
 A’ should not be used as format arguments; add an explicit cast to B instead
warning: using ‘A’ format specifier, but argument has boolean value
warning: format specifies type A but the argument has 
type
underlying type
 B
warning: using ‘A’ format specifier annotation outside of os_log()/os_trace()
warning: invalid position specified for 
field width
field precision
warning: cannot mix positional and non-positional arguments in format string
warning: length modifier ‘A’ results in undefined behavior or no effect with ‘B’ conversion specifier
warning: format string should not be a wide string
warning: position arguments in format strings start counting at 1 (not 0)
warning: format string missing
warning: object format flags cannot be used with ‘A’ conversion specifier
warning: 
*
.*
‘ specified field 
width
precision
 is missing a matching ‘int’ argument
warning: field 
width
precision
 should have type B, but argument has type C
warning: missing object format flag
warning: format string contains ‘\0’ within the string body
warning: format string is not null-terminated
warning: flag ‘A’ is ignored when flag ‘B’ is present
warning: incomplete format specifier
warning: A’ is not a valid object format flag
warning: ’%%n’ specifier not supported on this platform
warning: flag ‘A’ results in undefined behavior with ‘B’ conversion specifier
warning: 
field width
precision
 used with ‘B’ conversion specifier, resulting in undefined behavior
warning: data argument position ‘A’ exceeds the number of data arguments (B)
warning: zero field width in scanf format string is unused
warning: no closing ‘]’ for ‘%%[‘ in scanf format string

-Wformat-extra-args

This diagnostic is enabled by default.

Diagnostic text:

warning: data argument not used by format string

-Wformat-insufficient-args

This diagnostic is enabled by default.

Diagnostic text:

warning: more ‘%%’ conversions than data arguments

-Wformat-invalid-specifier

This diagnostic is enabled by default.

Diagnostic text:

warning: invalid conversion specifier ‘A

-Wformat-non-iso

Diagnostic text:

warning: A 
length modifier
conversion specifier
 is not supported by ISO C
warning: using length modifier ‘A’ with conversion specifier ‘B’ is not supported by ISO C
warning: positional arguments are not supported by ISO C

-Wformat-nonliteral

Diagnostic text:

warning: format string is not a string literal

-Wformat-pedantic

Diagnostic text:

warning: 
values of type
enum values with underlying type
 A’ should not be used as format arguments; add an explicit cast to B instead
warning: format specifies type A but the argument has 
type
underlying type
 B

-Wformat-security

This diagnostic is enabled by default.

Diagnostic text:

warning: format string is not a string literal (potentially insecure)

-Wformat-type-confusion

Diagnostic text:

warning: format specifies type A but the argument has 
type
underlying type
 B

-Wformat-y2k

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wformat-zero-length

This diagnostic is enabled by default.

Diagnostic text:

warning: format string is empty

-Wformat=2

Some of the diagnostics controlled by this flag are enabled by default.

Controls -Wformat-nonliteral, -Wformat-security, -Wformat-y2k.

-Wfortify-source

This diagnostic is enabled by default.

Diagnostic text:

warning: A’ may overflow; destination buffer in argument B has size C, but the corresponding specifier may require size D
warning: A’ will always overflow; destination buffer has size B, but format string expands to at least C
warning: A’ will always overflow; destination buffer has size B, but size argument is C
warning: A’ size argument is too large; destination buffer has size B, but size argument is C
warning: A’ will always overflow; destination buffer has size B, but the source string has length C (including NUL byte)

-Wfour-char-constants

Diagnostic text:

warning: multi-character character constant

-Wframe-address

Diagnostic text:

warning: calling ‘A’ with a nonzero argument is unsafe

-Wframe-larger-than

This diagnostic is enabled by default.

Diagnostic text:

The text of this diagnostic is not controlled by Clang.

warning: stack frame size (A) exceeds limit (B) in ‘C

More fine grained information about the stack layout is available by adding the -Rpass-analysis=stack-frame-layout command-line flag to the compiler invocation.

The diagnostic information can be saved to a file in a machine readable format, like YAML by adding the -foptimization-record-file=<file> command-line flag.

Results can be filtered by function name by passing -mllvm -filter-print-funcs=foo, where foo is the target function’s name.

-Wframework-include-private-from-public

This diagnostic is enabled by default.

Diagnostic text:

warning: public framework header includes private framework header ‘A

-Wfree-nonheap-object

This diagnostic is enabled by default.

Diagnostic text:

warning: attempt to call A on non-heap 
object C
object: block expression
object: lambda-to-function-pointer conversion

-Wfunction-def-in-objc-container

This diagnostic is enabled by default.

Diagnostic text:

warning: function definition inside an Objective-C container is deprecated

-Wfunction-multiversion

This diagnostic is enabled by default.

Also controls -Wtarget-clones-mixed-specifiers.

Diagnostic text:

warning: body of cpu_dispatch function will be ignored
warning: CPU list contains duplicate entries; attribute ignored
warning: version list contains duplicate entries
warning: version list contains entries that don’t impact code generation

-Wfuse-ld-path

Diagnostic text:

warning: ’-fuse-ld=’ taking a path is deprecated; use ‘–ld-path=’ instead

-Wfuture-compat

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wgcc-compat

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

warning: ‘diagnose_if’ is a clang extension
warning: ‘enable_if’ is a clang extension
warning: __final is a GNU extension, consider using C++11 final
warning: GCC does not allow A attribute in this position on a function definition
warning: ‘break’ is bound to loop, GCC binds it to switch
warning: GCC does not allow the ‘cleanup’ attribute argument to be anything other than a simple identifier
warning: GCC does not allow an attribute in this position on a function declaration
warning: GCC does not allow the A attribute to be written on a type
warning: GCC requires a function with the A attribute to be variadic
warning: GCC does not allow variable declarations in for loop initializers before C99
warning: A’ is bound to current loop, GCC binds it to the enclosing loop

-Wglobal-constructors

Diagnostic text:

warning: declaration requires a global constructor
warning: declaration requires a global destructor

-Wglobal-isel

This diagnostic is enabled by default.

Diagnostic text:

warning: -fglobal-isel support for the ‘A’ architecture is incomplete
warning: -fglobal-isel support is incomplete for this architecture at the current optimization level

-Wgnu-alignof-expression

This diagnostic is enabled by default.

Diagnostic text:

warning: A applied to an expression is a GNU extension

-Wgnu-anonymous-struct

Diagnostic text:

warning: anonymous structs are a GNU extension

-Wgnu-array-member-paren-init

This diagnostic is an error by default, but the flag -Wno-gnu-array-member-paren-init can be used to disable the error.

Diagnostic text:

error: parenthesized initialization of a member array is a GNU extension

-Wgnu-auto-type

Diagnostic text:

warning: ‘__auto_type’ is a GNU extension

-Wgnu-binary-literal

Diagnostic text:

warning: binary integer literals are a GNU extension

-Wgnu-case-range

Diagnostic text:

warning: use of GNU case range extension

-Wgnu-complex-integer

Diagnostic text:

warning: complex integer types are a GNU extension

-Wgnu-compound-literal-initializer

Diagnostic text:

warning: initialization of an array 
of type A from a compound literal of type B
from a compound literal
 is a GNU extension

-Wgnu-conditional-omitted-operand

Diagnostic text:

warning: use of GNU ?: conditional expression extension, omitting middle operand

-Wgnu-designator

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

warning: use of GNU array range extension
warning: use of GNU ‘missing =’ extension in designator
warning: use of GNU old-style field designator extension

-Wgnu-empty-initializer

Diagnostic text:

warning: use of GNU empty initializer extension

-Wgnu-empty-struct

Diagnostic text:

warning: empty 
struct
union
 is a GNU extension
warning: flexible array member A in otherwise empty 
struct
interface
union
class
enum
 is a GNU extension
warning: 
struct
union
 without named members is a GNU extension

-Wgnu-flexible-array-initializer

Diagnostic text:

warning: flexible array initialization is a GNU extension

-Wgnu-flexible-array-union-member

Diagnostic text:

warning: flexible array member A in a union is a GNU extension

-Wgnu-folding-constant

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

warning: expression is not an 
integer
integral
 constant expression; folding it to a constant is a GNU extension
warning: in-class initializer for static data member is not a constant expression; folding it to a constant is a GNU extension
warning: variable length array folded to constant array as an extension

-Wgnu-imaginary-constant

Diagnostic text:

warning: imaginary constants are a GNU extension

-Wgnu-include-next

Diagnostic text:

warning: #include_next is a language extension

-Wgnu-inline-cpp-without-extern

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘gnu_inline’ attribute without ‘extern’ in C++ treated as externally available, this changed in Clang 10

-Wgnu-label-as-value

Diagnostic text:

warning: use of GNU address-of-label extension
warning: use of GNU indirect-goto extension

-Wgnu-line-marker

Diagnostic text:

warning: this style of line directive is a GNU extension

-Wgnu-null-pointer-arithmetic

Diagnostic text:

warning: arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension

-Wgnu-offsetof-extensions

Diagnostic text:

warning: defining a type within ‘
__builtin_offsetof
offsetof
‘ is a Clang extension

-Wgnu-pointer-arith

Diagnostic text:

warning: arithmetic on
 a
 
 pointer
 
s
 to
 the
 
 function type
 
s
 B
 
 and D
 is a GNU extension
warning: subscript of a pointer to void is a GNU extension
warning: arithmetic on
 a
 
 pointer
 
s
 to void is a GNU extension

-Wgnu-redeclared-enum

Diagnostic text:

warning: redeclaration of already-defined enum A is a GNU extension

-Wgnu-statement-expression

Also controls -Wgnu-statement-expression-from-macro-expansion.

Diagnostic text:

warning: use of GNU statement expression extension

-Wgnu-statement-expression-from-macro-expansion

Diagnostic text:

warning: use of GNU statement expression extension from macro expansion

-Wgnu-static-float-init

This diagnostic is enabled by default.

Diagnostic text:

warning: in-class initializer for static data member of type A is a GNU extension

-Wgnu-string-literal-operator-template

This diagnostic is enabled by default.

Diagnostic text:

warning: string literal operator templates are a GNU extension

-Wgnu-union-cast

Diagnostic text:

warning: cast to union type is a GNU extension

-Wgnu-variable-sized-type-not-at-end

This diagnostic is enabled by default.

Diagnostic text:

warning: field A with variable sized type B not at the end of a struct or class is a GNU extension

-Wgnu-zero-line-directive

Diagnostic text:

warning: #line directive with zero argument is a GNU extension

-Wgnu-zero-variadic-macro-arguments

Diagnostic text:

warning: must specify at least one argument for ‘…’ parameter of variadic macro
warning: token pasting of ‘,’ and __VA_ARGS__ is a GNU extension

-Wgpu-maybe-wrong-side

This diagnostic is enabled by default.

Diagnostic text:

warning: capture host side class data member by this pointer in device or host device lambda function may result in invalid memory access if this pointer is not accessible on device side

-Wheader-guard

This diagnostic is enabled by default.

Diagnostic text:

warning: A is used as a header guard here, followed by #define of a different macro

-Wheader-hygiene

Diagnostic text:

warning: using namespace directive in global context in header

-Whip-only

This diagnostic is enabled by default.

Diagnostic text:

warning: A’ is ignored since it is only supported for HIP

-Whlsl-extensions

This diagnostic is enabled by default.

Diagnostic text:

warning: access specifiers are a clang HLSL extension

-Widiomatic-parentheses

Diagnostic text:

warning: using the result of an assignment as a condition without parentheses

-Wignored-attributes

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘trivial_abi’ cannot be applied to A
warning: 
alias
ifunc
 will always resolve to A even if weak definition of B is overridden
warning: 
alias
ifunc
 will not be in section ‘A’ but in the same section as the 
aliasee
resolver
warning: requested alignment is less than minimum alignment of B for type A
warning: ‘abi_tag’ attribute on 
non-inline
anonymous
 namespace ignored
warning: attribute A after definition is ignored
warning: ‘cmse_nonsecure_entry’ cannot be applied to functions with internal linkage
warning: ‘dllexport’ attribute ignored on explicit instantiation definition
warning: attribute A has no effect when annotating an ‘if 
constexpr
consteval
‘ statement
warning: attribute A has no effect when annotating an infinite loop
warning: A attribute can only be applied to instance variables or properties
warning: A attribute ignored
warning: A attribute ignored for field of type B
warning: A attribute is ignored because there exists no call expression inside the statement
warning: A attribute ignored on inline function
warning: A attribute ignored on a non-definition declaration
warning: A’ attribute cannot be specified on a definition
warning: attribute A ignored, because it is not attached to a declaration
warning: ‘nonnull’ attribute applied to function with no pointer arguments
warning: ‘nonnull’ attribute when used on parameters takes no arguments
warning: A attribute ignored when parsing type
warning: A attribute only applies to a pointer or reference (B is invalid)
warning: A attribute only applies to
 
 constant
 pointer arguments
warning: attribute declaration must precede definition
warning: A attribute only applies to return values that are pointers
warning: A attribute only applies to return values that are pointers or references
warning: ‘sentinel’ attribute requires named arguments
warning: ‘sentinel’ attribute only supported for variadic 
functions
blocks
warning: A attribute argument not supported: B
warning: A attribute argument ‘B’ not supported on a global variable
warning: unknown visibility A
warning: attribute A cannot be applied to 
functions
Objective-C method
 without return value
warning: __weak attribute cannot be specified on a field declaration
warning: __weak attribute cannot be specified on an automatic variable when ARC is not enabled
warning: A attribute only applies to 
functions
unions
variables and functions
functions and methods
functions, methods and blocks
functions, methods, and parameters
variables
variables and fields
variables, data members and tag types
types and namespaces
variables, functions and classes
kernel functions
non-K&R-style functions
warning: A attribute only applies to B
warning: conflicting attributes A are ignored
warning: attribute A ignored, because it cannot be applied to omitted return type
warning: A calling convention is not supported 
for this target
on variadic function
on constructor/destructor
on builtin function
warning: attribute A ignored, because it cannot be applied to a type
warning: ignoring __declspec(allocator) because the function return type A is not a pointer or reference type
warning: attribute A is ignored, place it after “
class
struct
interface
union
enum
” to apply attribute to type declaration
warning: ‘deprecated’ attribute on anonymous namespace ignored
warning: A currently has no effect on a using declaration
warning: A redeclared inline; B attribute ignored
warning: attribute A is already applied with different arguments
warning: attribute A is already applied
warning: attribute is ignored on this statement as it only applies to functions; use ‘A’ on statements
warning: statement attribute A has higher precedence than function attribute ‘
always_inline
flatten
noinline
warning: Objective-C GC does not allow weak variables on the stack
warning: ‘gnu_inline’ attribute requires function to be marked ‘inline’, attribute ignored
warning: inheritance model ignored on 
primary template
partial specialization
warning: ‘objc_externally_retained’ can only be applied to local variables 
of retainable type
with strong ownership
warning: import 
module
name
 cannot be applied to a function with a definition
warning: ‘internal_linkage’ attribute on a non-static local variable is ignored
warning: 
MIPS
MSP430
RISC-V
 ‘interrupt’ attribute only applies to functions that have 
no parameters
a ‘void’ return type
warning: qualifiers after comma in declarator list are ignored
warning: ‘mig_server_routine’ attribute only applies to routines that return a kern_return_t
warning: import 
module
name
 (B) does not match the import 
module
name
 (C) of the previous declaration
warning: unknown attribute ‘A
warning: ‘nocf_check’ attribute ignored; use -fcf-protection to enable the attribute
warning: ‘noderef’ can only be used on an array or pointer type
warning: ‘nothrow’ attribute conflicts with exception specification; attribute ignored
warning: A attribute only applies to 
Objective-C object
pointer
pointer-to-CF-pointer
pointer/reference-to-OSObject-pointer
 parameters
warning: A attribute only applies to 
functions
methods
properties
 that return 
an Objective-C object
a pointer
a non-retainable pointer
warning: A attribute isn’t implemented by this Objective-C runtime
warning: direct attribute on property A ignored (not implemented by this Objective-C runtime)
warning: A attribute is deprecated and ignored in B
warning: ‘require_constant_initialization’ attribute added after initialization of variable
warning: repeated RISC-V ‘interrupt’ attribute
warning: template parameter of a function template with the ‘sycl_kernel’ attribute cannot be a non-type template parameter
warning: function template with ‘sycl_kernel’ attribute must have a single parameter
warning: ‘sycl_kernel’ attribute only applies to a function template with at least two template parameters
warning: function template with ‘sycl_kernel’ attribute must have a ‘void’ return type
warning: 
alignment
size
 of field B (C bits) does not match the 
alignment
size
 of the first field in transparent union; transparent_union attribute ignored
warning: first field of a transparent union cannot have 
floating point
vector
 type B; transparent_union attribute ignored
warning: transparent_union attribute can only be applied to a union definition; attribute ignored
warning: transparent union definition must contain at least one field; transparent_union attribute ignored
warning: A’ only applies to 
function
pointer
Objective-C object or block pointer
 types; type here is C
warning: __declspec attribute A is not supported
warning: 
unsupported
duplicate
unknown
 
 CPU
 tune CPU
 C’ in the ‘
target
target_clones
target_version
‘ attribute string; ‘
target
target_clones
target_version
‘ attribute ignored
warning: ’[[
nodiscard
gnu::warn_unused_result
]]’ attribute ignored when applied to a typedef; consider using ‘__attribute__((warn_unused_result))’ or ‘[[clang::warn_unused_result]]’ instead
warning: ‘__clang__’ is a predefined macro name, not an attribute scope specifier; did you mean ‘_Clang’ instead?

-Wignored-availability-without-sdk-settings

This diagnostic is enabled by default.

Diagnostic text:

warning: A availability is ignored without a valid ‘SDKSettings.json’ in the SDK

-Wignored-optimization-argument

This diagnostic is enabled by default.

Diagnostic text:

warning: optimization flag ‘A’ is not supported for target ‘B
warning: optimization flag ‘A’ is not supported

-Wignored-pragma-intrinsic

This diagnostic is enabled by default.

Diagnostic text:

warning: A is not a recognized builtin
 
; consider including <intrin.h> to access non-builtin intrinsics

-Wignored-pragma-optimize

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wignored-pragmas

This diagnostic is enabled by default.

Also controls -Wignored-pragma-intrinsic, -Wignored-pragma-optimize.

Diagnostic text:

warning: expected string literal in ‘clause A’ - ignoring
warning: expected ‘=’ following ‘#pragma 
align
options align
‘ - ignored
warning: invalid alignment option in ‘#pragma 
align
options align
‘ - ignored
warning: ’#pragma comment A’ ignored
warning: 
value
type
-dependent expression passed as an argument to debug command
warning: missing argument to debug command ‘A
warning: missing debug command
warning: unexpected argument to debug command
warning: unexpected debug command ‘A
warning: unknown module ‘A
warning: expected action or ‘)’ in ‘#pragma A’ - ignored
warning: missing ‘:’ after A - ignoring
warning: missing ‘:’ or ‘)’ after A - ignoring
warning: expected ‘,’ in ‘#pragma A
warning: expected identifier in ‘#pragma A’ - ignored
warning: expected ‘compiler’, ‘lib’, ‘user’, or a string literal for the section name in ‘#pragma A’ - ignored
warning: expected integer between A and B inclusive in ‘#pragma C’ - ignored
warning: missing ‘(‘ after ‘#pragma A’ - ignoring
warning: expected non-wide string literal in ‘#pragma A
warning: expected 
‘enable’, ‘disable’, ‘begin’ or ‘end’
‘disable’
 - ignoring
warning: expected ‘)’ or ‘,’ in ‘#pragma A
warning: missing ‘)’ after ‘#pragma A’ - ignoring
warning: expected a stack label or a string literal for the section name in ‘#pragma A’ - ignored
warning: expected a string literal for the section name in ‘#pragma A’ - ignored
warning: expected push, pop or a string literal for the section name in ‘#pragma A’ - ignored
warning: expected string literal in ‘#pragma A’ - ignoring
warning: extra tokens at end of ‘#pragma A’ - ignored
warning: incorrect use of #pragma clang force_cuda_host_device begin|end
warning: ’#pragma A’ is not supported on this target - ignored
warning: ’#pragma init_seg’ is only supported when targeting a Microsoft environment
warning: unknown action for ‘#pragma A’ - ignored
warning: unexpected argument ‘A’ to ‘#pragma B
 
; expected D
warning: unknown action ‘B’ for ‘#pragma A’ - ignored
warning: missing argument to ‘#pragma A
 
; expected C
warning: incorrect use of ‘#pragma fenv_access (on|off)’ - ignored
warning: incorrect use of ‘#pragma ms_struct on|off’ - ignored
warning: #pragma options align=reset failed: A
warning: expected ‘align’ following ‘#pragma options’ - ignored
warning: expected #pragma pack parameter to be ‘1’, ‘2’, ‘4’, ‘8’, or ‘16’
warning: expected integer or identifier in ‘#pragma pack’ - ignored
warning: #pragma A(pop, …) failed: B
warning: pragma pop_macro could not pop ‘A’, no matching push_macro
warning: OpenCL extension A unknown or does not require pragma - ignoring
warning: known but unsupported action ‘B’ for ‘#pragma A’ - ignored
warning: unsupported OpenCL extension A - ignoring
warning: expected ‘#pragma unused’ argument to be a variable name
warning: only variables can be arguments to ‘#pragma unused’
warning: undeclared variable A used as an argument for ‘#pragma unused’
warning: invalid or unsupported rounding mode in ‘#pragma STDC FENV_ROUND’ - ignored

-Wignored-qualifiers

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wignored-reference-qualifiers.

Diagnostic text:

warning: ARC 
unused
__unsafe_unretained
__strong
__weak
__autoreleasing
 lifetime qualifier on return type is ignored
warning: A’ qualifier on omitted return type B has no effect
warning: A’ type qualifier
 
s
 on return type 
has
have
 no effect
warning: A’ qualifier on function type B has no effect

-Wignored-reference-qualifiers

This diagnostic is enabled by default.

Diagnostic text:

warning: A’ qualifier on reference type B has no effect

-Wimplicit

Some of the diagnostics controlled by this flag are enabled by default.

Controls -Wimplicit-function-declaration, -Wimplicit-int.

-Wimplicit-atomic-properties

Diagnostic text:

warning: property is assumed atomic when auto-synthesizing the property
warning: property is assumed atomic by default

-Wimplicit-const-int-float-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: implicit conversion from C to D changes value from A to B

-Wimplicit-conversion-floating-point-to-bool

This diagnostic is enabled by default.

Diagnostic text:

warning: implicit conversion turns floating-point number into bool: A to B

-Wimplicit-exception-spec-mismatch

This diagnostic is enabled by default.

Diagnostic text:

warning: function previously declared with an 
explicit
implicit
 exception specification redeclared with an 
implicit
explicit
 exception specification

-Wimplicit-fallthrough

Also controls -Wimplicit-fallthrough-per-function.

Diagnostic text:

warning: unannotated fall-through between switch labels

-Wimplicit-fallthrough-per-function

Diagnostic text:

warning: unannotated fall-through between switch labels in partly-annotated function

-Wimplicit-fixed-point-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: implicit conversion from A cannot fit within the range of values for B

-Wimplicit-float-conversion

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wimplicit-int-float-conversion, -Wobjc-signed-char-bool-implicit-float-conversion.

Diagnostic text:

warning: implicit conversion loses floating-point precision: A to B
warning: implicit conversion when assigning computation result loses floating-point precision: A to B

-Wimplicit-function-declaration

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

error: call to undeclared function A; ISO C99 and later do not support implicit function declarations
warning: implicitly declaring library function ‘A’ with type B
error: call to undeclared library function ‘A’ with type B; ISO C99 and later do not support implicit function declarations
error: use of unknown builtin A
warning: implicit declaration of function A

-Wimplicit-int

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

error: type specifier missing, defaults to ‘int’; ISO C99 and later do not support implicit int
error: parameter A was not declared, defaults to ‘int’; ISO C99 and later do not support implicit int
warning: type specifier missing, defaults to ‘int’

-Wimplicit-int-conversion

Also controls -Wobjc-signed-char-bool-implicit-int-conversion.

Diagnostic text:

warning: higher order bits are zeroes after implicit conversion
warning: implicit conversion loses integer precision: A to B

-Wimplicit-int-float-conversion

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wimplicit-const-int-float-conversion.

Diagnostic text:

warning: implicit conversion from A to B may lose precision

-Wimplicit-retain-self

Diagnostic text:

warning: block implicitly retains ‘self’; explicitly mention ‘self’ to indicate this is intended behavior

-Wimplicitly-unsigned-literal

This diagnostic is enabled by default.

Diagnostic text:

warning: integer literal is too large to be represented in a signed integer type, interpreting as unsigned

-Wimport

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wimport-preprocessor-directive-pedantic

Diagnostic text:

warning: #import is a language extension

-Winaccessible-base

This diagnostic is enabled by default.

Diagnostic text:

warning: direct base A is inaccessible due to ambiguity:B

-Winclude-next-absolute-path

This diagnostic is enabled by default.

Diagnostic text:

warning: #include_next in file found relative to primary source file or found by absolute path; will search from start of include path

-Winclude-next-outside-header

This diagnostic is enabled by default.

Diagnostic text:

warning: #include_next in primary source file; will search from start of include path

-Wincompatible-exception-spec

This diagnostic is enabled by default.

Diagnostic text:

warning: exception specifications of 
return
argument
 types differ
warning: target exception specification is not superset of source

-Wincompatible-function-pointer-types

This diagnostic is an error by default, but the flag -Wno-incompatible-function-pointer-types can be used to disable the error.

Diagnostic text:

error: incompatible function pointer types 
assigning to A from B
assigning to different types
passing A to parameter of type B
passing to parameter of different type
returning A from a function with result type B
returning from function with different return type
converting A to type B
converting between types
initializing A with an expression of type B
initializing with expression of different type
sending A to parameter of type B
sending to parameter of different type
casting A to type B
casting between types
 
; dereference with *
; take the address with &
; remove *
; remove &

-Wincompatible-function-pointer-types-strict

Diagnostic text:

warning: incompatible function pointer types 
assigning to A from B
assigning to different types
passing A to parameter of type B
passing to parameter of different type
returning A from a function with result type B
returning from function with different return type
converting A to type B
converting between types
initializing A with an expression of type B
initializing with expression of different type
sending A to parameter of type B
sending to parameter of different type
casting A to type B
casting between types
 
; dereference with *
; take the address with &
; remove *
; remove &

-Wincompatible-library-redeclaration

This diagnostic is enabled by default.

Diagnostic text:

warning: incompatible redeclaration of library function A

-Wincompatible-ms-struct

This diagnostic is an error by default, but the flag -Wno-incompatible-ms-struct can be used to disable the error.

Diagnostic text:

error: ms_struct may not produce Microsoft-compatible layouts for classes with base classes or virtual functions
error: ms_struct may not produce Microsoft-compatible layouts with fundamental data types with sizes that aren’t a power of two

-Wincompatible-pointer-types

This diagnostic is enabled by default.

Also controls -Wincompatible-function-pointer-types, -Wincompatible-pointer-types-discards-qualifiers.

Diagnostic text:

warning: incompatible pointer types 
assigning to A from B
assigning to different types
passing A to parameter of type B
passing to parameter of different type
returning A from a function with result type B
returning from function with different return type
converting A to type B
converting between types
initializing A with an expression of type B
initializing with expression of different type
sending A to parameter of type B
sending to parameter of different type
casting A to type B
casting between types
 
; dereference with *
; take the address with &
; remove *
; remove &

-Wincompatible-pointer-types-discards-qualifiers

This diagnostic is enabled by default.

Diagnostic text:

warning: 
assigning to A from B
assigning to different types
passing A to parameter of type B
passing to parameter of different type
returning A from a function with result type B
returning from function with different return type
converting A to type B
converting between types
initializing A with an expression of type B
initializing with expression of different type
sending A to parameter of type B
sending to parameter of different type
casting A to type B
casting between types
 discards qualifiers in nested pointer types
warning: 
assigning to A from B
assigning to different types
passing A to parameter of type B
passing to parameter of different type
returning A from a function with result type B
returning from function with different return type
converting A to type B
converting between types
initializing A with an expression of type B
initializing with expression of different type
sending A to parameter of type B
sending to parameter of different type
casting A to type B
casting between types
 discards qualifiers
warning: 
reinterpret_cast
C-style cast
 from B to C changes address space of nested pointers

-Wincompatible-property-type

This diagnostic is enabled by default.

Diagnostic text:

warning: property type A is incompatible with type B inherited from C

-Wincompatible-sysroot

This diagnostic is enabled by default.

Diagnostic text:

warning: using sysroot for ‘A’ but targeting ‘B

-Wincomplete-framework-module-declaration

This diagnostic is enabled by default.

Diagnostic text:

warning: skipping ‘A’ because module declaration of ‘B’ lacks the ‘framework’ qualifier

-Wincomplete-implementation

This diagnostic is enabled by default.

Diagnostic text:

warning: method definition for A not found

-Wincomplete-module

Some of the diagnostics controlled by this flag are enabled by default.

Controls -Wincomplete-umbrella, -Wnon-modular-include-in-module.

-Wincomplete-setjmp-declaration

This diagnostic is enabled by default.

Diagnostic text:

warning: declaration of built-in function ‘A’ requires the declaration of the ‘jmp_buf’ type, commonly provided in the header <setjmp.h>.

-Wincomplete-umbrella

This diagnostic is enabled by default.

Diagnostic text:

warning: missing submodule ‘A
warning: umbrella directory ‘A’ not found
warning: umbrella header for module ‘A’ does not include header ‘B

-Winconsistent-dllimport

This diagnostic is enabled by default.

Diagnostic text:

warning: A redeclared without B attribute: previous B ignored
warning: A redeclared without ‘dllimport’ attribute: ‘dllexport’ attribute added

-Winconsistent-missing-destructor-override

Diagnostic text:

warning: A overrides a destructor but is not marked ‘override’

-Winconsistent-missing-override

This diagnostic is enabled by default.

Diagnostic text:

warning: A overrides a member function but is not marked ‘override’

-Wincrement-bool

This diagnostic is enabled by default.

Also controls -Wdeprecated-increment-bool.

Diagnostic text:

error: ISO C++17 does not allow incrementing expression of type bool

-Winfinite-recursion

Diagnostic text:

warning: all paths through this function will call itself

-Winit-self

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Winitializer-overrides

This diagnostic is enabled by default.

Diagnostic text:

warning: initializer 
partially 
 
overrides prior initialization of this subobject
warning: initializer 
partially 
 
overrides prior initialization of this subobject

-Winjected-class-name

This diagnostic is enabled by default.

Diagnostic text:

warning: ISO C++ specifies that qualified reference to A is a constructor name rather than a 
template name
type
 in this context, despite preceding 
‘typename’
‘template’
 keyword

-Winline

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Winline-asm

This diagnostic is enabled by default.

Diagnostic text:

The text of this diagnostic is not controlled by Clang.

-Winline-namespace-reopened-noninline

This diagnostic is enabled by default.

Diagnostic text:

warning: inline namespace reopened as a non-inline namespace

-Winline-new-delete

This diagnostic is enabled by default.

Diagnostic text:

warning: replacement function A cannot be declared ‘inline’

-Winstantiation-after-specialization

This diagnostic is enabled by default.

Diagnostic text:

warning: explicit instantiation of A that occurs after an explicit specialization has no effect

-Wint-conversion

This diagnostic is an error by default, but the flag -Wno-int-conversion can be used to disable the error.

Diagnostic text:

error: incompatible integer to pointer conversion 
assigning to A from B
assigning to different types
passing A to parameter of type B
passing to parameter of different type
returning A from a function with result type B
returning from function with different return type
converting A to type B
converting between types
initializing A with an expression of type B
initializing with expression of different type
sending A to parameter of type B
sending to parameter of different type
casting A to type B
casting between types
 
; dereference with *
; take the address with &
; remove *
; remove &
error: incompatible pointer to integer conversion 
assigning to A from B
assigning to different types
passing A to parameter of type B
passing to parameter of different type
returning A from a function with result type B
returning from function with different return type
converting A to type B
converting between types
initializing A with an expression of type B
initializing with expression of different type
sending A to parameter of type B
sending to parameter of different type
casting A to type B
casting between types
 
; dereference with *
; take the address with &
; remove *
; remove &

-Wint-in-bool-context

Diagnostic text:

warning: converting the enum constant to a boolean
warning: converting the result of ‘<<’ to a boolean; did you mean ‘(A) != 0’?

-Wint-to-pointer-cast

This diagnostic is enabled by default.

Also controls -Wint-to-void-pointer-cast.

Diagnostic text:

warning: cast to B from smaller integer type A

-Wint-to-void-pointer-cast

This diagnostic is enabled by default.

Diagnostic text:

warning: cast to B from smaller integer type A

-Winteger-overflow

This diagnostic is enabled by default.

Diagnostic text:

warning: overflow in expression; result is A with type B

-Winterrupt-service-routine

This diagnostic is enabled by default.

Diagnostic text:

warning: interrupt service routine should only call a function with attribute ‘no_caller_saved_registers’

-Winvalid-command-line-argument

This diagnostic is enabled by default.

Also controls -Wignored-optimization-argument.

Diagnostic text:

warning: missing plugin argument for plugin A in B
warning: missing plugin name in A
warning: the given MCU supports A hardware multiply, but ‘-mhwmult’ is set to B
warning: no MCU device specified, but ‘-mhwmult’ is set to ‘auto’, assuming no hardware multiply; use ‘-mmcu’ to specify an MSP430 device, or ‘-mhwmult’ to set the hardware multiply type explicitly
warning: the given MCU does not support hardware multiply, but ‘-mhwmult’ is set to A
warning: the object size sanitizer has no effect at -O0, but is explicitly enabled: A
warning: optimization level ‘A’ is not supported; using ‘BC’ instead
warning: feature flag ‘A’ must start with either ‘+’ to enable the feature or ‘-‘ to disable it; flag ignored
warning: ignoring extension ‘A’ because the ‘B’ architecture does not support it

-Winvalid-constexpr

This diagnostic is an error by default, but the flag -Wno-invalid-constexpr can be used to disable the error.

Diagnostic text:

error: 
constexpr
consteval
 
function
constructor
 never produces a constant expression

-Winvalid-iboutlet

This diagnostic is enabled by default.

Diagnostic text:

warning: 
instance variable
property
 with A attribute must be an object type (invalid B)
warning: IBOutletCollection properties should be copy/strong and not assign

-Winvalid-initializer-from-system-header

This diagnostic is enabled by default.

Diagnostic text:

warning: invalid constructor from class in system header, should not be explicit

-Winvalid-ios-deployment-target

This diagnostic is an error by default, but the flag -Wno-invalid-ios-deployment-target can be used to disable the error.

Diagnostic text:

error: invalid iOS deployment version ‘A’, iOS 10 is the maximum deployment target for 32-bit targets

-Winvalid-no-builtin-names

This diagnostic is enabled by default.

Diagnostic text:

warning: A’ is not a valid builtin name for B

-Winvalid-noreturn

This diagnostic is enabled by default.

Diagnostic text:

warning: function declared ‘noreturn’ should not return
warning: function A declared ‘noreturn’ should not return

-Winvalid-offsetof

This diagnostic is enabled by default.

Diagnostic text:

warning: offset of on non-POD type A
warning: offset of on non-standard-layout type A

-Winvalid-or-nonexistent-directory

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

warning: environment variable ‘A’ is set, but points to invalid or nonexistent directory ‘B
warning: unable to find A directory, expected to be in ‘B

-Winvalid-partial-specialization

This diagnostic is an error by default, but the flag -Wno-invalid-partial-specialization can be used to disable the error.

Diagnostic text:

error: 
class
variable
 template partial specialization is not more specialized than the primary template

-Winvalid-pch

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Winvalid-pp-token

This diagnostic is enabled by default.

Diagnostic text:

warning: empty character constant
warning: missing terminating 
‘”’
 character

-Winvalid-source-encoding

This diagnostic is enabled by default.

Diagnostic text:

warning: illegal character encoding in character literal
warning: illegal character encoding in string literal

-Winvalid-token-paste

This diagnostic is an error by default, but the flag -Wno-invalid-token-paste can be used to disable the error.

Diagnostic text:

error: pasting formed ‘A’, an invalid preprocessing token

-Winvalid-utf8

Diagnostic text:

warning: invalid UTF-8 in comment

-Wjump-seh-finally

This diagnostic is enabled by default.

Diagnostic text:

warning: jump out of __finally block has undefined behavior

-Wkeyword-compat

This diagnostic is enabled by default.

Diagnostic text:

warning: keyword ‘A’ will be made available as an identifier 
here
for the remainder of the translation unit

-Wkeyword-macro

Diagnostic text:

warning: keyword is hidden by macro definition

-Wknr-promoted-parameter

This diagnostic is enabled by default.

Diagnostic text:

warning: 
promoted type A of K&R function parameter is not compatible with the parameter type B
promoted type of K&R function parameter is not compatible with parameter type
 declared in a previous prototype

-Wlanguage-extension-token

Diagnostic text:

warning: extension used

-Wlarge-by-value-copy

This diagnostic is enabled by default.

Diagnostic text:

warning: A is a large (B bytes) pass-by-value argument; pass it by reference instead ?
warning: return value of A is a large (B bytes) pass-by-value object; pass it by reference instead ?

-Wliblto

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wlinker-warnings

This diagnostic is enabled by default.

Diagnostic text:

warning: linking module ‘A’: B

-Wliteral-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: implicit conversion from A to B changes value from C to D
warning: implicit conversion of out of range value from A to B is undefined

-Wliteral-range

This diagnostic is enabled by default.

Diagnostic text:

warning: floating-point comparison is always 
true
false
; constant cannot be represented exactly in type B
warning: magnitude of floating-point constant too large for type A; maximum is B
warning: magnitude of floating-point constant too small for type A; minimum is B

-Wlocal-type-template-args

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wc++98-compat-local-type-template-args.

Diagnostic text:

warning: template argument uses local type A

-Wlogical-not-parentheses

This diagnostic is enabled by default.

Diagnostic text:

warning: logical not is only applied to the left hand side of this 
comparison
bitwise operator

-Wlogical-op-parentheses

Diagnostic text:

warning: ’&&’ within ‘||’

-Wlong-long

Also controls -Wc++11-long-long.

Diagnostic text:

warning: ‘long long’ is an extension when C99 mode is not enabled

-Wmacro-redefined

This diagnostic is enabled by default.

Diagnostic text:

warning: A macro redefined

-Wmain

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

warning: ISO C++ does not allow ‘main’ to be used by a program
warning: ‘main’ is not allowed to be declared _Noreturn
warning: ‘main’ is not allowed to be declared variadic
warning: only one parameter on ‘main’ declaration
warning: variable named ‘main’ with external linkage has undefined behavior
warning: bool literal returned from ‘main’
warning: ‘main’ should not be declared static

-Wmain-return-type

This diagnostic is enabled by default.

Diagnostic text:

warning: return type of ‘main’ is not ‘int’

-Wmalformed-warning-check

This diagnostic is enabled by default.

Diagnostic text:

warning: __has_warning expected option name (e.g. “-Wundef”)

-Wmany-braces-around-scalar-init

This diagnostic is enabled by default.

Diagnostic text:

warning: too many braces around 
scalar 
 
initializer

-Wmathematical-notation-identifier-extension

This diagnostic is enabled by default.

Diagnostic text:

warning: mathematical notation character <U+A> in an identifier is a Clang extension

-Wmax-tokens

Diagnostic text:

warning: the number of preprocessor source tokens (A) exceeds this token limit (B)
warning: the total number of preprocessor source tokens (A) exceeds the token limit (B)

The warning is issued if the number of pre-processor tokens exceeds the token limit, which can be set in three ways:

  1. As a limit at a specific point in a file, using the clang max_tokens_here pragma:
  2. As a per-translation unit limit, using the -fmax-tokens= command-line flag:
  3. As a per-translation unit limit using the clang max_tokens_total pragma, which works like and overrides the -fmax-tokens= flag:

These limits can be helpful in limiting code growth through included files.

Setting a token limit of zero means no limit.

Note that the warning is disabled by default, so -Wmax-tokens must be used in addition with the pragmas or -fmax-tokens flag to get any warnings.

-Wmax-unsigned-zero

This diagnostic is enabled by default.

Diagnostic text:

warning: taking the max of 
a value and unsigned zero
unsigned zero and a value
 is always equal to the other value

-Wmemset-transposed-args

This diagnostic is enabled by default.

Diagnostic text:

warning: 
‘size’ argument to memset is ‘0’
setting buffer to a ‘sizeof’ expression
; did you mean to transpose the last two arguments?

-Wmemsize-comparison

This diagnostic is enabled by default.

Diagnostic text:

warning: size argument in A call is a comparison

-Wmethod-signatures

Diagnostic text:

warning: conflicting parameter types in implementation of A: B vs C
warning: conflicting return type in implementation of A: B vs C

-Wmicrosoft-abstract

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘abstract’ keyword is a Microsoft extension

-Wmicrosoft-anon-tag

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

warning: types declared in an anonymous 
struct
union
 are a Microsoft extension
warning: anonymous 
structs
unions
 are a Microsoft extension

-Wmicrosoft-cast

This diagnostic is enabled by default.

Diagnostic text:

warning: static_cast between pointer-to-function and pointer-to-object is a Microsoft extension
warning: implicit conversion between pointer-to-function and pointer-to-object is a Microsoft extension

-Wmicrosoft-charize

Diagnostic text:

warning: charizing operator #@ is a Microsoft extension

-Wmicrosoft-comment-paste

Diagnostic text:

warning: pasting two ‘/’ tokens into a ‘//’ comment is a Microsoft extension

-Wmicrosoft-const-init

This diagnostic is enabled by default.

Diagnostic text:

warning: default initialization of an object of const type A
 
 without a user-provided default constructor
 is a Microsoft extension

-Wmicrosoft-cpp-macro

Diagnostic text:

warning: C++ operator A (aka B) used as a macro name

-Wmicrosoft-default-arg-redefinition

This diagnostic is enabled by default.

Diagnostic text:

warning: redefinition of default argument

-Wmicrosoft-drectve-section

This diagnostic is enabled by default.

Diagnostic text:

warning: #pragma A(“.drectve”) has undefined behavior, use #pragma comment(linker, …) instead

-Wmicrosoft-end-of-file

Diagnostic text:

warning: treating Ctrl-Z as end-of-file is a Microsoft extension

-Wmicrosoft-enum-forward-reference

This diagnostic is enabled by default.

Diagnostic text:

warning: forward references to ‘enum’ types are a Microsoft extension

-Wmicrosoft-enum-value

Diagnostic text:

warning: enumerator value is not representable in the underlying type A

-Wmicrosoft-exception-spec

Some of the diagnostics controlled by this flag are enabled by default.

Diagnostic text:

warning: exception specification of ‘…’ is a Microsoft extension
warning: 
 
pointer to 
reference to 
incomplete type B is not allowed in exception specification
warning: exception specification in declaration does not match previous declaration
warning: exception specification in explicit instantiation does not match instantiated one
warning: exception specification of overriding function is more lax than base version

-Wmicrosoft-exists

This diagnostic is enabled by default.

Diagnostic text:

warning: dependent 
__if_not_exists
__if_exists
 declarations are ignored

-Wmicrosoft-explicit-constructor-call

This diagnostic is enabled by default.

Diagnostic text:

warning: explicit constructor calls are a Microsoft extension

-Wmicrosoft-extra-qualification

This diagnostic is enabled by default.

Diagnostic text:

warning: extra qualification on member A

-Wmicrosoft-fixed-enum

Diagnostic text:

warning: enumeration types with a fixed underlying type are a Microsoft extension

-Wmicrosoft-flexible-array

Diagnostic text:

warning: flexible array member A in otherwise empty 
struct
interface
union
class
enum
 is a Microsoft extension
warning: flexible array member A in a union is a Microsoft extension

-Wmicrosoft-goto

This diagnostic is enabled by default.

Diagnostic text:

warning: jump from this goto statement to its label is a Microsoft extension

-Wmicrosoft-inaccessible-base

This diagnostic is enabled by default.

Diagnostic text:

warning: accessing inaccessible direct base A of B is a Microsoft extension

-Wmicrosoft-include

This diagnostic is enabled by default.

Diagnostic text:

warning: #include resolved using non-portable Microsoft search rules as: A

-Wmicrosoft-mutable-reference

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘mutable’ on a reference type is a Microsoft extension

-Wmicrosoft-pure-definition

This diagnostic is enabled by default.

Diagnostic text:

warning: function definition with pure-specifier is a Microsoft extension

-Wmicrosoft-redeclare-static

Diagnostic text:

warning: redeclaring non-static A as static is a Microsoft extension

-Wmicrosoft-sealed

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘sealed’ keyword is a Microsoft extension

-Wmicrosoft-static-assert

This diagnostic is enabled by default.

Diagnostic text:

warning: use of ‘static_assert’ without inclusion of <assert.h> is a Microsoft extension

-Wmicrosoft-template

This diagnostic is enabled by default.

Also controls -Wmicrosoft-template-shadow.

Diagnostic text:

warning: duplicate explicit instantiation of A ignored as a Microsoft extension
warning: use of member A found via unqualified lookup into dependent bases of class templates is a Microsoft extension
warning: use of member A before its declaration is a Microsoft extension
warning: using the undeclared type A as a default template argument is a Microsoft extension
warning: non-type template argument containing a dereference operation is a Microsoft extension
warning: 
class template
class template partial
variable template
variable template partial
function template
member function
static data member
member class
member enumeration
 specialization of B not in 
a namespace enclosing C
class C or an enclosing namespace
 is a Microsoft extension
warning: template argument for template type parameter must be a type; omitted ‘typename’ is a Microsoft extension
warning: ‘static’ can only be specified inside the class definition
warning: use of undeclared identifier A; unqualified lookup into dependent bases of class template B is a Microsoft extension
warning: unqualified base initializer of class templates is a Microsoft extension

-Wmicrosoft-template-shadow

This diagnostic is enabled by default.

Diagnostic text:

warning: declaration of A shadows template parameter

-Wmicrosoft-union-member-reference

This diagnostic is enabled by default.

Diagnostic text:

warning: union member A has reference type B, which is a Microsoft extension

-Wmicrosoft-unqualified-friend

This diagnostic is enabled by default.

Diagnostic text:

warning: unqualified friend declaration referring to type outside of the nearest enclosing namespace is a Microsoft extension; add a nested name specifier

-Wmicrosoft-using-decl

This diagnostic is enabled by default.

Diagnostic text:

warning: using declaration referring to inaccessible member ‘A’ (which refers to accessible member ‘B’) is a Microsoft compatibility extension

-Wmicrosoft-void-pseudo-dtor

This diagnostic is enabled by default.

Diagnostic text:

warning: pseudo-destructors on type void are a Microsoft extension

-Wmisexpect

This diagnostic is enabled by default.

Diagnostic text:

warning: Potential performance regression from use of __builtin_expect(): Annotation was correct on A of profiled executions.

-Wmisleading-indentation

Diagnostic text:

warning: misleading indentation; statement is not part of the previous ‘
if
else
for
while

-Wmismatched-new-delete

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘delete
 
[]
‘ applied to a pointer that was allocated with ‘new
[]
 
‘; did you mean ‘delete
[]
 
‘?

-Wmismatched-parameter-types

This diagnostic is enabled by default.

Diagnostic text:

warning: conflicting parameter types in implementation of A
: B vs C
 

-Wmismatched-return-types

This diagnostic is enabled by default.

Diagnostic text:

warning: conflicting return type in implementation of A
: B vs C
 

-Wmismatched-tags

Diagnostic text:

warning: C defined as 
a struct
an interface
a class
 
 template
 here but previously declared as 
a struct
an interface
a class
 
 template
; this is valid, but may result in linker errors under the Microsoft C++ ABI
warning: 
struct
interface
class
 
 template
 C was previously declared as a 
struct
interface
class
 
 template
; this is valid, but may result in linker errors under the Microsoft C++ ABI

-Wmissing-braces

Diagnostic text:

warning: suggest braces around initialization of subobject

-Wmissing-constinit

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘constinit’ specifier missing on initializing declaration of A

-Wmissing-declarations

This diagnostic is enabled by default.

Diagnostic text:

warning: declaration does not declare anything
warning: A’ is not permitted on a declaration of a type
warning: typedef requires a name
warning: A’ ignored on this declaration

-Wmissing-exception-spec

This diagnostic is enabled by default.

Diagnostic text:

warning: A is missing exception specification ‘B

-Wmissing-field-initializers

Diagnostic text:

warning: missing field A initializer

-Wmissing-format-attribute

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wmissing-include-dirs

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wmissing-method-return-type

Diagnostic text:

warning: method has no return type specified; defaults to ‘id’

-Wmissing-noescape

This diagnostic is enabled by default.

Diagnostic text:

warning: parameter of overriding method should be annotated with __attribute__((noescape))

-Wmissing-noreturn

Diagnostic text:

warning: block could be declared with attribute ‘noreturn’
warning: 
function
method
 B could be declared with attribute ‘noreturn’

-Wmissing-prototype-for-cc

This diagnostic is enabled by default.

Diagnostic text:

warning: function with no prototype cannot use the A calling convention

-Wmissing-prototypes

Diagnostic text:

warning: no previous prototype for function A

-Wmissing-selector-name

This diagnostic is enabled by default.

Diagnostic text:

warning: A used as the name of the previous parameter rather than as part of the selector

-Wmissing-sysroot

This diagnostic is enabled by default.

Diagnostic text:

warning: no such sysroot directory: ‘A

-Wmissing-variable-declarations

Diagnostic text:

warning: no previous extern declaration for non-static variable A

-Wmisspelled-assumption

This diagnostic is enabled by default.

Diagnostic text:

warning: unknown assumption string ‘A’ may be misspelled; attribute is potentially ignored, did you mean ‘B’?

-Rmodule-build

Diagnostic text:

remark: building module ‘A’ as ‘B
remark: finished building module ‘A
remark: could not acquire lock file for module ‘A’: B
remark: timed out waiting to acquire lock file for module ‘A

-Wmodule-conflict

This diagnostic is enabled by default.

Diagnostic text:

warning: module ‘A’ conflicts with already-imported module ‘B’: C
warning: module file ‘A’ was validated as a system module and is now being imported as a non-system module; any difference in diagnostic options will be ignored

-Wmodule-file-config-mismatch

This diagnostic is an error by default, but the flag -Wno-module-file-config-mismatch can be used to disable the error.

Diagnostic text:

error: module file A cannot be loaded due to a configuration mismatch with the current compilation

-Wmodule-file-extension

This diagnostic is enabled by default.

Diagnostic text:

warning: duplicate module file extension block name ‘A

-Rmodule-import

Diagnostic text:

remark: importing module ‘A
 
 into ‘D
 from ‘B

-Wmodule-import-in-extern-c

This diagnostic is an error by default, but the flag -Wno-module-import-in-extern-c can be used to disable the error.

Diagnostic text:

error: import of C++ module ‘A’ appears within extern “C” language linkage specification

-Rmodule-include-translation

Diagnostic text:

remark: treating #
include
import
include_next
__include_macros
 as an import of module ‘B

-Rmodule-lock

Diagnostic text:

remark: locking ‘A’ to build module ‘B

-Wmodules-ambiguous-internal-linkage

This diagnostic is enabled by default.

Diagnostic text:

warning: ambiguous use of internal linkage declaration A defined in multiple modules

-Wmodules-import-nested-redundant

This diagnostic is an error by default, but the flag -Wno-modules-import-nested-redundant can be used to disable the error.

Diagnostic text:

error: redundant #include of module ‘A’ appears within B

-Wmsvc-not-found

This diagnostic is enabled by default.

Diagnostic text:

warning: unable to find a Visual Studio installation; try running Clang from a developer command prompt

-Wmultichar

This diagnostic is enabled by default.

Diagnostic text:

warning: multi-character character constant

-Wmultiple-move-vbase

This diagnostic is enabled by default.

Diagnostic text:

warning: defaulted move assignment operator of A will move assign virtual base class B multiple times

-Wnested-anon-types

Diagnostic text:

warning: anonymous types declared in an anonymous 
struct
union
 are an extension

-Wnested-externs

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wnew-returns-null

This diagnostic is enabled by default.

Diagnostic text:

warning: A should not return a null pointer unless it is declared ‘throw()’
 
 or ‘noexcept’

-Wnewline-eof

Diagnostic text:

warning: no newline at end of file
warning: no newline at end of file

-Wnoderef

This diagnostic is enabled by default.

Diagnostic text:

warning: dereferencing A; was declared with a ‘noderef’ type
warning: dereferencing expression marked as ‘noderef’
warning: casting to dereferenceable pointer removes ‘noderef’ attribute

-Wnon-c-typedef-for-linkage

This diagnostic is enabled by default.

Diagnostic text:

warning: anonymous non-C-compatible type given name for linkage purposes by 
typedef
alias
 declaration; add a tag name here

-Wnon-gcc

Some of the diagnostics controlled by this flag are enabled by default.

Controls -Wconversion, -Wliteral-range, -Wsign-compare.

-Wnon-literal-null-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: expression which evaluates to zero treated as a null pointer constant of type A

-Wnon-modular-include-in-framework-module

Diagnostic text:

warning: include of non-modular header inside framework module ‘A’: ‘B

-Wnon-modular-include-in-module

Also controls -Wnon-modular-include-in-framework-module.

Diagnostic text:

warning: include of non-modular header inside module ‘A’: ‘B

-Wnon-pod-varargs

This diagnostic is an error by default, but the flag -Wno-non-pod-varargs can be used to disable the error.

Diagnostic text:

error: cannot pass object of 
non-POD
non-trivial
 type B through variadic 
function
block
method
constructor
; call will abort at runtime
error: cannot pass 
non-POD
non-trivial
 object of type B to variadic 
function
block
method
constructor
; expected type from format string was D
error: second argument to ‘va_arg’ is of non-POD type A
error: second argument to ‘va_arg’ is of ARC ownership-qualified type A

-Wnon-power-of-two-alignment

This diagnostic is enabled by default.

Diagnostic text:

warning: requested alignment is not a power of 2

-Wnon-virtual-dtor

Diagnostic text:

warning: A has virtual functions but non-virtual destructor

-Wnonnull

This diagnostic is enabled by default.

Diagnostic text:

warning: null passed to a callee that requires a non-null argument
warning: null returned from 
function
method
 that requires a non-null return value

-Wnonportable-cfstrings

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wnonportable-include-path

This diagnostic is enabled by default.

Diagnostic text:

warning: non-portable path to file ‘A’; specified path differs in case from file name on disk

-Wnonportable-system-include-path

Diagnostic text:

warning: non-portable path to file ‘A’; specified path differs in case from file name on disk

-Wnonportable-vector-initialization

This diagnostic is enabled by default.

Diagnostic text:

warning: vector initializers are not compatible with NEON intrinsics in big endian mode

-Wnontrivial-memaccess

This diagnostic is enabled by default.

Diagnostic text:

warning: 
destination for
source of
first operand of
second operand of
 this B call is a pointer to record C that is not trivial to 
primitive-default-initialize
primitive-copy

-Wnsconsumed-mismatch

This diagnostic is enabled by default.

Diagnostic text:

warning: overriding method has mismatched ns_consumed attribute on its parameter

-Wnsreturns-mismatch

This diagnostic is enabled by default.

Diagnostic text:

warning: overriding method has mismatched ns_returns_
not_retained
retained
 attributes

-Wnull-arithmetic

This diagnostic is enabled by default.

Diagnostic text:

warning: use of NULL in arithmetic operation
warning: comparison between NULL and non-pointer 
(B and NULL)
(NULL and B)

-Wnull-character

This diagnostic is enabled by default.

Diagnostic text:

warning: null character(s) preserved in 
char
string
 literal
warning: null character ignored

-Wnull-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: implicit conversion of 
NULL
nullptr
 constant to B

-Wnull-dereference

This diagnostic is enabled by default.

Diagnostic text:

warning: binding dereferenced null pointer to reference has undefined behavior
warning: indirection of non-volatile null pointer will be deleted, not trap

-Wnull-pointer-arithmetic

Also controls -Wgnu-null-pointer-arithmetic.

Diagnostic text:

warning: performing pointer arithmetic on a null pointer has undefined behavior
 
 if the offset is nonzero

-Wnull-pointer-subtraction

Diagnostic text:

warning: performing pointer subtraction with a null pointer 
has
may have
 undefined behavior

-Wnullability

This diagnostic is enabled by default.

Diagnostic text:

warning: conflicting nullability specifier on parameter types, A conflicts with existing specifier B
warning: conflicting nullability specifier on return types, A conflicts with existing specifier B
warning: nullability specifier A conflicts with existing specifier B
warning: synthesized setter A for null_resettable property B does not handle nil
warning: duplicate nullability specifier A

-Wnullability-completeness

This diagnostic is enabled by default.

Also controls -Wnullability-completeness-on-arrays.

Diagnostic text:

warning: 
pointer
block pointer
member pointer
 is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)

-Wnullability-completeness-on-arrays

This diagnostic is enabled by default.

Diagnostic text:

warning: array parameter is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)

-Wnullability-declspec

This diagnostic is an error by default, but the flag -Wno-nullability-declspec can be used to disable the error.

Diagnostic text:

error: nullability specifier A cannot be applied to non-pointer type B; did you mean to apply the specifier to the 
pointer
block pointer
member pointer
function pointer
member function pointer
?

-Wnullability-extension

Diagnostic text:

warning: type nullability specifier A is a Clang extension

-Wnullability-inferred-on-nested-type

This diagnostic is enabled by default.

Diagnostic text:

warning: inferring ‘_Nonnull’ for pointer type within 
array
reference
 is deprecated

-Wnullable-to-nonnull-conversion

Diagnostic text:

warning: implicit conversion from nullable pointer A to non-nullable pointer type B

-Wobjc-autosynthesis-property-ivar-name-match

This diagnostic is enabled by default.

Diagnostic text:

warning: autosynthesized property A will use 
 
synthesized
 instance variable C, not existing instance variable D

-Wobjc-bool-constant-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: implicit conversion from constant value A to ‘BOOL’; the only well defined values for ‘BOOL’ are YES and NO

-Wobjc-boxing

This diagnostic is enabled by default.

Diagnostic text:

warning: string is ill-formed as UTF-8 and will become a null A when boxed

-Wobjc-circular-container

This diagnostic is enabled by default.

Diagnostic text:

warning: adding A to B might cause circular dependency in container

-Wobjc-designated-initializers

This diagnostic is enabled by default.

Diagnostic text:

warning: designated initializer missing a ‘super’ call to a designated initializer of the super class
warning: designated initializer invoked a non-designated initializer
warning: designated initializer should only invoke a designated initializer on ‘super’
warning: method override for the designated initializer of the superclass A not found
warning: convenience initializer missing a ‘self’ call to another initializer
warning: convenience initializer should not invoke an initializer on ‘super’

-Wobjc-dictionary-duplicate-keys

This diagnostic is enabled by default.

Diagnostic text:

warning: duplicate key in dictionary literal

-Wobjc-flexible-array

This diagnostic is enabled by default.

Diagnostic text:

warning: field A can overwrite instance variable B with variable sized type C in superclass D
warning: field A with variable sized type B is not visible to subclasses and can conflict with their instance variables

-Wobjc-forward-class-redefinition

This diagnostic is enabled by default.

Diagnostic text:

warning: redefinition of forward class A of a typedef name of an object type is ignored

-Wobjc-interface-ivars

Diagnostic text:

warning: declaration of instance variables in the interface is deprecated

-Wobjc-literal-compare

This diagnostic is enabled by default.

Also controls -Wobjc-string-compare.

Diagnostic text:

warning: direct comparison of 
an array literal
a dictionary literal
a numeric literal
a boxed expression
 
 has undefined behavior

-Wobjc-literal-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: implicit boolean conversion of Objective-C object literal always evaluates to true
warning: object of type A is not compatible with 
array element type
dictionary key type
dictionary value type
 C

-Wobjc-macro-redefinition

This diagnostic is enabled by default.

Diagnostic text:

warning: ignoring redefinition of Objective-C qualifier macro

-Wobjc-messaging-id

Diagnostic text:

warning: messaging unqualified id

-Wobjc-method-access

This diagnostic is enabled by default.

Diagnostic text:

warning: class method A not found (return type defaults to ‘id’)
warning: class method A not found (return type defaults to ‘id’); did you mean C?
warning: instance method A not found (return type defaults to ‘id’)
warning: instance method A not found (return type defaults to ‘id’); did you mean C?
warning: instance method A found instead of class method B
warning: instance method A is being used on ‘Class’ which is not in the root class

-Wobjc-missing-property-synthesis

Diagnostic text:

warning: auto property synthesis is synthesizing property not explicitly synthesized

-Wobjc-missing-super-calls

This diagnostic is enabled by default.

Diagnostic text:

warning: method possibly missing a [super A] call

-Wobjc-multiple-method-names

This diagnostic is enabled by default.

Diagnostic text:

warning: multiple methods named A found

-Wobjc-noncopy-retain-block-property

This diagnostic is enabled by default.

Diagnostic text:

warning: retain’ed block property does not copy the block - use copy attribute instead

-Wobjc-nonunified-exceptions

This diagnostic is enabled by default.

Diagnostic text:

warning: cannot catch an exception thrown with @throw in C++ in the non-unified exception model

-Wobjc-property-assign-on-object-type

Diagnostic text:

warning: ‘assign’ property of object type may become a dangling reference; consider using ‘unsafe_unretained’

-Wobjc-property-implementation

This diagnostic is enabled by default.

Diagnostic text:

warning: class property A requires method B to be defined - use @dynamic or provide a method implementation in this class implementation
warning: class property A requires method B to be defined - use @dynamic or provide a method implementation in this category
warning: property A requires method B to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation
warning: property A requires method B to be defined - use @dynamic or provide a method implementation in this category

-Wobjc-property-implicit-mismatch

This diagnostic is enabled by default.

Diagnostic text:

warning: primary property declaration is implicitly strong while redeclaration in class extension is weak

-Wobjc-property-matches-cocoa-ownership-rule

This diagnostic is enabled by default.

Diagnostic text:

warning: property follows Cocoa naming convention for returning ‘owned’ objects

-Wobjc-property-no-attribute

This diagnostic is enabled by default.

Diagnostic text:

warning: default property attribute ‘assign’ not appropriate for object
warning: no ‘assign’, ‘retain’, or ‘copy’ attribute is specified - ‘assign’ is assumed

-Wobjc-property-synthesis

This diagnostic is enabled by default.

Diagnostic text:

warning: auto property synthesis will not synthesize property A; it will be implemented by its superclass, use @dynamic to acknowledge intention
warning: auto property synthesis will not synthesize property A because it is ‘readwrite’ but it will be synthesized ‘readonly’ via another property
warning: auto property synthesis will not synthesize property A because it cannot share an ivar with another synthesized property

-Wobjc-protocol-method-implementation

This diagnostic is enabled by default.

Diagnostic text:

warning: category is implementing a method which will also be implemented by its primary class

-Wobjc-protocol-property-synthesis

This diagnostic is enabled by default.

Diagnostic text:

warning: auto property synthesis will not synthesize property A declared in protocol B

-Wobjc-protocol-qualifiers

This diagnostic is enabled by default.

Diagnostic text:

warning: parameterized class A already conforms to the protocols listed; did you forget a ‘*’?

-Wobjc-readonly-with-setter-property

This diagnostic is enabled by default.

Diagnostic text:

warning: setter cannot be specified for a readonly property

-Wobjc-redundant-literal-use

This diagnostic is enabled by default.

Diagnostic text:

warning: using A with a literal is redundant

-Wobjc-root-class

This diagnostic is enabled by default.

Diagnostic text:

warning: class A defined without specifying a base class

-Wobjc-signed-char-bool-implicit-float-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: implicit conversion from floating-point type A to ‘BOOL’

-Wobjc-signed-char-bool-implicit-int-conversion

Diagnostic text:

warning: implicit conversion from integral type A to ‘BOOL’

-Wobjc-string-compare

This diagnostic is enabled by default.

Diagnostic text:

warning: direct comparison of a string literal has undefined behavior

-Wobjc-string-concatenation

This diagnostic is enabled by default.

Diagnostic text:

warning: concatenated NSString literal for an NSArray expression - possibly missing a comma

-Wobjc-unsafe-perform-selector

This diagnostic is enabled by default.

Diagnostic text:

warning: A is incompatible with selectors that return a 
struct
union
vector
 type

-Wodr

This diagnostic is enabled by default.

Diagnostic text:

warning: template parameter lists have a different number of parameters (A vs B)
warning: template parameter has different kinds in different translation units
warning: field A declared with incompatible types in different translation units (B vs. C)
warning: external function A declared with incompatible types in different translation units (B vs. C)
warning: instance variable A declared with incompatible types in different translation units (B vs. C)
warning: non-type template parameter declared with incompatible types in different translation units (A vs. B)
warning: 
class
instance
 method B has a different number of parameters in different translation units (C vs. D)
warning: 
class
instance
 method B has a parameter with a different types in different translation units (C vs. D)
warning: 
class
instance
 method B has incompatible result types in different translation units (C vs. D)
warning: 
class
instance
 method B is variadic in one translation unit and not variadic in another
warning: property A is implemented with 
@synthesize
@dynamic
 in one translation but 
@dynamic
@synthesize
 in another translation unit
warning: property A declared with incompatible types in different translation units (B vs. C)
warning: class A has incompatible superclasses
warning: property A is synthesized to different ivars in different translation units (B vs. C)
warning: parameter kind mismatch; parameter is 
not a
a
 parameter pack
warning: type A has incompatible definitions in different translation units
warning: external variable A defined in multiple translation units
warning: external variable A declared with incompatible types in different translation units (B vs. C)

-Wold-style-cast

Diagnostic text:

warning: use of old-style cast

-Wold-style-definition

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wopencl-unsupported-rgba

This diagnostic is enabled by default.

Diagnostic text:

warning: vector component name ‘A’ is a feature from OpenCL version 3.0 onwards

-Wopenmp

Some of the diagnostics controlled by this flag are enabled by default.

Controls -Wopenmp-51-extensions, -Wopenmp-clauses, -Wopenmp-loop-form, -Wopenmp-mapping, -Wopenmp-target, -Wsource-uses-openmp.

-Wopenmp-51-extensions

This diagnostic is enabled by default.

Diagnostic text:

warning: specifying OpenMP directives with [[]] is an OpenMP 5.1 extension

-Wopenmp-clauses

This diagnostic is enabled by default.

Diagnostic text:

warning: aligned clause will be ignored because the requested alignment is not a power of 2
warning: allocator with the ‘thread’ trait access has unspecified behavior on ‘A’ directive
warning: the context property ‘A’ is not valid for the context selector ‘B’ and the context set ‘C’; property ignored
warning: the context selector ‘A’ in the context set ‘B’ cannot have a score (‘C’); score ignored
warning: the context selector ‘A’ is not valid for the context set ‘B’; selector ignored
warning: the context selector ‘A’ in context set ‘B’ requires a context property defined in parentheses; selector ignored
warning: the context 
set
selector
property
 B’ was used already in the same ‘omp declare variant’ directive; 
set
selector
property
 ignored
warning: A’ is not a valid context property for the context selector ‘B’ and the context set ‘C’; property ignored
warning: A’ is not a valid context selector for the context set ‘B’; selector ignored
warning: A’ is not a valid context set in a `declare variant`; set ignored
warning: expected ‘A’ after the B; ‘A’ assumed
warning: expected identifier or string literal describing a context 
set
selector
property
; 
set
selector
property
 skipped
warning: zero linear step (A 
 
and other variables in clause 
should probably be const)
warning: more than one ‘device_type’ clause is specified
warning: interop type ‘A’ cannot be specified more than once
warning: reserved locator ‘omp_all_memory’ cannot be specified more than once
warning: valid A clauses start with B; 
token
tokens
 will be ignored
warning: A clause should not be followed by arguments; tokens will be ignored
warning: allocate directive specifies 
default
B
 allocator while previously used 
default
D

-Wopenmp-loop-form

This diagnostic is enabled by default.

Diagnostic text:

warning: initialization clause of OpenMP for loop is not in canonical form (‘var = init’ or ‘T var = init’)
warning: OpenMP loop iteration variable cannot have more than 64 bits size and will be narrowed

-Wopenmp-mapping

This diagnostic is enabled by default.

Diagnostic text:

warning: Type A is not trivially copyable and not guaranteed to be mapped correctly

-Wopenmp-target

This diagnostic is enabled by default.

Also controls -Wopenmp-mapping.

Diagnostic text:

warning: OpenMP offloading target ‘A’ is similar to target ‘B’ already specified; will be ignored
warning: declaration marked as declare target after first use, it may lead to incorrect results
warning: declaration is not declared in any declare target region

-Woption-ignored

This diagnostic is enabled by default.

Diagnostic text:

warning: option ‘-ffine-grained-bitfield-accesses’ cannot be enabled together with a sanitizer; flag ignored
warning: -fjmc works only for ELF; option ignored
warning: A requires debug info. Use B or debug options that enable debugger’s stepping function; option ignored
warning: A’ does not support ‘-B’; flag ignored
warning: A’ does not support ‘-moutline’; flag ignored
warning: A requires HVX, use -mhvx/-mhvx= to enable it
warning: option ‘A’ was ignored by the B toolchain, using ‘-fPIC’
warning: The warning option ‘-A’ is not supported
warning: ignoring ‘-mlong-calls’ option as it is not currently supported with 
 
the implicit usage of 
-mabicalls
warning: the argument ‘A’ is not supported for option ‘B’. Mapping to ‘BC
warning: ignoring ‘A’ option for offload arch ‘B’ as it is not currently supported there. Use it with an offload arch containing ‘C’ instead
warning: ignoring ‘A’ option as it is not currently supported for target ‘B
warning: ignoring ‘A’ option as it cannot be used with 
implicit usage of
 
 -mabicalls and the N64 ABI
warning: ignoring ‘-msmall-data-limit=’ with -mcmodel=large for -fpic or RV64
warning: /arm64EC has been overridden by specified target: A; option ignored

-Wordered-compare-function-pointers

This diagnostic is enabled by default.

Diagnostic text:

warning: ordered comparison of function pointers (A and B)
warning: ordered comparison of function pointers (A and B)

-Wout-of-line-declaration

This diagnostic is an error by default, but the flag -Wno-out-of-line-declaration can be used to disable the error.

Diagnostic text:

error: out-of-line declaration of a member must be a definition

-Wout-of-scope-function

This diagnostic is enabled by default.

Diagnostic text:

warning: use of out-of-scope declaration of A
 
 whose type is not compatible with that of an implicit declaration

-Wover-aligned

Diagnostic text:

warning: type A requires B bytes of alignment and the default allocator only guarantees C bytes

-Woverflow

This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Woverlength-strings

Diagnostic text:

warning: string literal of length A exceeds maximum length B that 
C90
ISO C99
C++
 compilers are required to support

-Woverloaded-shift-op-parentheses

This diagnostic is enabled by default.

Diagnostic text:

warning: overloaded operator 
>>
<<
 has higher precedence than comparison operator

-Woverloaded-virtual

Diagnostic text:

warning: A hides overloaded virtual 
function
functions

-Woverride-module

This diagnostic is enabled by default.

Diagnostic text:

warning: overriding the module target triple with A

-Woverriding-method-mismatch

Diagnostic text:

warning: conflicting distributed object modifiers on parameter type in declaration of A
warning: conflicting parameter types in declaration of A
: B vs C
 
warning: conflicting distributed object modifiers on return type in declaration of A
warning: conflicting return type in declaration of A
: B vs C
 
warning: conflicting variadic declaration of method and its implementation
warning: conflicting parameter types in declaration of A: B vs C
warning: conflicting return type in declaration of A: B vs C

-Woverriding-t-option

This diagnostic is enabled by default.

Diagnostic text:

warning: overriding ‘A’ option with ‘B

-Wpacked

Also controls -Wpacked-non-pod.

Diagnostic text:

warning: packed attribute is unnecessary for A

-Wpacked-non-pod

Diagnostic text:

warning: not packing field A as it is non-POD for the purposes of layout

-Wpadded

Diagnostic text:

warning: padding 
struct
interface
class
 B with C 
byte
bit
 
s
 to align anonymous bit-field
warning: padding 
struct
interface
class
 B with C 
byte
bit
 
s
 to align E
warning: padding size of A with B 
byte
bit
 
s
 to alignment boundary

-Wparentheses

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wbitwise-conditional-parentheses, -Wbitwise-op-parentheses, -Wdangling-else, -Wlogical-not-parentheses, -Wlogical-op-parentheses, -Woverloaded-shift-op-parentheses, -Wparentheses-equality, -Wshift-op-parentheses.

Diagnostic text:

warning: using the result of an assignment as a condition without parentheses
warning: A has lower precedence than B; B will be evaluated first
warning: operator ‘?:’ has lower precedence than ‘A’; ‘A’ will be evaluated first

-Wparentheses-equality

This diagnostic is enabled by default.

Diagnostic text:

warning: equality comparison with extraneous parentheses

-Rpass

Diagnostic text:

The text of this diagnostic is not controlled by Clang.

-Rpass-analysis

Diagnostic text:

The text of this diagnostic is not controlled by Clang.

remark: A; allow reordering by specifying ‘#pragma clang loop vectorize(enable)’ before the loop. If the arrays will always be independent specify ‘#pragma clang loop vectorize(assume_safety)’ before the loop or provide the ‘__restrict__’ qualifier with the independent array arguments. Erroneous results will occur if these options are incorrectly applied!
remark: A; allow reordering by specifying ‘#pragma clang loop vectorize(enable)’ before the loop or by providing the compiler option ‘-ffast-math’.

-Wpass-failed

This diagnostic is enabled by default.

Diagnostic text:

The text of this diagnostic is not controlled by Clang.

-Rpass-missed

Diagnostic text:

The text of this diagnostic is not controlled by Clang.

-Wpch-date-time

This diagnostic is enabled by default.

Diagnostic text:

warning: 
precompiled header
module
 uses __DATE__ or __TIME__

-Wpedantic

Also controls -Wbit-int-extension, -Wc++11-extra-semi, -Wc++11-long-long, -Wc++14-attribute-extensions, -Wc++14-binary-literal, -Wc++17-attribute-extensions, -Wc++20-attribute-extensions, -Wc++20-designator, -Wc11-extensions, -Wcomplex-component-init, -Wdelimited-escape-sequence-extension, -Wdollar-in-identifier-extension, -Wembedded-directive, -Wempty-translation-unit, -Wfixed-enum-extension, -Wflexible-array-extensions, -Wfuture-attribute-extensions, -Wgnu-anonymous-struct, -Wgnu-auto-type, -Wgnu-binary-literal, -Wgnu-case-range, -Wgnu-complex-integer, -Wgnu-compound-literal-initializer, -Wgnu-conditional-omitted-operand, -Wgnu-empty-initializer, -Wgnu-empty-struct, -Wgnu-flexible-array-initializer, -Wgnu-flexible-array-union-member, -Wgnu-imaginary-constant, -Wgnu-include-next, -Wgnu-label-as-value, -Wgnu-line-marker, -Wgnu-null-pointer-arithmetic, -Wgnu-offsetof-extensions, -Wgnu-pointer-arith, -Wgnu-redeclared-enum, -Wgnu-statement-expression, -Wgnu-union-cast, -Wgnu-zero-line-directive, -Wgnu-zero-variadic-macro-arguments, -Wimport-preprocessor-directive-pedantic, -Winvalid-utf8, -Wkeyword-macro, -Wlanguage-extension-token, -Wlong-long, -Wmicrosoft-charize, -Wmicrosoft-comment-paste, -Wmicrosoft-cpp-macro, -Wmicrosoft-end-of-file, -Wmicrosoft-enum-value, -Wmicrosoft-fixed-enum, -Wmicrosoft-flexible-array, -Wmicrosoft-redeclare-static, -Wnested-anon-types, -Wnullability-extension, -Woverlength-strings, -Wretained-language-linkage, -Wundefined-internal-type, -Wvla-extension, -Wzero-length-array.

Diagnostic text:

warning: expression is not an 
integer
integral
 constant expression; folding it to a constant is a GNU extension
warning: designated initializers are a C99 feature
warning: ISO C++ does not allow ‘main’ to be used by a program
warning: C++98 requires an accessible copy constructor for class C when binding a reference to a temporary; was 
private
protected
warning: anonymous 
struct
union
 cannot be ‘B
warning: ISO C++ requires the name after ‘::~’ to be found in the same scope as the name before ‘::~’
warning: ISO C++ considers this destructor name lookup to be ambiguous
warning: no viable constructor 
copying variable
copying parameter
initializing template parameter
returning object
initializing statement expression result
throwing object
copying member subobject
copying array element
allocating object
copying temporary
initializing base subobject
initializing vector element
capturing value
 of type B; C++98 requires a copy constructor when binding a reference to a temporary
warning: ISO C++ standards before C++17 do not allow new expression for type A to use list-initialization
warning: invoking a pointer to a ‘const &’ member function on an rvalue is a C++20 extension
warning: qualifier in explicit instantiation of A requires a template-id (a typedef is not permitted)
warning: a 
function
block
 declaration without a prototype is deprecated 
in all versions of C
 
warning: static 
function
variable
 B is used in an inline function with external linkage
warning: ISO C forbids forward references to ‘enum’ types
warning: ISO C restricts enumerator values to range of ‘int’ (A is too 
small
large
)
warning: initializer for aggregate is not a compile-time constant
warning: flexible array members are a C99 feature
warning: invalid application of ‘A’ to a function type
warning: invalid application of ‘A’ to a void type
warning: ISO C90 does not allow subscripting non-lvalue array
warning: ISO C forbids taking the address of an expression of type ‘void’
warning: ordered comparison between pointer and zero (A and B) is an extension
warning: equality comparison between function pointer and void pointer (A and B)
warning: ISO C does not support ‘++’/’–’ on complex integer type A
warning: ISO C does not support ‘~’ for complex conjugation of A
warning: complex numbers are an extension in a freestanding C99 implementation
warning: cast between pointer-to-function and pointer-to-object is an extension
warning: implicit conversion from array size expression of type A to 
integral
enumeration
 type C is a C++11 extension
warning: 
assigning to A from B
assigning to different types
passing A to parameter of type B
passing to parameter of different type
returning A from a function with result type B
returning from function with different return type
converting A to type B
converting between types
initializing A with an expression of type B
initializing with expression of different type
sending A to parameter of type B
sending to parameter of different type
casting A to type B
casting between types
 converts between void pointer and function pointer
warning: kernel function A is a member function; this may not be accepted by nvcc
warning: C99 forbids conditional expressions with only one void side
warning: C99 forbids casting nonscalar type A to the same type
warning: in-class initializer for static data member is not a constant expression; folding it to a constant is a GNU extension
warning: types declared in an anonymous 
struct
union
 are a Microsoft extension
warning: format specifies type A but the argument has 
type
underlying type
 B
warning: void 
function
method
block
 A should not return void expression
warning: mixing declarations and code is a C99 extension
warning: 
qualifier in 
static 
 
array size 
 
 
‘[*] ‘
is a C99 feature
warning: Clang permits use of type ‘double’ regardless pragma if ‘cl_khr_fp64’ is supported
warning: extra ‘;’ 
outside of a function
inside a B
inside instance variable list
after member function definition
warning: ‘__thread’ before ‘A
warning: type-less parameter names in function declaration
warning: variable declaration in for loop is a C99-specific feature
warning: compound literals are a C99-specific feature
warning: commas at the end of enumerator lists are a C99-specific feature
warning: commas at the end of enumerator lists are a C++11 extension
warning: enumeration types with a fixed underlying type are a C++11 extension
warning: A’ is a C99 extension
warning: use of GNU array range extension
warning: exception specification of ‘…’ is a Microsoft extension
warning: ‘nullptr’ is a C2x extension
warning: attributes on 
a namespace
an enumerator
 declaration are a C++17 extension
warning: extern templates are a C++11 extension
warning: multi-line // comment
warning: // comments are not allowed in this language
warning: no newline at end of file
warning: use of non-standard escape character ‘\A
warning: hexadecimal floating constants are a C99 feature
warning: hexadecimal floating literals are a C++17 feature
warning: #ident is a language extension
warning: #warning is a 
C2x
C++2b
 extension
warning: comma operator in operand of #if
warning: __VA_ARGS__ can only appear in the expansion of a C99 variadic macro
warning: variadic macros are a C99 feature
warning: named variadic macros are a GNU extension
warning: empty macro arguments are a C99 feature
warning: variadic macros are a Clang extension in OpenCL
warning: C requires #line number to be less than A, allowed as extension
warning: macro expansion producing ‘defined’ has undefined behavior
warning: duplicate ‘A’ declaration specifier
warning: ‘enable_if’ is a clang extension
warning: ‘diagnose_if’ is a clang extension

-Wpedantic-core-features

Diagnostic text:

warning: A is a core feature in 
OpenCL C
C++ for OpenCL
 version C but not supported on this target
warning: OpenCL extension A is core feature or supported optional core feature - ignoring

-Wpessimizing-move

Diagnostic text:

warning: moving a temporary object prevents copy elision
warning: moving a local object in a return statement prevents copy elision

-Wpointer-arith

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wgnu-pointer-arith.

Diagnostic text:

warning: invalid application of ‘A’ to a function type
warning: invalid application of ‘A’ to a void type
warning: subtraction of pointers to type A of zero size has undefined behavior

-Wpointer-bool-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: nonnull 
function call
parameter
 B’ will evaluate to ‘true’ on first encounter
warning: address of
 
 function
 array
 B’ will always evaluate to ‘true’

-Wpointer-compare

This diagnostic is enabled by default.

Diagnostic text:

warning: comparing a pointer to a null character constant; did you mean to compare to 
NULL
(void *)0
?

-Wpointer-integer-compare

This diagnostic is enabled by default.

Diagnostic text:

warning: comparison between pointer and integer (A and B)

-Wpointer-sign

This diagnostic is enabled by default.

Diagnostic text:

warning: 
assigning to A from B
assigning to different types
passing A to parameter of type B
passing to parameter of different type
returning A from a function with result type B
returning from function with different return type
converting A to type B
converting between types
initializing A with an expression of type B
initializing with expression of different type
sending A to parameter of type B
sending to parameter of different type
casting A to type B
casting between types
 converts between pointers to integer types 
with different sign
where one is of the unique plain ‘char’ type and the other is not

-Wpointer-to-enum-cast

This diagnostic is enabled by default.

Also controls -Wvoid-pointer-to-enum-cast.

Diagnostic text:

warning: cast to smaller integer type B from A

-Wpointer-to-int-cast

This diagnostic is enabled by default.

Also controls -Wpointer-to-enum-cast, -Wvoid-pointer-to-int-cast.

Diagnostic text:

warning: cast to smaller integer type B from A

-Wpointer-type-mismatch

This diagnostic is enabled by default.

Diagnostic text:

warning: pointer type mismatch
 (A and B)
 

-Wpoison-system-directories

Diagnostic text:

warning: include location ‘A’ is unsafe for cross-compilation

-Wpotentially-direct-selector

This diagnostic is enabled by default.

Diagnostic text:

warning: @selector expression formed with potentially direct selector A

-Wpotentially-evaluated-expression

This diagnostic is enabled by default.

Diagnostic text:

warning: expression with side effects will be evaluated despite being used as an operand to ‘typeid’

-Wpragma-clang-attribute

This diagnostic is enabled by default.

Diagnostic text:

warning: unused attribute A in ‘#pragma clang attribute push’ region

-Wpragma-once-outside-header

This diagnostic is enabled by default.

Diagnostic text:

warning: #pragma once in main file

-Wpragma-pack

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wpragma-pack-suspicious-include.

Diagnostic text:

warning: the current #pragma pack alignment value is modified in the included file
warning: unterminated ‘#pragma pack (push, …)’ at end of file

-Wpragma-pack-suspicious-include

Diagnostic text:

warning: non-default #pragma pack value changes the alignment of struct or union members in the included file

-Wpragma-system-header-outside-header

This diagnostic is enabled by default.

Diagnostic text:

warning: #pragma system_header ignored in main file

-Wpragmas

Some of the diagnostics controlled by this flag are enabled by default.

Also controls -Wignored-pragmas, -Wpragma-clang-attribute, -Wpragma-pack, -Wunknown-pragmas.

Diagnostic text:

warning: Setting the floating point evaluation method to `source` on a target without SSE is not supported.
warning: #pragma redefine_extname is applicable to external C declarations only; not applied to 
function
variable
 B

-Wpre-c++14-compat

Diagnostic text:

warning: use of this statement in a constexpr 
function
constructor
 is incompatible with C++ standards before C++14
warning: multiple return statements in constexpr function is incompatible with C++ standards before C++14
warning: constexpr function with no return statements is incompatible with C++ standards before C++14
warning: variable declaration in a constexpr 
function
constructor
 is incompatible with C++ standards before C++14
warning: type definition in a constexpr 
function
constructor
 is incompatible with C++ standards before C++14
warning: ‘decltype(auto)’ type specifier is incompatible with C++ standards before C++14
warning: return type deduction is incompatible with C++ standards before C++14
warning: digit separators are incompatible with C++ standards before C++14
warning: generic lambdas are incompatible with C++11
warning: initialized lambda captures are incompatible with C++ standards before C++14
warning: variable templates are incompatible with C++ standards before C++14

-Wpre-c++17-compat

Diagnostic text:

warning: class template argument deduction is incompatible with C++ standards before C++17
 
; for compatibility, use explicit type name B
warning: constexpr if is incompatible with C++ standards before C++17
warning: constexpr on lambda expressions is incompatible with C++ standards before C++17
warning: decomposition declarations are incompatible with C++ standards before C++17
warning: pack fold expression is incompatible with C++ standards before C++17
warning: 
if
switch
 initialization statements are incompatible with C++ standards before C++17
warning: inline variables are incompatible with C++ standards before C++17
warning: nested namespace definition is incompatible with C++ standards before C++17
warning: by value capture of ‘*this’ is incompatible with C++ standards before C++17
warning: ‘static_assert’ with no message is incompatible with C++ standards before C++17
warning: non-type template parameters declared with A are incompatible with C++ standards before C++17
warning: template template parameter using ‘typename’ is incompatible with C++ standards before C++17
warning: unicode literals are incompatible with C++ standards before C++17
warning: default scope specifier for attributes is incompatible with C++ standards before C++17
warning: use of multiple declarators in a single using declaration is incompatible with C++ standards before C++17
warning: pack expansion using declaration is incompatible with C++ standards before C++17
warning: ‘begin’ and ‘end’ returning different types (A and B) is incompatible with C++ standards before C++17

-Wpre-c++17-compat-pedantic

Also controls -Wpre-c++17-compat.

Diagnostic text:

warning: attributes on 
a namespace
an enumerator
 declaration are incompatible with C++ standards before C++17
warning: hexadecimal floating literals are incompatible with C++ standards before C++17

-Wpre-c++20-compat

Diagnostic text:

warning: use of function template name with no prior function template declaration in function call with explicit template arguments is incompatible with C++ standards before C++20
warning: default member initializer for bit-field is incompatible with C++ standards before C++20
warning: captured structured bindings are incompatible with C++ standards before C++20
warning: use of this statement in a constexpr 
function
constructor
 is incompatible with C++ standards before C++20
warning: constexpr constructor that does not initialize all members is incompatible with C++ standards before C++20
warning: function try block in constexpr 
function
constructor
 is incompatible with C++ standards before C++20
warning: uninitialized variable in a constexpr 
function
constructor
 is incompatible with C++ standards before C++20
warning: constexpr union constructor that does not initialize any member is incompatible with C++ standards before C++20
warning: virtual constexpr functions are incompatible with C++ standards before C++20
warning: decomposition declaration declared 
B
with ‘B’ specifiers
 is incompatible with C++ standards before C++20
warning: defaulted comparison operators are incompatible with C++ standards before C++20
warning: explicitly defaulting this 
default constructor
copy constructor
move constructor
copy assignment operator
move assignment operator
destructor
 with a type different from the implicit type is incompatible with C++ standards before C++20
warning: explicit capture of ‘this’ with a capture default of ‘=’ is incompatible with C++ standards before C++20
warning: explicit(bool) is incompatible with C++ standards before C++20
warning: range-based for loop initialization statements are incompatible with C++ standards before C++20
warning: initialized lambda capture packs are incompatible with C++ standards before C++20
warning: inline nested namespace definition is incompatible with C++ standards before C++20
warning: 
default construction
assignment
 of lambda is incompatible with C++ standards before C++20
warning: explicit template parameter list for lambdas is incompatible with C++ standards before C++20
warning: passing no argument for the ‘…’ parameter of a variadic macro is incompatible with C++ standards before C++20
warning: ’<=>’ operator is incompatible with C++ standards before C++20
warning: non-type template parameter of type A is incompatible with C++ standards before C++20
warning: ‘char8_t’ type specifier is incompatible with C++ standards before C++20
warning: member using declaration naming a non-member enumerator is incompatible with C++ standards before C++20
warning: member using declaration naming non-class ‘A’ enumerator is incompatible with C++ standards before C++20
warning: using declaration naming a scoped enumerator is incompatible with C++ standards before C++20
warning: using enum declaration is incompatible with C++ standards before C++20