# Clang 21.1.8 documentation

## 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

### -Waarch64-sme-attributes

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

Diagnostic text:

warning: always_inline function B and its caller A have mismatching C attributes, inlining may change runtime behaviour

warning: |
returning
passing
| a VL-dependent argument |
from
to
| a locally streaming function is undefined behaviour when the streaming and non-streaming vector lengths are different at runtime

warning: |
returning
passing
| a VL-dependent argument |
from
to
| a function with a different streaming-mode is undefined behaviour when the streaming and non-streaming vector lengths are different at runtime

### -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++

### -Walias-template-in-declaration-name

This diagnostic is enabled by default.

Diagnostic text:

warning: a declarative nested name specifier cannot name an alias template

### -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, -Wpacked-non-pod, -Wparentheses, -Wperf-constraint-implies-noexcept, -Wswitch, -Wswitch-bool, -Wvla-cxx-extension.

### -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

### -Wandroid-unversioned-fallback

This diagnostic is enabled by default.

Diagnostic text:

warning: using unversioned Android target directory A for target B; unversioned directories will not be used in Clang 19 – provide a versioned directory for the target version or lower instead

### -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

### -Wapinotes

This diagnostic is enabled by default.

Diagnostic text:

The text of this diagnostic is not controlled by Clang.

### -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

### -Warm-interrupt-save-fp-no-vfp-unit

This diagnostic is enabled by default.

Diagnostic text:

warning: `interrupt_save_fp` only applies to targets that have a VFP unit enabled for this compilation; this will be treated as a regular `interrupt` attribute

### -Warm-interrupt-vfp-clobber

This diagnostic is enabled by default.

Diagnostic text:

warning: interrupt service routine with vfp enabled may clobber the interruptee’s vfp state; consider using the `interrupt_save_fp` attribute to prevent this behavior

### -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-compare

This diagnostic is enabled by default.

Diagnostic text:

warning: comparison between two arrays compare their addresses and will be deprecated in c++20; to compare array addresses, use unary ‘+’ to decay operands to pointers

### -Warray-compare-cxx26

This diagnostic is an error by default, but the flag `-Wno-array-compare-cxx26` can be used to disable the error.

Diagnostic text:

error: comparison between two arrays is ill-formed in C++26; to compare array addresses, use unary ‘+’ to decay operands to pointers

### -Warray-parameter

Diagnostic text:

warning: argument A of type B with mismatched bound

### -Wasm

Synonym for -Wasm-operand-widths.

### -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: assumption is ignored because it contains (potential) side-effects

### -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: |
success
failure
| memory order argument to atomic operation is invalid

### -Watomic-properties

Controls -Wcustom-atomic-properties, -Wimplicit-atomic-properties.

### -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-statement

This diagnostic is an error by default, but the flag `-Wno-attribute-statement` can be used to disable the error.

Diagnostic text:

error: A attribute minimum and maximum arguments are equal

### -Wattribute-warning

This diagnostic is enabled by default.

Diagnostic text:

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

warning: -mtocdata option is ignored for A because B

### -Wattributes

This diagnostic is enabled by default.

Controls -Wignored-attributes, -Wunknown-attributes.

### -Wauto-decl-extensions

Diagnostic text:

warning: type inference of a declaration other than a plain identifier with optional trailing attributes is a Clang extension

### -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 environment A in availability macro

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, 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

### -Wbinary-literal

Controls -Wc++14-binary-literal, -Wc++98-c++11-compat-binary-literal.

### -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

### -Wbit-int-extension

Diagnostic text:

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

warning: ‘_BitInt’ suffix for literals 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-conversions

Synonym for -Wbool-conversion.

### -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?

### -Wbounds-safety-counted-by-elt-type-unknown-size

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘ |
counted_by
sized_by
counted_by_or_null
sized_by_or_null
| ‘ |
cannot
should not
| be applied to |
a pointer with pointee
an array with element
| of unknown size because B is |
an incomplete type
a sizeless type
a function type
a struct type with a flexible array member |
. This will be an error in a future compiler version

### -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

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

Also controls -Wc++-hidden-decl, -Wc++-keyword, -Wc++-unterminated-string-initialization, -Wdefault-const-init, -Wduplicate-decl-specifier, -Wimplicit-int-enum-cast, -Wimplicit-void-ptr-cast, -Wjump-misses-init, -Wtentative-definition-compat.

Diagnostic text:

warning: if you see this diagnostic, a Clang developer has made a mistake

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

### -Wc++-hidden-decl

Diagnostic text:

warning: |
struct
union
enum
| defined within a struct or union is not visible in C++

### -Wc++-keyword

Diagnostic text:

warning: identifier A conflicts with a C++ keyword

### -Wc++-unterminated-string-initialization

Diagnostic text:

warning: initializer-string for character array is too long for C++, array size is A but initializer has size B (including the null terminating character)

### -Wc++0x-compat

Synonym for -Wc++11-compat.

### -Wc++0x-extensions

Synonym for -Wc++11-extensions.

### -Wc++0x-narrowing

Synonym for -Wc++11-narrowing.

### -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++23-compat, -Wpre-c++26-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-pedantic

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

Controls -Wc++11-compat, -Wpre-c++14-compat-pedantic, -Wpre-c++17-compat-pedantic, -Wpre-c++20-compat-pedantic, -Wpre-c++23-compat-pedantic, -Wpre-c++26-compat-pedantic.

### -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: enumeration types with a fixed underlying type are a C++11 extension

warning: non-class friend type A is a C++11 extension

warning: static data member A in union is a C++11 extension

warning: default template arguments for a function template are a C++11 extension

warning: parentheses around address non-type template argument are a C++11 extension

warning: ‘typename’ outside of a template is a C++11 extension

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
HLSL 202y
| extension

warning: |
defaulted
deleted
| function definitions are 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: lambdas are a |
C++11
clang HLSL
| extension

warning: use of enumeration in a nested name specifier 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: 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: 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

warning: [[]] attributes 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.

Also controls -Wc++11-narrowing-const-reference.

Diagnostic text:

error: |
case value
enumerator value
non-type template argument
non-type parameter of template template parameter
array size
explicit specifier argument
noexcept specifier argument
call to ‘size()’
call to ‘data()’
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++11-narrowing-const-reference

This diagnostic is an error by default, but the flag `-Wno-c++11-narrowing-const-reference` can be used to disable the error.

Diagnostic text:

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

### -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-compat

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

Controls -Wpre-c++17-compat, -Wpre-c++20-compat, -Wpre-c++23-compat, -Wpre-c++26-compat.

### -Wc++14-compat-pedantic

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

Controls -Wc++14-compat, -Wpre-c++17-compat-pedantic, -Wpre-c++20-compat-pedantic, -Wpre-c++23-compat-pedantic, -Wpre-c++26-compat-pedantic.

### -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: 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: use of this statement in a constexpr |
function
constructor
| is a C++14 extension

warning: variable templates are a C++14 extension

warning: ‘decltype(auto)’ type specifier is a C++14 extension

warning: initialized lambda captures 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++23-compat, -Wpre-c++26-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++23-compat-pedantic, -Wpre-c++26-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: decomposition declarations are a C++17 extension

warning: inline variables are a C++17 extension

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: 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: 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++1y-extensions

Synonym for -Wc++14-extensions.

### -Wc++1z-compat

Synonym for -Wc++17-compat.

### -Wc++1z-compat-mangling

Synonym for -Wc++17-compat-mangling.

### -Wc++1z-extensions

Synonym for -Wc++17-extensions.

### -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++23-compat, -Wpre-c++26-compat.

Diagnostic text:

warning: aggregate initialization of type A with user-declared constructors is incompatible with C++20

warning: this expression will be parsed as explicit(bool) in C++20

warning: explicit initialization of field B will not be enforced in C++20 and later because C has a user-declared constructor, making the type no longer an aggregate

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++23-compat-pedantic, -Wpre-c++26-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, -Wvariadic-macro-arguments-omitted.

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: 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: class template argument deduction for alias templates is a C++20 extension

warning: use of this statement in a constexpr |
function
constructor
| is a C++20 extension

warning: decomposition declaration declared |
‘B’
with ‘B’ specifiers
| is a C++20 extension

warning: missing ‘typename’ prior to dependent type name A 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: 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: 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++23-attribute-extensions

Diagnostic text:

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

### -Wc++23-compat

Synonym for -Wpre-c++26-compat.

### -Wc++23-extensions

This diagnostic is enabled by default.

Also controls -Wc++23-lambda-attributes.

Diagnostic text:

warning: definition of a |
static
thread_local
| variable in a constexpr |
function
constructor
| is a C++23 extension

warning: use of this statement in a constexpr |
function
constructor
| is a C++23 extension

warning: static lambdas are a C++23 extension

warning: alias declaration in this context is a C++23 extension

warning: consteval if is a C++23 extension

warning: use of a ‘# |
<BUG IF SEEN>
elifdef
elifndef
| ‘ directive is a C++23 extension

warning: ‘size_t’ suffix for literals is a C++23 extension

warning: label at end of compound statement is a C++23 extension

warning: lambda without a parameter clause is a C++23 extension

warning: declaring overloaded A as ‘static’ is a C++23 extension

### -Wc++23-lambda-attributes

This diagnostic is enabled by default.

Diagnostic text:

warning: |
an attribute specifier sequence
A
| in this position is a C++23 extension

### -Wc++26-extensions

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

Diagnostic text:

warning: structured binding declaration in a condition is a C++2c extension

warning: ‘A’ in a raw string literal delimiter is a C++2c extension

warning: structured binding packs are a C++2c extension

warning: ‘static_assert’ with a user-generated message is a C++26 extension

warning: an attribute specifier sequence attached to a structured binding declaration is a C++2c extension

warning: ‘= delete’ with a message is a C++2c extension

warning: pack indexing is a C++2c extension

warning: placeholder variables are a C++2c extension

warning: ‘ |
trivially_relocatable_if_eligible
replaceable_if_eligible
| ‘ keyword is a C++2c extension

warning: variadic ‘friend’ declarations are a C++2c extension

### -Wc++2a-compat

Synonym for -Wc++20-compat.

### -Wc++2a-compat-pedantic

Synonym for -Wc++20-compat-pedantic.

### -Wc++2a-extensions

Synonym for -Wc++20-extensions.

### -Wc++2b-extensions

Synonym for -Wc++23-extensions.

### -Wc++2c-compat

Synonym for -Wdelete-incomplete.

### -Wc++2c-extensions

Synonym for -Wc++26-extensions.

### -Wc++98-c++11-c++14-c++17-compat

Synonym for -Wpre-c++20-compat.

### -Wc++98-c++11-c++14-c++17-compat-pedantic

Synonym for -Wpre-c++20-compat-pedantic.

### -Wc++98-c++11-c++14-compat

Synonym for -Wpre-c++17-compat.

### -Wc++98-c++11-c++14-compat-pedantic

Synonym for -Wpre-c++17-compat-pedantic.

### -Wc++98-c++11-compat

Synonym for -Wpre-c++14-compat.

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

Diagnostic text:

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

### -Wc++98-c++11-compat-pedantic

Synonym for -Wpre-c++14-compat-pedantic.

### -Wc++98-compat

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

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++23-compat, -Wpre-c++26-compat.

Diagnostic text:

warning: enumeration types with a fixed underlying type are incompatible with C++98

warning: non-class friend type A is incompatible with C++98

warning: static data member A in union is incompatible with C++98

warning: default template arguments for a function template are incompatible with C++98

warning: parentheses around address non-type template argument are incompatible with C++98

warning: ‘typename’ outside of a template is incompatible with C++98

warning: alias declarations are incompatible with C++98

warning: ‘alignas’ is incompatible with C++98

warning: alignof expressions are incompatible with C++98

warning: [[]] attributes are incompatible with C++ standards before C++11

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 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: 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: jump from switch statement to this case label is 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: trailing return types are incompatible with C++98

warning: consecutive right angle brackets are incompatible with C++98 (use ‘> >’)

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

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

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++23-compat-pedantic, -Wpre-c++26-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: #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

### -Wc-attribute-extension

This diagnostic is enabled by default.

Diagnostic text:

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

### -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

### -Wc23-compat

Diagnostic text:

warning: type of UTF-8 string literal will change from array of char to array of char8_t in C23

warning: ‘A’ is a keyword in C23

### -Wc23-extensions

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

Also controls -Wvariadic-macro-arguments-omitted.

Diagnostic text:

warning: binary integer literals are a C23 extension

warning: ‘_BitInt’ suffix for literals is a C23 extension

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

warning: |
incremented
| enumerator value which exceeds the range of ‘int’ is a C23 extension (B is too |
small
large
| )

warning: declaration of non-local variable in ‘for’ loop is a C23 extension

warning: non-variable declaration in ‘for’ loop is a C23 extension

warning: use of a ‘# |
<BUG IF SEEN>
elifdef
elifndef
| ‘ directive is a C23 extension

warning: use of an empty initializer is a C23 extension

warning: label at end of compound statement is a C23 extension

warning: label followed by a declaration is a C23 extension

warning: ‘nullptr’ is a C23 extension

warning: ‘_Static_assert’ with no message is a C23 extension

warning: omitting the parameter name in a function definition is a C23 extension

warning: #embed is a |
C23
Clang
| extension

warning: ‘restrict’ qualifier on an array of pointers is a C23 extension

warning: defining a type within ‘ |
__builtin_offsetof
offsetof
| ‘ is a C23 extension

warning: [[]] attributes are a C23 extension

### -Wc2x-compat

Synonym for -Wc23-compat.

### -Wc2x-extensions

Synonym for -Wc23-extensions.

### -Wc2y-extensions

Diagnostic text:

warning: incomplete type A in a ‘_Generic’ association is a C2y extension

warning: ‘alignof’ on an incomplete array type is a C2y extension

warning: case ranges are a C2y extension

warning: ‘A’ is a C2y extension

warning: passing a type argument as the first operand to ‘_Generic’ is a C2y extension

warning: imaginary constants are a C2y extension

warning: ‘ |
–
++
| ‘ on an object of complex type is a C2y extension

warning: octal integer literals are a C2y 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, -Winitializer-overrides, -Wreorder-init-list.

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

Controls -Wcast-function-type-mismatch, -Wcast-function-type-strict.

### -Wcast-function-type-mismatch

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

### -Wcfi-unchecked-callee

This diagnostic is enabled by default.

Diagnostic text:

warning: implicit conversion from A to B discards ‘cfi_unchecked_callee’ attribute

### -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’

### -Wcharacter-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: |
arithmetic between
bitwise operation between
comparison of
conditional expression between
compound assignment of
| different Unicode character types B and C

warning: comparing values of different Unicode code unit types A and B may compare different code points

warning: comparing values of different Unicode code unit types A and B compares unrelated code units ‘C’ and ‘D’

warning: implicit conversion from A to B may change the meaning of the represented code unit

warning: implicit conversion from A to B changes the meaning of the |
code unit
code point
| ‘D’

warning: implicit conversion from A to B may lose precision and change the meaning of the represented code unit

### -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 ‘ |
-D B=…
-U B
| ‘ 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, -Wcharacter-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, -Wsign-conversion, -Wstring-conversion.

Diagnostic text:

warning: implicit conversion truncates vector: A to B

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

### -Wconversion-null

Synonym for -Wnull-conversion.

### -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

### -Wcoro-type-aware-allocation-function

This diagnostic is enabled by default.

Diagnostic text:

warning: type aware A will not be used for coroutine allocation

### -Wcoroutine

This diagnostic is enabled by default.

Also controls -Walways-inline-coroutine, -Wcoro-non-aligned-allocation-function, -Wcoro-type-aware-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
A
| to appear here

### -Wdangling

This diagnostic is enabled by default.

Also controls -Wdangling-assignment, -Wdangling-assignment-gsl, -Wdangling-capture, -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

### -Wdangling-assignment

This diagnostic is enabled by default.

Diagnostic text:

warning: object backing |
the pointer
| B will be destroyed at the end of the full-expression

### -Wdangling-assignment-gsl

This diagnostic is enabled by default.

Diagnostic text:

warning: object backing the pointer A will be destroyed at the end of the full-expression

### -Wdangling-capture

This diagnostic is enabled by default.

Diagnostic text:

warning: object whose reference is captured by A will be destroyed at the end of the full-expression

warning: object whose reference is captured will be destroyed 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

### -Wdecls-in-multiple-modules

Diagnostic text:

warning: declaration A is detected to be defined in multiple module units, first is from ‘B’ and second is from ‘C’; the compiler may not be good at merging the definitions.

### -Wdefault-const-init

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

Controls -Wdefault-const-init-field, -Wdefault-const-init-unsafe, -Wdefault-const-init-var.

### -Wdefault-const-init-field

Diagnostic text:

warning: default initialization of an object of type A with const member is incompatible with C++

### -Wdefault-const-init-field-unsafe

This diagnostic is enabled by default.

Diagnostic text:

warning: default initialization of an object of type A with const member leaves the object uninitialized |
and is incompatible with C++

### -Wdefault-const-init-unsafe

This diagnostic is enabled by default.

Controls -Wdefault-const-init-field-unsafe, -Wdefault-const-init-var-unsafe.

### -Wdefault-const-init-var

Diagnostic text:

warning: default initialization of an object of type A is incompatible with C++

### -Wdefault-const-init-var-unsafe

This diagnostic is enabled by default.

Diagnostic text:

warning: default initialization of an object of type A leaves the object uninitialized |
and is incompatible with C++

### -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

### -Wdelayed-template-parsing-in-cxx20

This diagnostic is enabled by default.

Diagnostic text:

warning: -fdelayed-template-parsing is deprecated after C++20

### -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 is incompatible with C++2c and 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 |
C++23
C2y
Clang
| 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-literal-operator, -Wdeprecated-missing-comma-variadic-parameter, -Wdeprecated-octal-literals, -Wdeprecated-ofast, -Wdeprecated-pragma, -Wdeprecated-redundant-constexpr-static-def, -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: argument ‘A’ is deprecated |
, use ‘C’ instead

warning: argument ‘A’ is deprecated, B

warning: treating ‘A’ input as ‘B’ when in C++ mode, this behavior is deprecated

warning: ‘default’ clause for ‘metadirective’ is deprecated; use ‘otherwise’ instead

warning: ‘depend’ clause for ‘ordered’ is deprecated; use ‘doacross’ instead

warning: the delimited form of ‘#pragma omp declare target’ without clauses is deprecated; use ‘#pragma omp begin declare target’ instead

warning: minus(-) operator for reductions is deprecated; use + or user defined reduction instead

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 C23; 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++23

### -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-dtor

Synonym for -Wdeprecated-copy-with-dtor.

### -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.

Also controls -Wdeprecated-declarations-switch-case.

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-declarations-switch-case

This diagnostic is enabled by default.

Diagnostic text:

warning: A 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-literal-operator

This diagnostic is enabled by default.

Diagnostic text:

warning: identifier A preceded by whitespace in a literal operator declaration is deprecated

### -Wdeprecated-missing-comma-variadic-parameter

This diagnostic is enabled by default.

Diagnostic text:

warning: declaration of a variadic function without a comma before ‘…’ is deprecated

### -Wdeprecated-module-dot-map

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘A’ as a module map name is deprecated, rename it to |
module.modulemap
module.private.modulemap
in the ‘Modules’ directory of the framework

### -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 C23
and is treated as a zero-parameter prototype in C23, 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 C23

### -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-octal-literals

This diagnostic is enabled by default.

Diagnostic text:

warning: octal literals without a ‘0o’ prefix are deprecated

### -Wdeprecated-ofast

This diagnostic is enabled by default.

Diagnostic text:

warning: argument ‘-Ofast’ is deprecated; use ‘-O3 -ffast-math’ for the same behavior, or ‘-O3’ to enable only conforming optimizations

warning: argument ‘-Ofast’ is deprecated; use ‘-O3 -ffast-math -fstack-arrays’ for the same behavior, or ‘-O3 -fstack-arrays’ to enable only conforming optimizations

### -Wdeprecated-pragma

This diagnostic is enabled by default.

Diagnostic text:

warning: macro A has been marked as deprecated |
: C

### -Wdeprecated-redundant-constexpr-static-def

Diagnostic text:

warning: out-of-line definition of constexpr static data member is redundant in C++17 and is deprecated

### -Wdeprecated-register

This diagnostic is enabled by default.

Diagnostic text:

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

### -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

### -Wdeprecated-writable-strings

Synonym for -Wc++11-compat-deprecated-writable-strings.

### -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

### -Wdiv-by-zero

Synonym for -Wdivision-by-zero.

### -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: line splicing in Doxygen comments are not supported

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 environment

### -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

### -Weffc++

Synonym for -Wnon-virtual-dtor.

### -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

### -Wendif-labels

Synonym for -Wextra-tokens.

### -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-conversion

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

Controls -Wenum-compare-conditional, -Wenum-enum-conversion, -Wenum-float-conversion, -Wimplicit-enum-enum-cast.

### -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)

error: invalid |
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

### -Wexcessive-regsave

This diagnostic is enabled by default.

Diagnostic text:

warning: |
interrupt service routine
function with attribute ‘no_caller_saved_registers’
| should only call a function with attribute ‘no_caller_saved_registers’ or be compiled with ‘-mgeneral-regs-only’

### -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

### -Wexperimental-header-units

This diagnostic is enabled by default.

Diagnostic text:

warning: the implementation of header units is in an experimental phase

### -Wexperimental-lifetime-safety

Diagnostic text:

warning: todo: remove this warning after we have atleast one warning based on the lifetime analysis

### -Wexperimental-option

This diagnostic is enabled by default.

Diagnostic text:

warning: OpenMP support for version A in flang is still incomplete

### -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

### -Wexplicit-specialization-storage-class

This diagnostic is enabled by default.

Diagnostic text:

warning: explicit specialization cannot have a storage class

### -Wexport-unnamed

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

### -Wext-cxx-type-aware-allocators

This diagnostic is enabled by default.

Diagnostic text:

warning: type aware allocators are a Clang extension

### -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.

Controls -Wcast-function-type-mismatch, -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, -Wunnecessary-virtual-specifier, -Wunterminated-string-initialization, -Wunused-but-set-parameter, -Wunused-parameter.

### -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

### -Wextractapi-misuse

This diagnostic is enabled by default.

Diagnostic text:

warning: missing symbol graph output directory, defaulting to working directory

### -Wextraneous-template-head

This diagnostic is an error by default, but the flag `-Wno-extraneous-template-head` can be used to disable the error.

Diagnostic text:

error: extraneous template parameter list in template specialization

### -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-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-overflow, -Wformat-security, -Wformat-truncation, -Wformat-y2k, -Wformat-zero-length, -Wnonnull.

Diagnostic text:

warning: using ‘%%P’ format specifier without precision

warning: using ‘%%P’ format specifier with an Objective-C pointer results in dumping runtime object structure, not object value

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 argument modifies specifier at position A, but it should modify specifier at position B

warning: format argument is |
a value
an indirect field width
an indirect precision
an auxiliary value
| , but it should be |
a value
an indirect field width
an indirect precision
an auxiliary value

warning: argument sensitivity is |
unspecified
private
public
sensitive
| , but it should be |
unspecified
private
public
sensitive

warning: format specifier ‘A’ is incompatible with ‘B’

warning: signedness of format specifier ‘A’ is incompatible with ‘B’

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: passing ‘A’ format string where ‘B’ format string is expected

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: |
fewer
more
| specifiers in format string than expected

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-overflow

This diagnostic is enabled by default.

Also controls -Wformat-overflow-non-kprintf.

Diagnostic text:

warning: ‘A’ will always overflow; destination buffer has size B, but format string expands to at least C

### -Wformat-overflow-non-kprintf

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘A’ will always overflow; destination buffer has size B, but format string expands to at least C

### -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: signedness of format specifier ‘A’ is incompatible with ‘B’

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-signedness

Diagnostic text:

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

### -Wformat-truncation

This diagnostic is enabled by default.

Also controls -Wformat-truncation-non-kprintf.

Diagnostic text:

warning: ‘A’ will always be truncated; specified size is B, but format string expands to at least C

### -Wformat-truncation-non-kprintf

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘A’ will always be truncated; specified size is B, but format string expands to at least C

### -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.

Also controls -Wformat-overflow, -Wformat-truncation.

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 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.

>     clang -c a.cpp -Rpass-analysis=stack-frame-layout -mllvm -filter-print-funcs=foo

>     clang -c a.cpp -Rpass-analysis=stack-frame-layout -foptimization-record-file=<file>

### -Wframe-larger-than=

Synonym for -Wframe-larger-than.

### -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

### -Wfriend-enum

This diagnostic is enabled by default.

Diagnostic text:

warning: elaborated enum specifier cannot be declared as a friend

### -Wfunction-def-in-objc-container

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wfunction-effects

Diagnostic text:

warning: effects conflict when merging declarations; kept ‘A’, discarded ‘B’

warning: |
function
constructor
destructor
lambda
block
member initializer of constructor
| with ‘B’ attribute must not call non-’B’ expression

warning: |
function
constructor
destructor
lambda
block
member initializer of constructor
| with ‘B’ attribute must not call non-’B’ |
function
constructor
destructor
lambda
block
| ‘D’

warning: |
function
constructor
destructor
lambda
block
member initializer of constructor
| with ‘B’ attribute must not |
allocate or deallocate memory
throw or catch exceptions
have static local variables
use thread-local variables
access ObjC methods or properties

warning: attribute ‘A’ should not be added via type conversion

warning: attribute ‘A’ on overriding function does not match base declaration

warning: attribute ‘A’ on function does not match previous declaration

### -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-attribute-extensions

Controls -Wc++14-attribute-extensions, -Wc++17-attribute-extensions, -Wc++20-attribute-extensions, -Wc++23-attribute-extensions.

### -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

Emit a warning for each variable declaration that generates code run at startup.

### -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

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

Controls -Wgnu-alignof-expression, -Wgnu-anonymous-struct, -Wgnu-auto-type, -Wgnu-binary-literal, -Wgnu-case-range, -Wgnu-complex-integer, -Wgnu-compound-literal-initializer, -Wgnu-conditional-omitted-operand, -Wgnu-designator, -Wgnu-empty-struct, -Wgnu-flexible-array-initializer, -Wgnu-flexible-array-union-member, -Wgnu-folding-constant, -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-static-float-init, -Wgnu-string-literal-operator-template, -Wgnu-union-cast, -Wgnu-variable-sized-type-not-at-end, -Wgnu-zero-line-directive, -Wgnu-zero-variadic-macro-arguments, -Wredeclared-class-member, -Wvla-extension, -Wzero-length-array.

### -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

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

### -Wgnu-case-range

Diagnostic text:

warning: case ranges are a GNU 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

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

### -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

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

### -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

Also controls -Wvariadic-macro-arguments-omitted.

Diagnostic text:

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

### -Whigher-precision-for-complex-division

This diagnostic is enabled by default.

Diagnostic text:

warning: excess precision is requested but the target does not support excess precision which may result in observable differences in complex division behavior |
, additional uses where the requested higher precision cannot be honored were found but not diagnosed

### -Whip-omp-target-directives

This diagnostic is an error by default, but the flag `-Wno-hip-omp-target-directives` can be used to disable the error.

Diagnostic text:

error: HIP does not support OpenMP target directives; directive has been ignored

### -Whip-only

This diagnostic is enabled by default.

Diagnostic text:

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

### -Whlsl-202y-extensions

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘auto’ type specifier is a |
C++11
HLSL 202y
| extension

### -Whlsl-availability

This diagnostic is an error by default, but the flag `-Wno-hlsl-availability` can be used to disable the error.

Diagnostic text:

error: A is only available |
in E environment
| on B C or newer

error: A is unavailable

### -Whlsl-dxc-compatability

This diagnostic is enabled by default.

Diagnostic text:

warning: support for HLSL language version A is incomplete, recommend using B instead

### -Whlsl-extensions

This diagnostic is enabled by default.

Also controls -Whlsl-202y-extensions.

Diagnostic text:

warning: access specifiers are a clang HLSL extension

warning: lambdas are a |
C++11
clang HLSL
| extension

### -Whlsl-implicit-binding

Diagnostic text:

warning: resource has implicit register binding

### -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: A attribute ignored on local class |
member

warning: A attribute ignored because Clang does not yet support this attribute signature

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: ‘hybrid_patchable’ is ignored on functions without external linkage

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 is ignored because B is not a function pointer

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: A attribute is ignored in non-aggregate type B

warning: attribute A ignored, because it is not attached to a declaration

warning: A |
attribute
| only applies to fields or variables of character array type; type is C

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: attribute A cannot be applied to a ‘void’ parameter

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
for loop statements
virtual functions
parameters and implicit object parameters
non-member functions
functions, classes, or enumerations
classes
typedefs

warning: A |
attribute
| only applies to C

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: ‘const’ attribute imposes more restrictions; ‘pure’ attribute ignored

warning: maxclusterrank requires sm_90 or higher, CUDA arch provided: A, ignoring B attribute

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
enum class
enum struct
| “ 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
AVR
| ‘ |
interrupt
signal
| ‘ 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: ‘ |
pure
const
| ‘ attribute on function returning ‘void’; attribute ignored

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-base-class-qualifiers

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

Also controls -Wignored-qualifiers.

Diagnostic text:

warning: ‘A’ qualifier |
s
| on base class type C |
has
have
| no effect

### -Wignored-gch

This diagnostic is enabled by default.

Diagnostic text:

warning: precompiled header directory ‘A’ was ignored because it contains no clang PCH files

warning: precompiled header ‘A’ was ignored because it is not a clang PCH file

### -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: unable to find module ‘A’

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: ‘A’ qualifier on function type B has no effect and is a Clang extension

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-enum-enum-cast

This diagnostic is enabled by default.

Diagnostic text:

warning: implicit conversion from enumeration type A to different enumeration type 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 -Wimplicit-int-conversion-on-negation, -Wobjc-signed-char-bool-implicit-int-conversion, -Wshorten-64-to-32.

Diagnostic text:

warning: higher order bits are zeroes after implicit conversion

warning: implicit conversion loses integer precision: A to B

### -Wimplicit-int-conversion-on-negation

Diagnostic text:

warning: implicit conversion loses integer precision: A to B on negation

### -Wimplicit-int-enum-cast

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

Also controls -Wimplicit-enum-enum-cast.

Diagnostic text:

warning: implicit conversion from A to enumeration type B is invalid in C++

### -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

### -Wimplicit-void-ptr-cast

Diagnostic text:

warning: implicit conversion when |
assigning to A from type B
assigning to type from type
passing A to parameter of type B
passing type to parameter of type
returning A from a function with result type B
returning type from a function with result type
<CLANG BUG IF YOU SEE THIS>
initializing A with an expression of type B
initializing type with an expression of type
sending A to parameter of type B
sending type to parameter of type
<CLANG BUG IF YOU SEE THIS>
| is not permitted in C++

### -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-implementation-partition-unit-in-interface-unit

This diagnostic is enabled by default.

Diagnostic text:

warning: importing an implementation partition unit in a module interface is not recommended. Names from A may not be reachable

### -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-angled-in-module-purview

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘#include <filename>’ attaches the declarations to the named module ‘A’, which is not usually intended; consider moving that directive before the module declaration

### -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-pragma-section

This diagnostic is enabled by default.

Diagnostic text:

warning: `#pragma const_seg` for section B will not apply to A due to the presence of a |
mutable field
non-trivial constructor
non-trivial destructor

### -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-priority-reserved

This diagnostic is an error by default, but the flag `-Wno-init-priority-reserved` can be used to disable the error.

Diagnostic text:

error: requested ‘init_priority’ A is reserved for internal use

### -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

error: 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’

### -Winstallapi-violation

This diagnostic is enabled by default.

Diagnostic text:

warning: dynamic library symbol ‘A’ is |
weak defined
thread local
| , but its declaration is not

warning: glob ‘A’ did not match any header file

warning: declaration ‘A’ is marked |
available
unavailable
| , but symbol is |
not
| exported in dynamic library

warning: symbol exported in dynamic library, but marked hidden in declaration ‘A’

warning: declaration ‘A’ is |
weak defined
thread local
| , but symbol is not in dynamic library

warning: no declaration was found for exported symbol ‘A’ in dynamic library

warning: declaration has external linkage, but symbol has internal linkage in dynamic library ‘A’

warning: declaration has external linkage, but dynamic library doesn’t have symbol ‘A’

warning: no such excluded |
public
private
| header file: ‘B’

warning: platform does not match: ‘A’ (provided) vs ‘B’ (found)

warning: runpath search paths do not match: ‘A’ (provided) vs ‘B’ (found)

warning: runpath search paths missing from A: ‘B’

warning: violations found for A

### -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-conversions

Synonym for -Wint-conversion.

### -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 to compare with ‘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

### -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 ‘B C’ instead

warning: feature flag ‘A’ must start with either ‘+’ to enable the feature or ‘-’ to disable it; flag ignored

warning: feature flag ‘A’ is ignored since the feature is read only

warning: mismatch between architecture and environment in target triple ‘A’; did you mean ‘B’?

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-feature-combination

This diagnostic is enabled by default.

Diagnostic text:

warning: invalid feature combination: A

### -Winvalid-gnu-asm-cast

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

Diagnostic text:

error: invalid use of a cast in an inline asm context requiring an lvalue

### -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: coroutine A cannot be declared ‘noreturn’ as it always returns a coroutine handle

warning: function A declared ‘noreturn’ should not return

warning: |
function
block
lambda
coroutine
| declared ‘noreturn’ should not return

### -Winvalid-offsetof

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘offsetof’ on non-POD type A

warning: ‘offsetof’ on non-standard-layout type A

### -Winvalid-or-nonexistent-directory

Diagnostic text:

warning: unable to find A directory, expected to be in ‘B’ found via C

### -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-specialization

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

Diagnostic text:

error: A cannot be specialized |
: C

### -Winvalid-static-assert-message

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

Diagnostic text:

error: |
the message
the expression
| in |
this static assertion
this asm operand
| is not a constant expression

### -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-unevaluated-string

This diagnostic is enabled by default.

Diagnostic text:

warning: encoding prefix ‘A’ on an unevaluated string literal has no effect |
and is incompatible with c++2c

### -Winvalid-utf8

Diagnostic text:

warning: invalid UTF-8 in comment

### -Winvalid-version-availability

This diagnostic is enabled by default.

Diagnostic text:

warning: invalid B version ‘A’ in availability attribute

### -Wjump-misses-init

Diagnostic text:

warning: jump from this goto statement to its label is incompatible with C++

warning: jump from this |
indirect
asm
| goto statement to one of its possible targets is incompatible with C++

warning: jump from switch statement to this case label is incompatible with C++

### -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 ?

### -Wlegacy-constant-register-binding

This diagnostic is enabled by default.

Diagnostic text:

error: binding type ‘b’ only applies to constant buffers. The ‘bool constant’ binding type is no longer supported

error: binding type ‘i’ ignored. The ‘integer constant’ binding type is no longer supported

error: binding type ‘c’ ignored in buffer declaration. Did you mean ‘packoffset’?

warning: binding type ‘ |
t
u
b
s
c
| ‘ only applies to types containing |
SRV resources
UAV resources
constant buffer resources
sampler state
numeric types

### -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

### -Wloop-analysis

Controls -Wfor-loop-analysis, -Wrange-loop-analysis.

### -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: ‘main’ should not be ‘extern “C”’

warning: referring to ‘main’ within an expression is a Clang extension

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-attached-to-named-module

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘main’ never has module linkage

### -Wmain-return-type

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

Diagnostic text:

warning: implicit ‘0’ return value from ‘main’ is a C99 extension

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

### -Wmath-errno-enabled-with-veclib

This diagnostic is enabled by default.

Diagnostic text:

warning: math errno enabled by ‘A’ after it was implicitly disabled by ‘B’, this may limit the utilization of the vector library

### -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:

       #pragma clang max_tokens_here 1234

2. As a per-translation unit limit, using the `-fmax-tokens=` command-line flag:

       clang -c a.cpp -fmax-tokens=1234

3. As a per-translation unit limit using the `clang max_tokens_total` pragma, which works like and overrides the `-fmax-tokens=` flag:

       #pragma clang max_tokens_total 1234

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

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

Controls -Winconsistent-dllimport, -Wmicrosoft-abstract, -Wmicrosoft-anon-tag, -Wmicrosoft-cast, -Wmicrosoft-charize, -Wmicrosoft-comment-paste, -Wmicrosoft-const-init, -Wmicrosoft-cpp-macro, -Wmicrosoft-default-arg-redefinition, -Wmicrosoft-drectve-section, -Wmicrosoft-end-of-file, -Wmicrosoft-enum-forward-reference, -Wmicrosoft-enum-value, -Wmicrosoft-exception-spec, -Wmicrosoft-explicit-constructor-call, -Wmicrosoft-extra-qualification, -Wmicrosoft-fixed-enum, -Wmicrosoft-flexible-array, -Wmicrosoft-goto, -Wmicrosoft-include, -Wmicrosoft-init-from-predefined, -Wmicrosoft-inline-on-non-function, -Wmicrosoft-mutable-reference, -Wmicrosoft-pure-definition, -Wmicrosoft-redeclare-static, -Wmicrosoft-sealed, -Wmicrosoft-string-literal-from-predefined, -Wmicrosoft-template, -Wmicrosoft-union-member-reference, -Wmicrosoft-unqualified-friend, -Wmicrosoft-using-decl, -Wmicrosoft-void-pseudo-dtor.

### -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-init-from-predefined

This diagnostic is enabled by default.

Diagnostic text:

warning: initializing an array from a A predefined identifier is a Microsoft extension

### -Wmicrosoft-inline-on-non-function

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘inline’ can only appear on functions |
and non-local variables

### -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-string-literal-from-predefined

This diagnostic is enabled by default.

Diagnostic text:

warning: expansion of predefined identifier ‘A’ to a string literal 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-designated-field-initializers

Diagnostic text:

warning: missing field A initializer

Warn about designated initializers with some fields missing (only in C++).

### -Wmissing-exception-spec

This diagnostic is enabled by default.

Diagnostic text:

warning: A is missing exception specification ‘B’

### -Wmissing-field-initializers

Also controls -Wmissing-designated-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

Diagnostic text:

warning: no such include directory: ‘A’

### -Wmissing-method-return-type

Diagnostic text:

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

### -Wmissing-multilib

This diagnostic is enabled by default.

Diagnostic text:

warning: no multilib found matching flags: A

### -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-template-arg-list-after-template-kw

This diagnostic is an error by default, but the flag `-Wno-missing-template-arg-list-after-template-kw` can be used to disable the error.

Diagnostic text:

error: a template argument list is expected after a name prefixed by the template keyword

### -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’?

### -Wmix-packoffset

This diagnostic is enabled by default.

Diagnostic text:

warning: cannot mix packoffset elements with nonpackoffset elements in a cbuffer

### -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’

### -Wmodule-file-mapping-mismatch

Diagnostic text:

warning: loaded module file ‘A’ conflicts with imported file ‘B’

### -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’

### -Rmodule-map

Diagnostic text:

remark: loading modulemap ‘A’

remark: loading parsed module ‘A’

remark: parsing modulemap ‘A’

### -Rmodule-validation

Diagnostic text:

remark: validating A input files in module ‘B’ from ‘C’

### -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

### -Wmost

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

Controls -Warray-parameter, -Wbool-operation, -Wcast-of-sel-type, -Wchar-subscripts, -Wcomment, -Wdelete-non-virtual-dtor, -Wextern-c-compat, -Wfor-loop-analysis, -Wformat, -Wframe-address, -Wimplicit, -Winfinite-recursion, -Wint-in-bool-context, -Wmismatched-tags, -Wmissing-braces, -Wmove, -Wmultichar, -Wobjc-designated-initializers, -Wobjc-flexible-array, -Wobjc-missing-super-calls, -Woverloaded-virtual, -Wprivate-extern, -Wrange-loop-construct, -Wreorder, -Wreturn-type, -Wself-assign, -Wself-move, -Wsizeof-array-argument, -Wsizeof-array-decay, -Wstring-plus-int, -Wtautological-compare, -Wtrigraphs, -Wuninitialized, -Wunknown-pragmas, -Wunused, -Wuser-defined-warnings, -Wvolatile-register-var.

### -Wmove

Controls -Wpessimizing-move, -Wredundant-move, -Wreturn-std-move, -Wself-move.

### -Wms-bitfield-padding

Diagnostic text:

warning: bit-field A of type B has a different storage size than the preceding bit-field (C vs D bytes) and will not be packed under the Microsoft ABI

> Under the Microsoft ABI, adjacent bit-fields are not packed if the underlying type has a different storage size. This warning indicates that a pair of adjacent bit-fields may not pack in the same way due to this behavioural difference.

> This can occur when mixing different types explicitly:

>     struct S {
>       uint16_t field1 : 1;
>       uint32_t field2 : 1;
>     };

> or more subtly through enums

>     enum Enum1 { /* ... */ };
>     enum class Enum2 : unsigned char { /* ... */ };
>     struct S {
>       Enum1 field1 : 1;
>       Enum2 field2 : 1;
>     };

> In each of these cases under the Microsoft ABI the second bit-field will not be packed with the preceding bit-field, and instead will be aligned as if the fields were each separately defined integer fields of their respective storage size. For binary compatibility this is obviously and observably incompatible, however where bit-fields are being used solely for memory use reduction this incomplete packing may silently increase the size of objects vs what is expected.

> This issue can be addressed by ensuring the storage type of each bit-field is the same, either by explicitly using the same integer type, or in the case of enum types declaring the enum types with the same storage size. For enum types where you cannot specify the underlying type, the options are to either switch to int sized storage for all specifiers or to resort to declaring the bit-fields with explicit integer storage types and cast in and out of the field. If such a solution is required the preferred_type attribute can be used to convey the actual field type to debuggers and other tooling.

### -Wmsvc-include

Synonym for -Wmicrosoft-include.

### -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

### -Wmulti-gpu

This diagnostic is enabled by default.

Diagnostic text:

warning: multiple A architectures are detected: B; only the first one is used for ‘C’

### -Wmultichar

This diagnostic is enabled by default.

Diagnostic text:

warning: multi-character character constant

### -Wmultilib-not-found

This diagnostic is enabled by default.

Diagnostic text:

warning: no multilib structure encoded for Arm, Aarch64 and PPC targets

### -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

### -Wnan-infinity-disabled

This diagnostic is enabled by default.

Diagnostic text:

warning: use of |
infinity
NaN
via a macro
| is undefined behavior due to the currently enabled floating-point options

This warning is enabled when source code using the macros `INFINITY` or `NAN` is compiled with floating-point options preventing these two values. This can lead to undefined behavior. Check the order of command line arguments that modify this behavior, such as `-ffast-math`, `-fhonor-infinities`, and `-fhonor-nans` (etc), as well as `#pragma` directives if this diagnostic is generated unexpectedly.

### -Wnarrowing

Synonym for -Wc++11-narrowing.

### -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

### -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

### -Wnoexcept-type

Synonym for -Wc++17-compat-mangling.

### -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-private-apinotes-path

This diagnostic is enabled by default.

Diagnostic text:

warning: private API notes file for module ‘A’ should be named ‘A_private.apinotes’, not ‘B’

### -Wnonportable-private-system-apinotes-path

Diagnostic text:

warning: private API notes file for module ‘A’ should be named ‘A_private.apinotes’, not ‘B’

### -Wnonportable-sycl

This diagnostic is an error by default, but the flag `-Wno-nonportable-sycl` can be used to disable the error.

Diagnostic text:

error: A is not a valid SYCL kernel name type; a non-union class type is required

### -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.

Also controls -Wnontrivial-memcall.

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

### -Wnontrivial-memcall

This diagnostic is enabled by default.

Diagnostic text:

warning: first argument in call to A is a pointer to non-trivially copyable type B

### -Wnrvo

Diagnostic text:

warning: not eliding copy on return

### -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

### -Wnvcc-compat

Diagnostic text:

warning: target-attribute based function overloads are not supported by NVCC and will be treated as a function redeclaration:new declaration is |
__device__
__global__
__host__
__host__ __device__
| function, old declaration is |
__device__
__global__
__host__
__host__ __device__
| function

### -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-cocoa-api

Synonym for -Wobjc-redundant-api-use.

### -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-duplicate-category-definition

This diagnostic is enabled by default.

Diagnostic text:

warning: duplicate definition of category B on interface A

### -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-api-use

Synonym for -Wobjc-redundant-literal-use.

### -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

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

Controls -Wobjc-bool-constant-conversion, -Wobjc-signed-char-bool-implicit-float-conversion, -Wobjc-signed-char-bool-implicit-int-conversion, -Wtautological-objc-bool-compare.

### -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

### -Woctal-prefix-extension

Diagnostic text:

warning: octal integer literals are a Clang extension

### -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

error: type A has |
an attribute
a member with an attribute
| which currently causes the types to be treated as though they are incompatible

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.

### -Wopenacc

Synonym for -Wsource-uses-openacc.

### -Wopenacc-cache-var-inside-loop

This diagnostic is enabled by default.

Diagnostic text:

warning: OpenACC variable in ‘cache’ directive was not declared outside of the associated ‘loop’ directive; directive has no effect

### -Wopenacc-confusing-routine-name

This diagnostic is enabled by default.

Diagnostic text:

warning: OpenACC ‘routine’ directive with a name refers to a function with the same name as the function on the following line; this may be unintended

### -Wopenacc-deprecated-clause-alias

This diagnostic is enabled by default.

Diagnostic text:

warning: OpenACC clause name ‘A’ is a deprecated clause name and is now an alias for ‘B’

### -Wopenacc-self-if-potential-conflict

This diagnostic is enabled by default.

Diagnostic text:

warning: OpenACC construct ‘self’ has no effect when an ‘if’ clause evaluates to true

### -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-extensions, -Wopenmp-future, -Wopenmp-loop-form, -Wopenmp-mapping, -Wopenmp-target, -Wopenmp-target-exception, -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-extensions

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘ompx_attribute’ clause only allows ‘amdgpu_flat_work_group_size’, ‘amdgpu_waves_per_eu’, and ‘launch_bounds’; A is ignored

### -Wopenmp-future

This diagnostic is enabled by default.

Diagnostic text:

warning: directive spelling ‘A’ is introduced in a later OpenMP version

### -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

### -Wopenmp-target-exception

This diagnostic is enabled by default.

Diagnostic text:

warning: target ‘A’ does not support exception handling; ‘throw’ is assumed to be never reached

warning: target ‘A’ does not support exception handling; ‘catch’ block is ignored

### -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: ignoring ‘A’ as it conflicts with that implied by ‘B’ (C)

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 library ‘A=B’ is not supported, OpenMP will not be enabled

warning: the argument ‘A’ is not supported for option ‘B’. Mapping to ‘B C’

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 processor ‘B’

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: /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-init

Synonym for -Winitializer-overrides.

### -Woverride-module

This diagnostic is enabled by default.

Diagnostic text:

warning: overriding the module target triple with A

### -Woverriding-deployment-version

This diagnostic is enabled by default.

Diagnostic text:

warning: overriding deployment version from ‘A’ to ‘B’

### -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-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

Also controls -Wpadded-bitfield.

Diagnostic text:

warning: padding |
struct
interface
class
| B with C |
byte
bit
s
| to align anonymous 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

### -Wpadded-bitfield

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

### -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:

error: comparison in fold expression would evaluate to ‘(X A Y) A Z’ which does not behave the same as a mathematical expression

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

error: chained comparison ‘X A Y B Z’ does not behave the same as a mathematical expression

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

### -Wpartial-availability

Synonym for -Wunguarded-availability.

### -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__

### -Wpch-vfs-diff

This diagnostic is enabled by default.

Diagnostic text:

warning: PCH was compiled with different VFS overlay files than are currently in use

### -Wpedantic

Also controls -Wauto-decl-extensions, -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, -Wc2y-extensions, -Wcomplex-component-init, -Wdelimited-escape-sequence-extension, -Wdollar-in-identifier-extension, -Wembedded-directive, -Wempty-translation-unit, -Wflexible-array-extensions, -Wfuture-attribute-extensions, -Wgnu-anonymous-struct, -Wgnu-auto-type, -Wgnu-case-range, -Wgnu-complex-integer, -Wgnu-compound-literal-initializer, -Wgnu-conditional-omitted-operand, -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-pointer-arith, -Wgnu-redeclared-enum, -Wgnu-statement-expression, -Wgnu-union-cast, -Wgnu-zero-line-directive, -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, -Woctal-prefix-extension, -Woverlength-strings, -Wretained-language-linkage, -Wtentative-definition-incomplete-type, -Wundefined-internal-type, -Wzero-length-array.

Diagnostic text:

warning: enumeration types with a fixed underlying type are a C++11 extension

warning: expression is not an |
integer
integral
| constant expression; folding it to a constant is a GNU extension

warning: variable length arrays are a C99 feature

warning: variable length arrays in C++ are a Clang extension

warning: variable length arrays in C++ are a Clang extension; did you mean to use ‘static_assert’?

warning: designated initializers are a C99 feature

warning: implicit ‘0’ return value from ‘main’ is a C99 extension

warning: referring to ‘main’ within an expression is a Clang extension

warning: defining a type within ‘ |
__builtin_offsetof
offsetof
| ‘ is a C23 extension

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: |
incremented
| enumerator value which exceeds the range of ‘int’ is a C23 extension (B 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: ‘restrict’ qualifier on an array of pointers is a C23 extension

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 ‘~’ 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: signedness of format specifier ‘A’ is incompatible with ‘B’

warning: void |
function
method
block
| A should not return void expression

warning: mixing declarations and code is a C99 extension

warning: declaration of non-local variable in ‘for’ loop is a C23 extension

warning: non-variable declaration in ‘for’ loop is a C23 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 C23 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 C23 extension

warning: attributes on |
a namespace
an enumerator
| declaration are a C++17 extension

warning: [[]] attributes are a C++11 extension

warning: [[]] attributes are a C23 extension

warning: extern templates are a C++11 extension

warning: ‘= delete’ with a message is a C++2c extension

warning: multi-line // comment

warning: // comments are not allowed in this language

warning: ‘A’ in a raw string literal delimiter is a C++2c extension

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: binary integer literals are a C23 extension

warning: #ident is a language extension

warning: #warning is a |
C23
C++23
| 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: passing no argument for the ‘…’ parameter of a variadic macro is a C23 extension

warning: passing no argument for the ‘…’ parameter of a variadic macro is a C++20 extension

warning: empty macro arguments are a C99 feature

warning: variadic macros are a Clang extension in OpenCL

warning: token pasting of ‘,’ and __VA_ARGS__ is a GNU extension

warning: C requires #line number to be less than A, allowed as extension

warning: macro expansion producing ‘defined’ has undefined behavior

warning: use of an empty initializer is a C23 extension

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

### -Wpedantic-macros

This diagnostic is enabled by default.

Controls -Wbuiltin-macro-redefined, -Wdeprecated-pragma, -Wfinal-macro, -Wmacro-redefined, -Wrestrict-expansion.

### -Wperf-constraint-implies-noexcept

Diagnostic text:

warning: |
function
constructor
destructor
lambda
block
| with ‘B’ attribute should be declared noexcept

### -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 |
‘B’
function ‘B’
array ‘B’
lambda function pointer conversion operator
| 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: multiple return statements in constexpr function 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: use of this statement in a constexpr |
function
constructor
| is incompatible with C++ standards before C++14

warning: variable templates are incompatible with C++ standards before C++14

warning: constexpr function with no return statements 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

### -Wpre-c++14-compat-pedantic

Controls -Wc++98-c++11-compat-binary-literal, -Wpre-c++14-compat.

### -Wpre-c++17-compat

Diagnostic text:

warning: decomposition declarations are incompatible with C++ standards before C++17

warning: inline variables are incompatible with C++ standards before C++17

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: 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: 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 declaration in function call with explicit template arguments 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: class template argument deduction for alias templates is 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: decomposition declaration declared |
‘B’
with ‘B’ specifiers
| is incompatible with C++ standards before C++20

warning: missing ‘typename’ prior to dependent type name A 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: virtual constexpr functions are 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

warning: ‘consteval’ specifier is incompatible with C++ standards before C++20

warning: ‘constinit’ specifier is incompatible with C++ standards before C++20

### -Wpre-c++20-compat-pedantic

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

Diagnostic text:

warning: designated initializers are incompatible with C++ standards before C++20

warning: invoking a pointer to a ‘const &’ member function on an rvalue is incompatible with C++ standards before C++20

### -Wpre-c++23-compat

Diagnostic text:

warning: definition of a |
static
thread_local
| variable in a constexpr |
function
constructor
| is incompatible with C++ standards before C++23

warning: use of this statement in a constexpr |
function
constructor
| is incompatible with C++ standards before C++23

warning: overloaded A with |
no
a defaulted
more than one
| parameter is a C++23 extension

warning: alias declaration in this context is incompatible with C++ standards before C++23

warning: ‘auto’ as a functional-style cast is incompatible with C++ standards before C++23

warning: consteval if is incompatible with C++ standards before C++23

warning: definition of a variable of non-literal type in a constexpr |
function
constructor
| is incompatible with C++ standards before C++23

warning: |
an attribute specifier sequence
B
| in this position is incompatible with C++ standards before C++23

warning: label at end of compound statement is incompatible with C++ standards before C++23

warning: declaring overloaded A as ‘static’ is incompatible with C++ standards before C++23

warning: ‘size_t’ suffix for literals is incompatible with C++ standards before C++23

warning: static lambdas are incompatible with C++ standards before C++23

warning: use of a ‘# |
<BUG IF SEEN>
elifdef
elifndef
| ‘ directive is incompatible with C++ standards before C++23

warning: #warning is incompatible with C++ standards before C++23

warning: |
delimited
named
| escape sequences are incompatible with C++ standards before C++23

### -Wpre-c++23-compat-pedantic

Synonym for -Wpre-c++23-compat.

### -Wpre-c++26-compat

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

Diagnostic text:

warning: structured binding declaration in a condition is incompatible with C++ standards before C++2c

warning: ‘static_assert’ with a user-generated message is incompatible with C++ standards before C++26

warning: structured binding packs are incompatible with C++ standards before C++2c

warning: an attribute specifier sequence attached to a structured binding declaration is incompatible with C++ standards before C++2c

warning: ‘= delete’ with a message is incompatible with C++ standards before C++2c

warning: pack indexing is incompatible with C++ standards before C++2c

warning: placeholder variables are incompatible with C++ standards before C++2c

warning: variadic ‘friend’ declarations are incompatible with C++ standards before C++2c

warning: ‘A’ in a raw string literal delimiter is incompatible with standards before C++2c

warning: A is no longer a pack expansion but a pack indexing type; add a name to specify a pack expansion

warning: ‘ |
trivially_relocatable
replaceable
| _if_eligible’ keyword is incompatible with standards before C++2c

### -Wpre-c++26-compat-pedantic

Synonym for -Wpre-c++26-compat.

### -Wpre-c++2c-compat

Synonym for -Wpre-c++26-compat.

### -Wpre-c++2c-compat-pedantic

Synonym for -Wpre-c++26-compat-pedantic.

### -Wpre-c11-compat

Diagnostic text:

warning: ‘A’ is incompatible with C standards before C11

### -Wpre-c11-compat-pedantic

Synonym for -Wpre-c11-compat.

### -Wpre-c23-compat

Also controls -Wvariadic-macro-arguments-omitted.

Diagnostic text:

warning: ‘…’ as the only parameter of a function is incompatible with C standards before C23

warning: enumeration types with a fixed underlying type are incompatible with C standards before C23

warning: |
incremented
| enumerator value which exceeds the range of ‘int’ is incompatible with C standards before C23 (B is too |
small
large
| )

warning: ‘_Static_assert’ with no message is incompatible with C standards before C23

warning: unicode literals are incompatible with C standards before C23

warning: passing only one argument to ‘va_start’ is incompatible with C standards before C23

warning: declaration of non-local variable in ‘for’ loop is incompatible with C standards before C23

warning: non-variable declaration in ‘for’ loop is incompatible with C standards before C23

warning: binary integer literals are incompatible with C standards before C23

warning: ‘_BitInt’ suffix for literals is incompatible with C standards before C23

warning: digit separators are incompatible with C standards before C23

warning: use of an empty initializer is incompatible with C standards before C23

warning: ‘A’ is incompatible with C standards before C23

warning: label at end of compound statement is incompatible with C standards before C23

warning: label followed by a declaration is incompatible with C standards before C23

warning: universal character name referring to a control character is incompatible with C standards before C23

warning: specifying character ‘A’ with a universal character name is incompatible with C standards before C23

warning: use of a ‘# |
<BUG IF SEEN>
elifdef
elifndef
| ‘ directive is incompatible with C standards before C23

warning: ‘restrict’ qualifier on an array of pointers is incompatible with C standards before C23

warning: #warning is incompatible with C standards before C23

warning: #embed is incompatible with C standards before C23

warning: [[]] attributes are incompatible with C standards before C23

### -Wpre-c23-compat-pedantic

Synonym for -Wpre-c23-compat.

### -Wpre-c2x-compat

Synonym for -Wpre-c23-compat.

### -Wpre-c2x-compat-pedantic

Synonym for -Wpre-c23-compat-pedantic.

### -Wpre-c2y-compat

Diagnostic text:

warning: ‘alignof’ on an incomplete array type is incompatible with C standards before C2y

warning: use of incomplete type A in a ‘_Generic’ association is incompatible with C standards before C2y

warning: passing a type argument as the first operand to ‘_Generic’ is incompatible with C standards before C2y

warning: ‘ |
–
++
| ‘ on an object of complex type is incompatible with C standards before C2y

warning: ‘A’ is incompatible with C standards before C2y

warning: octal integer literals are incompatible with standards before C2y

warning: delimited escape sequences are incompatible with C standards before C2y

warning: case ranges are incompatible with C standards before C2y

warning: imaginary constants are incompatible with C standards before C2y

### -Wpre-c2y-compat-pedantic

Synonym for -Wpre-c2y-compat.

### -Wpre-openmp-51-compat

Diagnostic text:

warning: specifying OpenMP directives with [[]] is incompatible with OpenMP standards before OpenMP 5.1

### -Wpredefined-identifier-outside-function

This diagnostic is enabled by default.

Diagnostic text:

warning: predefined identifier is only valid inside function

### -Wpreferred-type-bitfield-enum-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: bit-field A is not wide enough to store all enumerators of preferred type B

warning: signed bit-field A needs an extra bit to represent the largest positive enumerators of preferred type B

warning: assigning value of preferred signed enum type B to unsigned bit-field A; negative enumerators of enum B will be converted to positive values

### -Wpreferred-type-bitfield-width

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

### -Wprivate-extern

This diagnostic is enabled by default.

Diagnostic text:

warning: use of __private_extern__ on a declaration may not produce external symbol private to the linkage unit and is deprecated

### -Wprivate-header

This diagnostic is an error by default, but the flag `-Wno-private-header` can be used to disable the error.

Diagnostic text:

error: use of private header from outside its module: ‘A’

### -Wprivate-module

This diagnostic is enabled by default.

Diagnostic text:

warning: expected canonical name for private module ‘A’

warning: private submodule ‘A’ in private module map, expected top-level module

warning: module ‘A’ already re-exported as ‘B’

warning: no submodule named A in module ‘B’; using top level ‘C’

### -Wprofile-instr-missing

Diagnostic text:

warning: profile data may be incomplete: of A function |
s
| , B |
has
have
| no data

### -Wprofile-instr-out-of-date

This diagnostic is enabled by default.

Diagnostic text:

warning: profile data may be out of date: of A function |
s
| , B |
has
have
| mismatched data that will be ignored

### -Wprofile-instr-unprofiled

This diagnostic is enabled by default.

Diagnostic text:

warning: no profile data available for file “A”

### -Wproperty-access-dot-syntax

This diagnostic is enabled by default.

Diagnostic text:

warning: property A not found on object of type B; did you mean to access property C?

### -Wproperty-attribute-mismatch

This diagnostic is enabled by default.

Diagnostic text:

warning: property attribute in class extension does not match the primary class

warning: ‘B’ attribute on property A does not match the property inherited from C

warning: getter name mismatch between property redeclaration (B) and its original declaration (A)

warning: attribute ‘readonly’ of property A restricts attribute ‘readwrite’ of property inherited from B

### -Wprotocol

This diagnostic is enabled by default.

Diagnostic text:

warning: method A in protocol B not implemented

### -Wprotocol-property-synthesis-ambiguity

This diagnostic is enabled by default.

Diagnostic text:

warning: property |
of type B
with attribute ‘B’
without attribute ‘B’
with getter B
with setter B
| was selected for synthesis

### -Wpsabi

This diagnostic is enabled by default.

Diagnostic text:

warning: AVX vector |
return
argument
| of type B without ‘C’ enabled changes the ABI

### -Wptrauth-null-pointers

This diagnostic is enabled by default.

Diagnostic text:

warning: authenticating a null pointer will almost certainly trap

warning: signing a null pointer will yield a non-null pointer

### -Wqualified-void-return-type

This diagnostic is enabled by default.

Diagnostic text:

warning: function cannot return qualified void type A

### -Wquoted-include-in-framework-header

Diagnostic text:

warning: double-quoted include “A” in framework header, expected angle-bracketed instead

### -Wrange-loop-analysis

Controls -Wrange-loop-bind-reference, -Wrange-loop-construct.

### -Wrange-loop-bind-reference

Diagnostic text:

warning: loop variable A binds to a temporary value produced by a range of type B

### -Wrange-loop-construct

Diagnostic text:

warning: loop variable A |
of type B binds to a temporary constructed from type C
binds to a temporary constructed from a different type

warning: loop variable A creates a copy from type B

### -Wread-only-types

This diagnostic is enabled by default.

Diagnostic text:

warning: object of type A cannot be placed in read-only memory

### -Wreadonly-iboutlet-property

This diagnostic is enabled by default.

Diagnostic text:

warning: readonly IBOutlet property A when auto-synthesized may not work correctly with ‘nib’ loader

### -Wreceiver-expr

This diagnostic is enabled by default.

Diagnostic text:

warning: receiver type A is not ‘id’ or interface pointer, consider casting it to ‘id’

### -Wreceiver-forward-class

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

Diagnostic text:

warning: receiver A is a forward class and corresponding @interface may not exist

warning: receiver type A for instance message is a forward declaration

### -Wredeclared-class-member

This diagnostic is enabled by default.

Diagnostic text:

warning: class member cannot be redeclared

### -Wreduced-bmi-output-overrided

This diagnostic is enabled by default.

Diagnostic text:

warning: the implicit output of reduced BMI may be overrided by the output file specified by ‘–precompile’. please consider use ‘-fmodule-output=’ to specify the output file for reduced BMI explicitly

### -Wredundant-attribute

This diagnostic is enabled by default.

Diagnostic text:

warning: redundant ‘sycl_kernel_entry_point’ attribute

### -Wredundant-consteval-if

This diagnostic is enabled by default.

Diagnostic text:

warning: consteval if is always true in an |
unevaluated
immediate
| context

### -Wredundant-decls

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

### -Wredundant-move

Diagnostic text:

warning: redundant move in return statement

### -Wredundant-parens

Diagnostic text:

warning: redundant parentheses surrounding declarator

### -Wregister

This diagnostic is enabled by default.

Also controls -Wdeprecated-register.

Diagnostic text:

error: ISO C++17 does not allow ‘register’ storage class specifier

### -Wreinterpret-base-class

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘reinterpret_cast’ |
from
to
| class A |
to
from
| its |
virtual base
base at non-zero offset
| B behaves differently from ‘static_cast’

### -Rremark-backend-plugin

Diagnostic text:

The text of this diagnostic is not controlled by Clang.

### -Wreorder

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

Controls -Wreorder-ctor, -Wreorder-init-list.

### -Wreorder-ctor

Diagnostic text:

warning: |
field
base class
| B will be initialized after |
field
base
| D

warning: initializer order does not match the declaration order

### -Wreorder-init-list

This diagnostic is enabled by default.

Diagnostic text:

warning: ISO C++ requires field designators to be specified in declaration order; field B will be initialized after field A

### -Wrequires-super-attribute

This diagnostic is enabled by default.

Diagnostic text:

warning: A attribute cannot be applied to |
methods in protocols
dealloc

### -Wreserved-attribute-identifier

Diagnostic text:

warning: A is a reserved attribute identifier

### -Wreserved-id-macro

Synonym for -Wreserved-macro-identifier.

### -Wreserved-identifier

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

Also controls -Wreserved-attribute-identifier, -Wreserved-macro-identifier, -Wreserved-module-identifier, -Wuser-defined-literals.

Diagnostic text:

warning: identifier A is reserved because |
<ERROR>
it starts with ‘_’ at global scope
it starts with ‘_’ and has C language linkage
it starts with ‘__’
it starts with ‘_’ followed by a capital letter
it contains ‘__’

### -Wreserved-macro-identifier

Diagnostic text:

warning: macro name is a reserved identifier

### -Wreserved-module-identifier

This diagnostic is enabled by default.

Diagnostic text:

warning: A is a reserved name for a module

### -Wreserved-user-defined-literal

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

Also controls -Wc++11-compat-reserved-user-defined-literal.

Diagnostic text:

warning: invalid suffix on literal; C++11 requires a space between literal and identifier

error: invalid suffix on literal; C++11 requires a space between literal and identifier

### -Wrestrict-expansion

This diagnostic is enabled by default.

Diagnostic text:

warning: macro A has been marked as unsafe for use in headers |
: C

### -Wretained-language-linkage

Diagnostic text:

warning: friend function A retaining previous language linkage is an extension

### -Wreturn-local-addr

Synonym for -Wreturn-stack-address.

### -Wreturn-mismatch

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

Diagnostic text:

error: |
void function
void method
constructor
destructor
| A should not return a value

error: non-void |
function
method
| A should return a value

error: non-void |
function
method
| A should return a value

### -Wreturn-stack-address

This diagnostic is enabled by default.

Diagnostic text:

warning: passing |
address of
reference to
| local temporary object to musttail function

warning: returning address of label, which is local

warning: returning |
address of
reference to
| local temporary object

warning: |
address of
reference to
| stack memory associated with |
local variable
parameter
compound literal
| B |
returned
passed to musttail function

### -Wreturn-std-move

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

### -Wreturn-type

This diagnostic is enabled by default.

Also controls -Wreturn-mismatch, -Wreturn-type-c-linkage.

Diagnostic text:

warning: non-void |
function
block
lambda
coroutine
| does not return a value |
in all control paths

### -Wreturn-type-c-linkage

This diagnostic is enabled by default.

Diagnostic text:

warning: A has C-linkage specified, but returns user-defined type B which is incompatible with C

warning: A has C-linkage specified, but returns incomplete type B which could be incompatible with C

### -Wrewrite-not-bool

This diagnostic is enabled by default.

Diagnostic text:

warning: ISO C++20 requires return type of selected ‘operator==’ function for rewritten ‘B’ comparison to be ‘bool’, not A

### -Rround-trip-cc1-args

Diagnostic text:

remark: generated arguments #A in round-trip: B

### -Wrtti

This diagnostic is enabled by default.

Diagnostic text:

warning: dynamic_cast will not work since RTTI data is disabled by |
-fno-rtti-data
/GR-

warning: typeid will not work since RTTI data is disabled by |
-fno-rtti-data
/GR-

### -Rsanitize-address

Diagnostic text:

remark: -fsanitize-address-field-padding applied to A

remark: -fsanitize-address-field-padding ignored for A because it |
is not C++
is packed
is a union
is trivially copyable
has trivial destructor
is standard layout
is in a ignorelisted file
is ignorelisted

### -Wsarif-format-unstable

This diagnostic is enabled by default.

Diagnostic text:

warning: diagnostic formatting in SARIF mode is currently unstable

### -Rsearch-path-usage

Diagnostic text:

remark: search path used: ‘A’

### -Wsection

This diagnostic is enabled by default.

Diagnostic text:

warning: section attribute is specified on redeclared variable

warning: duplicate code segment specifiers

warning: |
codeseg
section
| does not match previous declaration

### -Wselector

Also controls -Wselector-type-mismatch.

Diagnostic text:

warning: no method with selector A is implemented in this translation unit

### -Wselector-type-mismatch

Diagnostic text:

warning: several methods with selector A of mismatched types are found for the @selector expression

### -Wself-assign

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

Also controls -Wself-assign-field, -Wself-assign-overloaded.

Diagnostic text:

warning: explicitly assigning value of variable of type A to itself |
; did you mean to assign to member C?

### -Wself-assign-field

This diagnostic is enabled by default.

Diagnostic text:

warning: assigning |
field
instance variable
| to itself

### -Wself-assign-overloaded

Diagnostic text:

warning: explicitly assigning value of variable of type A to itself |
; did you mean to assign to member C?

### -Wself-move

Diagnostic text:

warning: explicitly moving variable of type A to itself |
; did you mean to move to member C?

### -Wsemicolon-before-method-body

Diagnostic text:

warning: semicolon before method body is ignored

### -Wsentinel

This diagnostic is enabled by default.

Diagnostic text:

warning: missing sentinel in |
function call
method dispatch
block call

warning: not enough variable arguments in A declaration to fit a sentinel

### -Wsequence-point

Synonym for -Wunsequenced.

### -Wserialized-diagnostics

This diagnostic is enabled by default.

Diagnostic text:

warning: unable to open file A for serializing diagnostics (B)

warning: received warning after diagnostic serialization teardown was underway: A

warning: unable to merge a subprocess’s serialized diagnostics

### -Wshadow

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

Also controls -Wshadow-field-in-constructor-modified, -Wshadow-ivar.

Diagnostic text:

warning: declaration shadows a |
local variable
variable in C
static data member of C
field of C
typedef in C
type alias in C
structured binding

### -Wshadow-all

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

Controls -Wshadow, -Wshadow-field, -Wshadow-field-in-constructor, -Wshadow-uncaptured-local.

### -Wshadow-field

Diagnostic text:

warning: |
parameter
non-static data member
| A |
of B
| shadows member inherited from type C

### -Wshadow-field-in-constructor

Also controls -Wshadow-field-in-constructor-modified.

Diagnostic text:

warning: constructor parameter A shadows the field B of C

### -Wshadow-field-in-constructor-modified

Diagnostic text:

warning: modifying constructor parameter A that shadows a field of B

### -Wshadow-ivar

This diagnostic is enabled by default.

Diagnostic text:

warning: local declaration of A hides instance variable

### -Wshadow-uncaptured-local

Diagnostic text:

warning: declaration shadows a |
local variable
variable in C
static data member of C
field of C
typedef in C
type alias in C
structured binding

### -Wshift-bool

Diagnostic text:

warning: right shifting a ‘bool’ implicitly converts it to ‘int’

### -Wshift-count-negative

This diagnostic is enabled by default.

Diagnostic text:

warning: shift count is negative

### -Wshift-count-overflow

This diagnostic is enabled by default.

Diagnostic text:

warning: shift count >= width of type

### -Wshift-negative-value

This diagnostic is enabled by default.

Diagnostic text:

warning: shifting a negative signed value is undefined

### -Wshift-op-parentheses

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wshift-overflow

This diagnostic is enabled by default.

Diagnostic text:

warning: signed shift result (A) requires B bits to represent, but C only has D bits

### -Wshift-sign-overflow

Diagnostic text:

warning: signed shift result (A) sets the sign bit of the shift expression’s type (B) and becomes negative

### -Wshorten-64-to-32

Diagnostic text:

warning: implicit conversion loses integer precision: A to B

### -Wsign-compare

Diagnostic text:

warning: comparison of integers of different signs: A and B

### -Wsign-conversion

Diagnostic text:

warning: implicit conversion changes signedness: A to B

warning: operand of ? changes signedness: A to B

warning: the resulting value is always non-negative after implicit conversion

### -Wsign-promo

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

### -Wsigned-enum-bitfield

Diagnostic text:

warning: enums in the Microsoft ABI are signed integers by default; consider giving the enum A an unsigned underlying type to make this code portable

### -Wsigned-unsigned-wchar

This diagnostic is an error by default, but the flag `-Wno-signed-unsigned-wchar` can be used to disable the error.

Diagnostic text:

error: ‘A’ cannot be signed or unsigned

### -Wsingle-bit-bitfield-constant-conversion

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wsizeof-array-argument

This diagnostic is enabled by default.

Diagnostic text:

warning: sizeof on array function parameter will return size of A instead of B

### -Wsizeof-array-decay

This diagnostic is enabled by default.

Diagnostic text:

warning: sizeof on pointer operation will return size of A instead of B

### -Wsizeof-array-div

This diagnostic is enabled by default.

Diagnostic text:

warning: expression does not compute the number of elements in this array; element type is A, not B

### -Wsizeof-pointer-div

This diagnostic is enabled by default.

Diagnostic text:

warning: A will return the size of the pointer, not the array itself

### -Wsizeof-pointer-memaccess

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘A’ call operates on objects of type B while the size is based on a different type C

warning: argument to ‘sizeof’ in A call is the same pointer type B as the |
destination
source
| ; expected D or an explicit length

### -Wslash-u-filename

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘/U A’ treated as the ‘/U’ option

### -Wslh-asm-goto

This diagnostic is enabled by default.

Diagnostic text:

warning: speculative load hardening does not protect functions with asm goto

### -Rsloc-usage

This diagnostic is enabled by default.

Diagnostic text:

remark: source manager location address space usage:

### -Wsometimes-uninitialized

Diagnostic text:

warning: variable A is |
used
captured
| uninitialized whenever |
‘D’ condition is |
true
false
‘D’ loop |
is entered
exits because its condition is false
‘D’ loop |
condition is true
exits because its condition is false
switch D is taken
its declaration is reached
D is called

### -Wsource-mgr

This diagnostic is enabled by default.

Diagnostic text:

The text of this diagnostic is not controlled by Clang.

### -Wsource-uses-openacc

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

Diagnostic text:

warning: OpenACC construct ‘routine’ with implicit function not yet implemented, pragma ignored

warning: OpenACC directives will result in no runtime behavior; use -fclangir to enable runtime effect

warning: unexpected ‘#pragma acc …’ in program

### -Wsource-uses-openmp

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

Diagnostic text:

warning: ‘#pragma omp declare variant’ cannot be applied to the function that was defined already; the original function might be used

warning: ‘#pragma omp declare variant’ cannot be applied for function after first usage; the original function might be used

warning: variant function in ‘#pragma omp declare variant’ is itself marked as ‘#pragma omp declare variant’

warning: score expressions in the OpenMP context selector need to be constant; A is not and will be ignored

warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct

warning: expected ‘#pragma omp end declare target’ at end of file to match ‘#pragma omp A’

warning: unexpected ‘#pragma omp …’ in program

warning: isa trait ‘A’ is not known to the current target; verify the spelling or consider restricting the context selector with the ‘arch’ selector further

### -Wspir-compat

Diagnostic text:

warning: sampler initializer has invalid A bits

### -Wspirv-compat

Synonym for -Wspir-compat.

### -Wstack-exhausted

This diagnostic is enabled by default.

Diagnostic text:

warning: stack nearly exhausted; compilation time may suffer, and crashes due to stack overflow are likely

### -Wstack-protector

This diagnostic is enabled by default.

Diagnostic text:

warning: unable to protect inline asm that clobbers stack pointer against stack clash

### -Wstatic-float-init

This diagnostic is enabled by default.

Also controls -Wgnu-static-float-init.

Diagnostic text:

error: in-class initializer for static data member of type A requires ‘constexpr’ specifier

### -Wstatic-in-inline

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

Diagnostic text:

warning: static |
function
variable
| B is used in an inline function with external linkage

warning: static |
function
variable
| B is used in an inline function with external linkage

### -Wstatic-inline-explicit-instantiation

This diagnostic is enabled by default.

Diagnostic text:

warning: ignoring ‘ |
static
inline
| ‘ keyword on explicit template instantiation

### -Wstatic-local-in-inline

This diagnostic is enabled by default.

Diagnostic text:

warning: non-constant static local variable in inline function may be different in different files

### -Wstatic-self-init

This diagnostic is enabled by default.

Diagnostic text:

warning: static variable A is suspiciously used within its own initialization

### -Wstdlibcxx-not-found

This diagnostic is enabled by default.

Diagnostic text:

warning: include path for libstdc++ headers not found; pass ‘-stdlib=libc++’ on the command line to use the libc++ standard library instead

### -Wstrict-aliasing

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

### -Wstrict-aliasing=0

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

### -Wstrict-aliasing=1

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

### -Wstrict-aliasing=2

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

### -Wstrict-overflow

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

### -Wstrict-overflow=0

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

### -Wstrict-overflow=1

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

### -Wstrict-overflow=2

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

### -Wstrict-overflow=3

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

### -Wstrict-overflow=4

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

### -Wstrict-overflow=5

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

### -Wstrict-potentially-direct-selector

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

Also controls -Wpotentially-direct-selector.

Diagnostic text:

warning: @selector expression formed with potentially direct selector A

### -Wstrict-primary-template-shadow

This diagnostic is an error by default, but the flag `-Wno-strict-primary-template-shadow` can be used to disable the error.

Diagnostic text:

error: declaration of A shadows template parameter

### -Wstrict-prototypes

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

Also controls -Wdeprecated-non-prototype.

Diagnostic text:

warning: a |
function
block
| declaration without a prototype is deprecated |
in all versions of C

### -Wstrict-selector-match

Diagnostic text:

warning: multiple methods named A found

### -Wstring-compare

This diagnostic is enabled by default.

Diagnostic text:

warning: result of comparison against |
a string literal
@encode
| is unspecified (use an explicit string comparison function instead)

### -Wstring-concatenation

Diagnostic text:

warning: suspicious concatenation of string literals in an array initialization; did you mean to separate the elements with a comma?

### -Wstring-conversion

Diagnostic text:

warning: implicit conversion turns string literal into bool: A to B

### -Wstring-plus-char

This diagnostic is enabled by default.

Diagnostic text:

warning: adding A to a string pointer does not append to the string

### -Wstring-plus-int

This diagnostic is enabled by default.

Diagnostic text:

warning: adding A to a string does not append to the string

### -Wstrlcpy-strlcat-size

This diagnostic is enabled by default.

Diagnostic text:

warning: size argument in A call appears to be size of the source; expected the size of the destination

### -Wstrncat-size

This diagnostic is enabled by default.

Diagnostic text:

warning: the value of the size argument in ‘strncat’ is too large, might lead to a buffer overflow

warning: size argument in ‘strncat’ call appears to be size of the source

warning: the value of the size argument to ‘strncat’ is wrong

### -Wsuggest-destructor-override

Diagnostic text:

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

### -Wsuggest-override

Diagnostic text:

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

### -Wsuper-class-method-mismatch

Diagnostic text:

warning: method parameter type |
A does not match super class method parameter type B
does not match super class method parameter type

### -Wsuspicious-bzero

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘size’ argument to bzero is ‘0’

### -Wsuspicious-memaccess

This diagnostic is enabled by default.

Controls -Wdynamic-class-memaccess, -Wmemset-transposed-args, -Wnontrivial-memaccess, -Wsizeof-pointer-memaccess, -Wsuspicious-bzero.

### -Wswift-name-attribute

This diagnostic is enabled by default.

Diagnostic text:

warning: A attribute cannot be applied to this declaration

warning: A attribute cannot be applied to a |
function
method
| with no parameters

warning: A attribute argument must be a string literal specifying a Swift function name

warning: A attribute for getter must not have any parameters besides ‘self:’

warning: A attribute has invalid identifier for the |
base
context
parameter
| name

warning: A attribute is missing parameter label clause

warning: A attribute cannot specify more than one ‘self:’ parameter

warning: too |
few
many
| parameters in the signature specified by the B attribute (expected C; got D)

warning: A attribute for setter must have one parameter for new value

warning: A attribute for ‘subscript’ getter cannot have a ‘newValue:’ parameter

warning: A attribute for ‘subscript’ must |
be a getter or setter
have at least one parameter
have a ‘self:’ parameter

warning: A attribute for ‘subscript’ setter cannot have multiple ‘newValue:’ parameters

warning: A attribute for ‘subscript’ setter must have a ‘newValue:’ parameter

### -Wswitch

This diagnostic is enabled by default.

Diagnostic text:

warning: overflow converting case value to switch condition type (A to B)

warning: |
enumeration value B not handled in switch
enumeration values B and C not handled in switch
enumeration values B, C, and D not handled in switch
A enumeration values not handled in switch: B, C, D…

warning: case value not in enumerated type A

### -Wswitch-bool

This diagnostic is enabled by default.

Diagnostic text:

warning: switch condition has boolean value

### -Wswitch-default

Diagnostic text:

warning: ‘switch’ missing ‘default’ label

### -Wswitch-enum

Diagnostic text:

warning: |
enumeration value B not explicitly handled in switch
enumeration values B and C not explicitly handled in switch
enumeration values B, C, and D not explicitly handled in switch
A enumeration values not explicitly handled in switch: B, C, D…

### -Wsync-alignment

This diagnostic is enabled by default.

Diagnostic text:

warning: __sync builtin operation must have natural alignment (consider using __atomic)

### -Wsync-fetch-and-nand-semantics-changed

This diagnostic is enabled by default.

Diagnostic text:

warning: the semantics of this intrinsic changed with GCC version 4.4 - the newer semantics are provided here

### -Wsynth

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

### -Wtarget-clones-mixed-specifiers

This diagnostic is enabled by default.

Diagnostic text:

warning: mixing ‘target_clones’ specifier mechanisms is permitted for GCC compatibility; use a comma separated sequence of string literals, or a string literal containing a comma-separated list of versions

### -Wtautological-bitwise-compare

Diagnostic text:

warning: bitwise comparison always evaluates to |
false
true

warning: bitwise or with non-zero value always evaluates to true

### -Wtautological-compare

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

Also controls -Wtautological-bitwise-compare, -Wtautological-constant-compare, -Wtautological-negation-compare, -Wtautological-objc-bool-compare, -Wtautological-overlap-compare, -Wtautological-pointer-compare, -Wtautological-undefined-compare.

Diagnostic text:

warning: |
aligning a value
the result of checking whether a value is aligned
| to 1 byte is |
a no-op
always true

warning: |
self-
array
pointer
| comparison always evaluates to |
a constant
true
false
‘std::strong_ordering::equal’

### -Wtautological-constant-compare

This diagnostic is enabled by default.

Also controls -Wtautological-constant-out-of-range-compare.

Diagnostic text:

warning: converting the result of ‘?:’ with integer constants to a boolean always evaluates to ‘true’

warning: converting the result of ‘<<’ to a boolean always evaluates to |
false
true

warning: result of comparison of |
constant A
true
false
| with |
expression of type C
boolean expression
| is always E

### -Wtautological-constant-in-range-compare

Controls -Wtautological-value-range-compare, -Wtype-limits.

### -Wtautological-constant-out-of-range-compare

This diagnostic is enabled by default.

Diagnostic text:

warning: result of comparison of |
constant A
true
false
| with |
expression of type C
boolean expression
| is always E

### -Wtautological-negation-compare

Diagnostic text:

warning: ‘&&’ of a value and its negation always evaluates to false

warning: ‘||’ of a value and its negation always evaluates to true

### -Wtautological-objc-bool-compare

This diagnostic is enabled by default.

Diagnostic text:

warning: result of comparison of constant A with expression of type ‘BOOL’ is always B, as the only well defined values for ‘BOOL’ are YES and NO

### -Wtautological-overlap-compare

Diagnostic text:

warning: |
non-
| overlapping comparisons always evaluate to |
false
true

### -Wtautological-pointer-compare

This diagnostic is enabled by default.

Diagnostic text:

warning: comparison of nonnull |
function call
parameter
| ‘B’ |
not
| equal to a null pointer is ‘ |
true
false
| ‘ on first encounter

warning: comparison of |
address of
function
array
| ‘B’ |
not
| equal to a null pointer is always |
true
false

### -Wtautological-type-limit-compare

Diagnostic text:

warning: result of comparison |
D
B
| C |
B
D
| is always E

### -Wtautological-undefined-compare

This diagnostic is enabled by default.

Diagnostic text:

warning: reference cannot be bound to dereferenced null pointer in well-defined C++ code; comparison may be assumed to always evaluate to |
true
false

warning: ‘this’ pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to |
true
false

### -Wtautological-unsigned-char-zero-compare

Diagnostic text:

warning: result of comparison of |
D
char expression
| C |
char expression
D
| is always E, since char is interpreted as unsigned

### -Wtautological-unsigned-enum-zero-compare

Diagnostic text:

warning: result of comparison of |
D
unsigned enum expression
| C |
unsigned enum expression
D
| is always E

### -Wtautological-unsigned-zero-compare

Diagnostic text:

warning: result of comparison of |
D
unsigned expression
| C |
unsigned expression
D
| is always E

### -Wtautological-value-range-compare

Diagnostic text:

warning: result of comparison of |
E
B-bit |
signed
unsigned
| value
| D |
B-bit |
signed
unsigned
| value
E
| is always F

### -Wtcb-enforcement

This diagnostic is enabled by default.

Diagnostic text:

warning: calling A is a violation of trusted computing base ‘B’

### -Wtemplate-in-declaration-name

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘template’ cannot be used after a declarative nested name specifier

### -Wtentative-definition-array

This diagnostic is enabled by default.

Diagnostic text:

warning: tentative array definition assumed to have one element

### -Wtentative-definition-compat

Diagnostic text:

warning: duplicate declaration of A is invalid in C++

### -Wtentative-definition-incomplete-type

Diagnostic text:

warning: tentative definition of variable with internal linkage has incomplete |
non-array
array
| type B

### -Wthread-safety

Controls -Wthread-safety-analysis, -Wthread-safety-attributes, -Wthread-safety-precise, -Wthread-safety-reference.

### -Wthread-safety-analysis

Diagnostic text:

warning: A ‘B’ must be acquired before ‘C’

warning: cycle in acquired_before/after dependencies, starting with ‘A’

warning: cannot resolve lock expression

warning: acquiring A ‘B’ that is already held

warning: did not expect A ‘C’ to be managed by ‘B’

warning: A ‘C’ not managed by ‘B’

warning: expecting A ‘B’ to be held at start of each loop |
with equal reentrancy depth

warning: expecting A ‘B’ to be held at the end of function

warning: cannot call function ‘B’ while A ‘C’ is held

warning: calling function B requires holding A |
‘C’
‘C’ exclusively

warning: calling function A requires negative capability ‘B’

warning: A ‘B’ is acquired exclusively and shared in the same scope

warning: A ‘B’ is not held on every path through here |
with equal reentrancy depth

warning: A ‘B’ is still held at the end of function

warning: releasing A ‘B’ that was not held

warning: releasing A ‘B’ using |
shared
exclusive
| access, expected |
shared
exclusive
| access

warning: A managed by ‘B’ is ‘D’ instead of ‘C’

warning: |
reading
writing
| the value pointed to by A requires holding |
any mutex
any mutex exclusively

warning: |
reading
writing
| the value pointed to by B requires holding A |
‘C’
‘C’ exclusively

warning: |
reading
writing
| variable A requires holding |
any mutex
any mutex exclusively

warning: |
reading
writing
| variable B requires holding A |
‘C’
‘C’ exclusively

### -Wthread-safety-attributes

Diagnostic text:

warning: A attribute requires arguments whose type is annotated with ‘capability’ attribute; type here is B

warning: A attribute can only be applied in a context annotated with ‘capability’ attribute

warning: A only applies to pointer types; type here is B

warning: ignoring A attribute because its argument is invalid

warning: A attribute without capability arguments refers to ‘this’, but B isn’t annotated with ‘capability’ or ‘scoped_lockable’ attribute

warning: A attribute without capability arguments can only be applied to non-static methods of a class

warning: A attribute applies to function parameters only if their type is a reference to a ‘scoped_lockable’-annotated type

warning: A attribute on B must be preceded by C attribute

### -Wthread-safety-beta

Diagnostic text:

warning: thread safety beta warning

### -Wthread-safety-negative

Diagnostic text:

warning: acquiring A ‘B’ requires negative capability ‘C’

### -Wthread-safety-pointer

Diagnostic text:

warning: passing pointer to variable B requires holding A |
‘C’
‘C’ exclusively

warning: returning pointer to variable B requires holding A |
‘C’
‘C’ exclusively

warning: passing pointer B requires holding A |
‘C’
‘C’ exclusively

warning: returning pointer B requires holding A |
‘C’
‘C’ exclusively

### -Wthread-safety-precise

Diagnostic text:

warning: calling function B requires holding A |
‘C’
‘C’ exclusively

warning: |
reading
writing
| the value pointed to by B requires holding A |
‘C’
‘C’ exclusively

warning: |
reading
writing
| variable B requires holding A |
‘C’
‘C’ exclusively

### -Wthread-safety-reference

Also controls -Wthread-safety-reference-return.

Diagnostic text:

warning: passing variable B by reference requires holding A |
‘C’
‘C’ exclusively

warning: passing the value that B points to by reference requires holding A |
‘C’
‘C’ exclusively

### -Wthread-safety-reference-return

Diagnostic text:

warning: returning variable B by reference requires holding A |
‘C’
‘C’ exclusively

warning: returning the value that B points to by reference requires holding A |
‘C’
‘C’ exclusively

### -Wthread-safety-verbose

Diagnostic text:

warning: thread safety verbose warning

### -Wtrigraphs

This diagnostic is enabled by default.

Diagnostic text:

warning: trigraph converted to ‘A’ character

warning: trigraph ends block comment

warning: trigraph ignored

warning: ignored trigraph would end block comment

### -Wtype-limits

Controls -Wtautological-type-limit-compare, -Wtautological-unsigned-char-zero-compare, -Wtautological-unsigned-enum-zero-compare, -Wtautological-unsigned-zero-compare.

### -Wtype-safety

This diagnostic is enabled by default.

Diagnostic text:

warning: specified A type tag requires a null pointer

warning: argument type A doesn’t match specified B type tag |
that requires D

warning: this type tag was not designed to be used with this function

### -Wtypedef-redefinition

This diagnostic is enabled by default.

Diagnostic text:

warning: redefinition of typedef A is a C11 feature

### -Wtypename-missing

This diagnostic is enabled by default.

Diagnostic text:

warning: missing ‘typename’ prior to dependent type name A

### -Wunable-to-open-stats-file

This diagnostic is enabled by default.

Diagnostic text:

warning: unable to open statistics output file ‘A’: ‘B’

### -Wunaligned-access

Diagnostic text:

warning: field B within A is less aligned than C and is usually due to A being packed, which can lead to unaligned accesses

### -Wunaligned-qualifier-implicit-cast

This diagnostic is enabled by default.

Diagnostic text:

warning: implicit cast from type A to type B drops __unaligned qualifier

### -Wunavailable-declarations

This diagnostic is enabled by default.

Diagnostic text:

warning: A may be unavailable because the receiver type is unknown

### -Wundeclared-selector

Diagnostic text:

warning: undeclared selector A

warning: undeclared selector A; did you mean B?

### -Wundef

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

Also controls -Wundef-true.

Diagnostic text:

warning: A is not defined, evaluates to 0

### -Wundef-prefix

Diagnostic text:

warning: A is not defined, evaluates to 0

### -Wundef-true

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘true’ is not defined, evaluates to 0

### -Wundefined-arm-za

This diagnostic is enabled by default.

Diagnostic text:

warning: builtin call is not valid when calling from a function without active ZA state

### -Wundefined-arm-zt0

This diagnostic is enabled by default.

Diagnostic text:

warning: builtin call is not valid when calling from a function without active ZT0 state

### -Wundefined-bool-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: reference cannot be bound to dereferenced null pointer in well-defined C++ code; pointer may be assumed to always convert to true

warning: ‘this’ pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true

### -Wundefined-func-template

Diagnostic text:

warning: instantiation of function A required here, but no definition is available

### -Wundefined-inline

This diagnostic is enabled by default.

Diagnostic text:

warning: inline function A is not defined

### -Wundefined-internal

This diagnostic is enabled by default.

Diagnostic text:

warning: |
function
variable
| B has internal linkage but is not defined

### -Wundefined-internal-type

Diagnostic text:

warning: ISO C++ requires a definition in this translation unit for |
function
variable
| B because its type does not have linkage

### -Wundefined-reinterpret-cast

Diagnostic text:

warning: dereference of type B that was reinterpret_cast from type A has undefined behavior

warning: reinterpret_cast from A to B has undefined behavior

### -Wundefined-var-template

This diagnostic is enabled by default.

Diagnostic text:

warning: instantiation of variable A required here, but no definition is available

### -Wunderaligned-exception-object

This diagnostic is enabled by default.

Diagnostic text:

warning: underaligned exception object thrown

### -Wunderlying-atomic-qualifier-ignored

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

Diagnostic text:

error: ‘_Atomic’ qualifier ignored; operations involving the enumeration type will be non-atomic

### -Wunderlying-cv-qualifier-ignored

This diagnostic is enabled by default.

Diagnostic text:

warning: |
‘const’ and ‘volatile’ qualifiers
‘const’ qualifier
‘volatile’ qualifier
| in enumeration underlying type ignored

### -Wunevaluated-expression

This diagnostic is enabled by default.

Also controls -Wpotentially-evaluated-expression.

Diagnostic text:

warning: expression with side effects has no effect in an unevaluated context

### -Wunguarded-availability

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

Also controls -Wunguarded-availability-new.

Diagnostic text:

warning: A is only available |
in E environment
| on B C or newer

warning: A is unavailable

### -Wunguarded-availability-new

This diagnostic is enabled by default.

Diagnostic text:

warning: A is only available |
in E environment
| on B C or newer

warning: A is unavailable

### -Wunicode

This diagnostic is enabled by default.

Diagnostic text:

warning: empty delimited universal character name; treating as ‘\’ ‘A’ ‘{’ ‘}’

warning: incomplete delimited universal character name; treating as ‘\’ ‘A’ ‘{’ identifier

warning: incomplete universal character name; treating as ‘\’ followed by identifier

warning: \A used with no following hex digits; treating as ‘\’ followed by identifier

warning: universal character name refers to a surrogate character

warning: universal character names are only valid in C99 or C++; treating as ‘\’ followed by identifier

warning: universal character names are only valid in C99 or C++

### -Wunicode-homoglyph

This diagnostic is enabled by default.

Diagnostic text:

warning: treating Unicode character <U+A> as an identifier character rather than as ‘B’ symbol

### -Wunicode-whitespace

This diagnostic is enabled by default.

Diagnostic text:

warning: treating Unicode character as whitespace

### -Wunicode-zero-width

This diagnostic is enabled by default.

Diagnostic text:

warning: identifier contains Unicode character <U+A> that is invisible in some environments

### -Wuninitialized

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

Also controls -Wsometimes-uninitialized, -Wstatic-self-init, -Wuninitialized-const-pointer, -Wuninitialized-const-reference.

Diagnostic text:

warning: base class A is uninitialized when used here to access B

warning: field A is uninitialized when used here

warning: |
struct
interface
union
class
enum
| B does not declare any constructor to initialize its non-modifiable members

warning: reference A is not yet bound to a value when used here

warning: block pointer variable A is |
uninitialized
null
| when captured by block

warning: variable A is uninitialized when used within its own initialization

warning: reference A is not yet bound to a value when used within its own initialization

warning: variable A is uninitialized when |
used here
captured by block

### -Wuninitialized-const-pointer

Diagnostic text:

warning: variable A is uninitialized when passed as a const pointer argument here

### -Wuninitialized-const-reference

Diagnostic text:

warning: variable A is uninitialized when passed as a const reference argument here

### -Wuninitialized-explicit-init

This diagnostic is enabled by default.

Diagnostic text:

warning: field |
B
in B
| requires explicit initialization but is not explicitly initialized

### -Wunique-object-duplication

Diagnostic text:

warning: initialization of A may run twice when built into a shared library: it has external linkage and |
hidden visibility
no import/export annotation

warning: A may be duplicated when built into a shared library: it is mutable, with external linkage and |
hidden visibility
no import/export annotation

Warns when objects which are supposed to be globally unique might get duplicated when built into a shared library.

This can occur to objects which are hidden from the dynamic linker, due to having hidden visibility (on posix) or lacking a dllimport/dllexport attribute (on windows). If such an object is built into a shared library, each instance of the library will get its own copy. This can cause very subtle bugs if there was only supposed to be one copy of the object in question: singletons aren’t single, changes to one object won’t affect the others, the object’s initializer will run once per copy, etc.

Specifically, this warning fires when it detects an object which:

1. Is defined as `inline` in a header file (so it might get compiled into multiple libaries), and

2. Has external linkage (otherwise it’s supposed to be duplicated), and

3. Has hidden visibility (posix) or lacks a dllimport/dllexport attribute (windows).

As well as one of the following:

1. The object is mutable, or

2. The object’s initializer definitely has side effects.

The warning can be resolved by removing one of the conditions above. In rough order of preference, this may be done by:

1. Marking the object `const` (if possible)

2. Moving the object’s definition to a source file

3. Making the object visible using `__attribute((visibility("default")))`, `__declspec(dllimport)`, or `__declspec(dllexport)`.

When annotating an object with `__declspec(dllimport)` or `__declspec(dllexport)`, take care to ensure that the object is only exported from one dll, and is imported everywhere else.

Note that for (2), all levels of a pointer variable must be constant; `const int*` will trigger the warning because the pointer itself is mutable.

### -Wunknown-acc-extension-clause

This diagnostic is enabled by default.

Diagnostic text:

warning: unsupported OpenACC extension clause A

### -Wunknown-argument

This diagnostic is enabled by default.

Diagnostic text:

warning: joined argument treated as ‘A’; did you mean ‘B’?

warning: unknown argument ignored in clang-cl: ‘A’

warning: unknown argument ignored in clang-cl ‘A’; did you mean ‘B’?

### -Wunknown-assumption

This diagnostic is enabled by default.

Diagnostic text:

warning: unknown assumption string ‘A’; attribute is potentially ignored

### -Wunknown-attributes

This diagnostic is enabled by default.

Diagnostic text:

warning: unknown attribute A ignored

warning: unknown attribute A ignored; did you mean ‘B’?

### -Wunknown-cuda-version

This diagnostic is enabled by default.

Diagnostic text:

warning: CUDA version A is newer than the latest |
partially
| supported version C

warning: CUDA version A is only partially supported

### -Wunknown-directives

This diagnostic is enabled by default.

Diagnostic text:

warning: invalid preprocessing directive |
, did you mean ‘#B’?

### -Wunknown-escape-sequence

This diagnostic is enabled by default.

Diagnostic text:

warning: unknown escape sequence ‘\A’

### -Wunknown-pragmas

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

Diagnostic text:

warning: expected ‘ON’ or ‘OFF’ or ‘DEFAULT’ in pragma

warning: expected end of directive in pragma

warning: unknown pragma in STDC namespace

warning: pragma diagnostic pop could not pop, no matching push

warning: pragma diagnostic expected ‘error’, ‘warning’, ‘ignored’, ‘fatal’, ‘push’, or ‘pop’

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

warning: unexpected token in pragma diagnostic

warning: #pragma execution_character_set expected ‘A’

warning: #pragma execution_character_set invalid value ‘A’, only ‘UTF-8’ is supported

warning: #pragma execution_character_set expected ‘push’ or ‘pop’

warning: unknown pragma ignored

warning: pragma include_alias expected ‘A’

warning: pragma include_alias expected include filename

warning: angle-bracketed include <A> cannot be aliased to double-quoted include “B”

warning: double-quoted include “A” cannot be aliased to angle-bracketed include <B>

warning: #pragma warning expected ‘A’

warning: #pragma warning expected a warning number

warning: #pragma warning(push, level) requires a level between 0 and 4

warning: #pragma warning expected ‘push’, ‘pop’, ‘default’, ‘disable’, ‘error’, ‘once’, ‘suppress’, 1, 2, 3, or 4

warning: pragma STDC FENV_ROUND is not supported

### -Wunknown-sanitizers

This diagnostic is enabled by default.

Diagnostic text:

warning: unknown sanitizer ‘A’ ignored

### -Wunknown-warning-option

This diagnostic is enabled by default.

Diagnostic text:

warning: unknown warning group ‘A’, ignored

warning: unknown |
warning
remark
| option ‘B’ |
; did you mean ‘D’?

warning: unknown A warning specifier: ‘B’

### -Wunnamed-type-template-args

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

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

Diagnostic text:

warning: template argument uses unnamed type

### -Wunnecessary-virtual-specifier

Diagnostic text:

warning: virtual method A is inside a ‘final’ class and can never be overridden

Warns when a `final` class contains a virtual method (including virtual destructors) that does not override anything. Since `final` classes cannot be subclassed, their methods cannot be overridden, so there is no point to introducing new `virtual` methods.

The warning also detects virtual methods in classes whose destructor is `final`, for the same reason.

### -Wunneeded-internal-declaration

Diagnostic text:

warning: |
function
variable
| B is not needed and will not be emitted

warning: ‘static’ function A declared in header file should be declared ‘static inline’

### -Wunneeded-member-function

Diagnostic text:

warning: member function A is not needed and will not be emitted

### -Wunqualified-std-cast-call

This diagnostic is enabled by default.

Diagnostic text:

warning: unqualified call to ‘A’

### -Wunreachable-code

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

Also controls -Wunreachable-code-fallthrough, -Wunreachable-code-generic-assoc, -Wunreachable-code-loop-increment.

Diagnostic text:

warning: code will never be executed

### -Wunreachable-code-aggressive

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

Controls -Wunreachable-code, -Wunreachable-code-break, -Wunreachable-code-return.

### -Wunreachable-code-break

Diagnostic text:

warning: ‘break’ will never be executed

### -Wunreachable-code-fallthrough

Diagnostic text:

warning: fallthrough annotation in unreachable code

### -Wunreachable-code-generic-assoc

This diagnostic is enabled by default.

Diagnostic text:

warning: due to lvalue conversion of the controlling expression, association of type A will never be selected because it is |
of array type
qualified

### -Wunreachable-code-loop-increment

Diagnostic text:

warning: loop will run at most once (loop increment never executed)

### -Wunreachable-code-return

Diagnostic text:

warning: ‘return’ will never be executed

### -Wunsafe-buffer-usage

Also controls -Wunsafe-buffer-usage-in-container, -Wunsafe-buffer-usage-in-libc-call.

Diagnostic text:

warning: |
unsafe pointer operation
unsafe pointer arithmetic
unsafe buffer access
function introduces unsafe buffer manipulation
unsafe invocation of B
field B prone to unsafe buffer manipulation

warning: A is an |
unsafe pointer used for buffer access
unsafe buffer that does not perform bounds checks

### -Wunsafe-buffer-usage-in-container

Diagnostic text:

warning: the two-parameter std::span construction is unsafe as it can introduce mismatch between buffer size and the bound information

### -Wunsafe-buffer-usage-in-libc-call

Diagnostic text:

warning: function A is unsafe

### -Wunsequenced

This diagnostic is enabled by default.

Diagnostic text:

warning: multiple unsequenced modifications to A

warning: unsequenced modification and access to A

### -Wunsupported-abi

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘A’: selected processor lacks floating point registers

warning: float ABI ‘A’ is not supported by current library

### -Wunsupported-abs

This diagnostic is enabled by default.

Diagnostic text:

warning: ignoring ‘-mabs=2008’ option because the ‘A’ architecture does not support it

warning: ignoring ‘-mabs=legacy’ option because the ‘A’ architecture does not support it

### -Wunsupported-availability-guard

This diagnostic is enabled by default.

Diagnostic text:

warning: |
@available
__builtin_available
| does not guard availability here; use if ( |
@available
__builtin_available
| ) instead

### -Wunsupported-cb

This diagnostic is enabled by default.

Diagnostic text:

warning: ignoring ‘-mcompact-branches=’ option because the ‘A’ architecture does not support it

### -Wunsupported-dll-base-class-template

Diagnostic text:

warning: propagating dll attribute to |
already instantiated
explicitly specialized
| base class template without dll attribute is not supported

### -Wunsupported-floating-point-opt

This diagnostic is enabled by default.

Diagnostic text:

warning: overriding currently unsupported use of floating point exceptions on this target

warning: overriding currently unsupported rounding mode on this target

### -Wunsupported-friend

This diagnostic is enabled by default.

Diagnostic text:

warning: dependent nested name specifier A for friend template declaration is not supported; ignoring this friend declaration

warning: dependent nested name specifier A for friend class declaration is not supported; turning off access control for B

### -Wunsupported-gpopt

This diagnostic is enabled by default.

Diagnostic text:

warning: ignoring ‘-mgpopt’ option as it cannot be used with |
the implicit usage of
| -mabicalls

### -Wunsupported-nan

This diagnostic is enabled by default.

Diagnostic text:

warning: ignoring ‘-mnan=2008’ option because the ‘A’ architecture does not support it

warning: ignoring ‘-mnan=legacy’ option because the ‘A’ architecture does not support it

### -Wunsupported-target-opt

This diagnostic is enabled by default.

Diagnostic text:

warning: debug information option ‘A’ is not supported; requires DWARF-C but target ‘B’ only provides DWARF-D

warning: debug information option ‘A’ is not supported for target ‘B’

### -Wunsupported-visibility

This diagnostic is enabled by default.

Diagnostic text:

warning: target does not support ‘protected’ visibility; using ‘default’

### -Wunterminated-string-initialization

Diagnostic text:

warning: initializer-string for character array is too long, array size is A but initializer has size B (including the null terminating character); did you mean to use the ‘nonstring’ attribute?

### -Wunusable-partial-specialization

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

Diagnostic text:

error: |
class
variable
| template partial specialization contains |
a template parameter
template parameters
| that cannot be deduced; this partial specialization will never be used

### -Wunused

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

Controls -Wunused-argument, -Wunused-but-set-variable, -Wunused-function, -Wunused-label, -Wunused-lambda-capture, -Wunused-local-typedef, -Wunused-private-field, -Wunused-property-ivar, -Wunused-value, -Wunused-variable.

### -Wunused-argument

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

### -Wunused-but-set-parameter

Diagnostic text:

warning: parameter A set but not used

### -Wunused-but-set-variable

Diagnostic text:

warning: variable A set but not used

### -Wunused-command-line-argument

This diagnostic is enabled by default.

Diagnostic text:

warning: argument ‘A’ requires profile-guided optimization information

warning: argument ‘A’ requires profile-guided optimization information

warning: joined argument expects additional value: ‘A’

warning: ignoring ‘-f |
no-
| raw-string-literals’, which is only valid for C and C++ standards before C++11

warning: A: ‘B’ input unused |
when ‘D’ is present

warning: A: ‘B’ input unused in cpp mode

warning: ignoring invalid /arch: argument ‘A’; for |
64
32
| -bit expected one of C

warning: ‘A’ only applies to medium and large code models

warning: A: previously preprocessed input |
unused when ‘C’ is present

warning: argument unused during compilation: ‘A’

warning: ‘-x A’ after last input file has no effect

warning: the flag ‘A’ has been deprecated and will be ignored

warning: ignoring -fdiscard-value-names for LLVM Bitcode

warning: ignoring -fverify-debuginfo-preserve-export=A because -fverify-debuginfo-preserve wasn’t enabled

### -Wunused-comparison

This diagnostic is enabled by default.

Diagnostic text:

warning: |
equality
inequality
relational
three-way
| comparison result unused

### -Wunused-const-variable

Diagnostic text:

warning: unused variable A

### -Wunused-exception-parameter

Diagnostic text:

warning: unused exception parameter A

### -Wunused-function

Also controls -Wunneeded-internal-declaration.

Diagnostic text:

warning: unused function A

### -Wunused-getter-return-value

This diagnostic is enabled by default.

Diagnostic text:

warning: property access result unused - getters should not be used for side effects

### -Wunused-label

Diagnostic text:

warning: unused label A

### -Wunused-lambda-capture

Diagnostic text:

warning: lambda capture A is not |
used
required to be captured for this use

### -Wunused-local-typedef

Diagnostic text:

warning: unused |
typedef
type alias
| B

### -Wunused-local-typedefs

Synonym for -Wunused-local-typedef.

### -Wunused-macros

Diagnostic text:

warning: macro is not used

### -Wunused-member-function

Also controls -Wunneeded-member-function.

Diagnostic text:

warning: unused member function A

### -Wunused-parameter

Diagnostic text:

warning: unused parameter A

### -Wunused-private-field

Diagnostic text:

warning: private field A is not used

### -Wunused-property-ivar

Diagnostic text:

warning: ivar A which backs the property is not referenced in this property’s accessor

### -Wunused-result

This diagnostic is enabled by default.

Diagnostic text:

warning: ignoring return value of function declared with A attribute |
: C

### -Wunused-template

Also controls -Wunneeded-internal-declaration.

Diagnostic text:

warning: unused |
function
variable
| template B

### -Wunused-value

This diagnostic is enabled by default.

Also controls -Wunevaluated-expression, -Wunused-comparison, -Wunused-result.

Diagnostic text:

warning: ignoring return value of function declared with A attribute

warning: left operand of comma operator has no effect

warning: ignoring temporary created by a constructor declared with A attribute |
: C

warning: container access result unused - container access should not be used for side effects

warning: expression result unused

warning: ignoring |
return value
temporary
| of type C declared with B attribute |
: E

warning: expression result unused; should this cast be to ‘void’?

### -Wunused-variable

Also controls -Wunused-const-variable.

Diagnostic text:

warning: unused variable A

### -Wunused-volatile-lvalue

This diagnostic is enabled by default.

Diagnostic text:

warning: expression result unused; assign into a variable to force a volatile load

### -Wused-but-marked-unused

Diagnostic text:

warning: A was marked unused but was used

### -Wuser-defined-literals

This diagnostic is enabled by default.

Diagnostic text:

warning: user-defined literal suffixes |
<ERROR>
not starting with ‘_’
containing ‘__’
| are reserved |
; no literal will invoke this operator

### -Wuser-defined-warnings

This diagnostic is enabled by default.

Diagnostic text:

The text of this diagnostic is not controlled by Clang.

### -Wvarargs

This diagnostic is enabled by default.

Diagnostic text:

warning: second argument to ‘va_start’ is not the last non-variadic parameter

warning: second argument to ‘va_arg’ is of array type A; this va_arg has undefined behavior because arguments will never be compatible with array type

warning: second argument to ‘va_arg’ is of promotable type A; this va_arg has undefined behavior because arguments will be promoted to B

warning: passing |
an object that undergoes default argument promotion
an object of reference type
a parameter declared with the ‘register’ keyword
| to ‘va_start’ has undefined behavior

### -Wvariadic-macro-arguments-omitted

Diagnostic text:

warning: passing no argument for the ‘…’ parameter of a variadic macro is a C23 extension

warning: passing no argument for the ‘…’ parameter of a variadic macro is a C++20 extension

warning: passing no argument for the ‘…’ parameter of a variadic macro is incompatible with C standards before C23

### -Wvariadic-macros

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

Diagnostic text:

warning: named variadic macros are a GNU extension

warning: __VA_OPT__ can only appear in the expansion of a variadic macro

warning: variadic macros are a C99 feature

### -Wvec-elem-size

This diagnostic is an error by default, but the flag `-Wno-vec-elem-size` can be used to disable the error.

Diagnostic text:

error: vector operands do not have the same elements sizes (A and B)

### -Wvector-conversion

Diagnostic text:

warning: incompatible vector 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

### -Wvector-conversions

Synonym for -Wvector-conversion.

### -Wvexing-parse

This diagnostic is enabled by default.

Diagnostic text:

warning: empty parentheses interpreted as a function declaration

warning: parentheses were disambiguated as a function declaration

warning: parentheses were disambiguated as redundant parentheses around declaration of variable named A

### -Wvisibility

This diagnostic is enabled by default.

Diagnostic text:

warning: declaration of A will not be visible outside of this function

warning: redefinition of A will not be visible outside of this function

### -Wvla

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

Also controls -Wvla-extension.

Diagnostic text:

warning: variable length array used

### -Wvla-cxx-extension

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

Also controls -Wvla-extension-static-assert.

Diagnostic text:

warning: variable length arrays in C++ are a Clang extension

warning: variable length arrays in C++ are a Clang extension

### -Wvla-extension

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

Also controls -Wvla-cxx-extension.

Diagnostic text:

warning: variable length arrays are a C99 feature

### -Wvla-extension-static-assert

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

Diagnostic text:

warning: variable length arrays in C++ are a Clang extension; did you mean to use ‘static_assert’?

warning: variable length arrays in C++ are a Clang extension; did you mean to use ‘static_assert’?

### -Wvoid-pointer-to-enum-cast

This diagnostic is enabled by default.

Diagnostic text:

warning: cast to smaller integer type B from A

### -Wvoid-pointer-to-int-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

### -Wvoid-ptr-dereference

This diagnostic is enabled by default.

Diagnostic text:

warning: ISO C does not allow indirection on operand of type A

### -Wvolatile-register-var

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

### -Wwasm-exception-spec

This diagnostic is enabled by default.

Diagnostic text:

warning: dynamic exception specifications with types are currently ignored in wasm

### -Wweak-template-vtables

Diagnostic text:

warning: this warning is no longer in use and will be removed in the next release

### -Wweak-vtables

Diagnostic text:

warning: A has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit

### -Wwritable-strings

This diagnostic is enabled by default.

Also controls -Wdeprecated-writable-strings.

Diagnostic text:

warning: ISO C++11 does not allow conversion from string literal to A

### -Wwrite-strings

Synonym for -Wwritable-strings.

Note: enabling this warning in C will change the semantic behavior of the program by treating all string literals as having type `const char *` instead of `char *`. This can cause unexpected behaviors with type-sensitive constructs like `_Generic`.

### -Wxor-used-as-pow

This diagnostic is enabled by default.

Diagnostic text:

warning: result of ‘A’ is B; did you mean exponentiation?

warning: result of ‘A’ is B; did you mean ‘C’?

warning: result of ‘A’ is B; did you mean ‘C’ (D)?

### -Wzero-as-null-pointer-constant

Diagnostic text:

warning: zero as null pointer constant

### -Wzero-length-array

Diagnostic text:

warning: zero size arrays are an extension