# Clang 4 documentation

## Diagnostic flags in Clang

- Introduction
- Diagnostic flags
  - -W
  - -W#pragma-messages
  - -W#warnings
  - -WCFString-literal
  - -WCL4
  - -WIndependentClass-attribute
  - -WNSObject-attribute
  - -Wabi
  - -Wabsolute-value
  - -Wabstract-final-class
  - -Wabstract-vbase-init
  - -Waddress
  - -Waddress-of-array-temporary
  - -Waddress-of-packed-member
  - -Waddress-of-temporary
  - -Waggregate-return
  - -Wall
  - -Wambiguous-ellipsis
  - -Wambiguous-macro
  - -Wambiguous-member-template
  - -Wanalyzer-incompatible-plugin
  - -Wanonymous-pack-parens
  - -Warc
  - -Warc-bridge-casts-disallowed-in-nonarc
  - -Warc-maybe-repeated-use-of-weak
  - -Warc-non-pod-memaccess
  - -Warc-performSelector-leaks
  - -Warc-repeated-use-of-weak
  - -Warc-retain-cycles
  - -Warc-unsafe-retained-assign
  - -Warray-bounds
  - -Warray-bounds-pointer-arithmetic
  - -Wasm
  - -Wasm-operand-widths
  - -Wassign-enum
  - -Wassume
  - -Wat-protocol
  - -Watomic-memory-ordering
  - -Watomic-properties
  - -Watomic-property-with-user-defined-accessor
  - -Wattribute-packed-for-bitfield
  - -Wattributes
  - -Wauto-disable-vptr-sanitizer
  - -Wauto-import
  - -Wauto-storage-class
  - -Wauto-var-id
  - -Wavailability
  - -Wbackend-plugin
  - -Wbackslash-newline-escape
  - -Wbad-array-new-length
  - -Wbad-function-cast
  - -Wbind-to-temporary-copy
  - -Wbitfield-constant-conversion
  - -Wbitfield-width
  - -Wbitwise-op-parentheses
  - -Wbool-conversion
  - -Wbool-conversions
  - -Wbraced-scalar-init
  - -Wbridge-cast
  - -Wbuiltin-macro-redefined
  - -Wbuiltin-memcpy-chk-size
  - -Wbuiltin-requires-header
  - -Wc++-compat
  - -Wc++0x-compat
  - -Wc++0x-extensions
  - -Wc++0x-narrowing
  - -Wc++11-compat
  - -Wc++11-compat-deprecated-writable-strings
  - -Wc++11-compat-pedantic
  - -Wc++11-compat-reserved-user-defined-literal
  - -Wc++11-extensions
  - -Wc++11-extra-semi
  - -Wc++11-inline-namespace
  - -Wc++11-long-long
  - -Wc++11-narrowing
  - -Wc++14-binary-literal
  - -Wc++14-compat
  - -Wc++14-compat-pedantic
  - -Wc++14-extensions
  - -Wc++1y-extensions
  - -Wc++1z-compat
  - -Wc++1z-extensions
  - -Wc++98-c++11-c++14-compat
  - -Wc++98-c++11-c++14-compat-pedantic
  - -Wc++98-c++11-compat
  - -Wc++98-c++11-compat-pedantic
  - -Wc++98-compat
  - -Wc++98-compat-bind-to-temporary-copy
  - -Wc++98-compat-local-type-template-args
  - -Wc++98-compat-pedantic
  - -Wc++98-compat-unnamed-type-template-args
  - -Wc11-extensions
  - -Wc99-compat
  - -Wc99-extensions
  - -Wcast-align
  - -Wcast-calling-convention
  - -Wcast-of-sel-type
  - -Wcast-qual
  - -Wchar-align
  - -Wchar-subscripts
  - -Wclang-cl-pch
  - -Wclass-varargs
  - -Wcomma
  - -Wcomment
  - -Wcomments
  - -Wcompare-distinct-pointer-types
  - -Wcomplex-component-init
  - -Wconditional-type-mismatch
  - -Wconditional-uninitialized
  - -Wconfig-macros
  - -Wconstant-conversion
  - -Wconstant-logical-operand
  - -Wconstexpr-not-const
  - -Wconsumed
  - -Wconversion
  - -Wconversion-null
  - -Wcoreturn-without-coawait
  - -Wcovered-switch-default
  - -Wcstring-format-directive
  - -Wctor-dtor-privacy
  - -Wcuda-compat
  - -Wcustom-atomic-properties
  - -Wdangling-else
  - -Wdangling-field
  - -Wdangling-initializer-list
  - -Wdate-time
  - -Wdealloc-in-category
  - -Wdebug-compression-unavailable
  - -Wdeclaration-after-statement
  - -Wdelegating-ctor-cycles
  - -Wdelete-incomplete
  - -Wdelete-non-virtual-dtor
  - -Wdeprecated
  - -Wdeprecated-attributes
  - -Wdeprecated-declarations
  - -Wdeprecated-implementations
  - -Wdeprecated-increment-bool
  - -Wdeprecated-objc-isa-usage
  - -Wdeprecated-objc-pointer-introspection
  - -Wdeprecated-objc-pointer-introspection-performSelector
  - -Wdeprecated-register
  - -Wdeprecated-writable-strings
  - -Wdirect-ivar-access
  - -Wdisabled-macro-expansion
  - -Wdisabled-optimization
  - -Wdiscard-qual
  - -Wdistributed-object-modifiers
  - -Wdiv-by-zero
  - -Wdivision-by-zero
  - -Wdll-attribute-on-redeclaration
  - -Wdllexport-explicit-instantiation-decl
  - -Wdllimport-static-field-def
  - -Wdocumentation
  - -Wdocumentation-deprecated-sync
  - -Wdocumentation-html
  - -Wdocumentation-pedantic
  - -Wdocumentation-unknown-command
  - -Wdollar-in-identifier-extension
  - -Wdouble-promotion
  - -Wduplicate-decl-specifier
  - -Wduplicate-enum
  - -Wduplicate-method-arg
  - -Wduplicate-method-match
  - -Wdynamic-class-memaccess
  - -Weffc++
  - -Wembedded-directive
  - -Wempty-body
  - -Wempty-decomposition
  - -Wempty-translation-unit
  - -Wencode-type
  - -Wendif-labels
  - -Wenum-compare
  - -Wenum-conversion
  - -Wenum-too-large
  - -Wexceptions
  - -Wexit-time-destructors
  - -Wexpansion-to-defined
  - -Wexplicit-initialize-call
  - -Wexplicit-ownership-type
  - -Wextended-offsetof
  - -Wextern-c-compat
  - -Wextern-initializer
  - -Wextra
  - -Wextra-qualification
  - -Wextra-semi
  - -Wextra-tokens
  - -Wfallback
  - -Wflag-enum
  - -Wflexible-array-extensions
  - -Wfloat-conversion
  - -Wfloat-equal
  - -Wfloat-overflow-conversion
  - -Wfloat-zero-conversion
  - -Wfor-loop-analysis
  - -Wformat
  - -Wformat-extra-args
  - -Wformat-invalid-specifier
  - -Wformat-non-iso
  - -Wformat-nonliteral
  - -Wformat-pedantic
  - -Wformat-security
  - -Wformat-y2k
  - -Wformat-zero-length
  - -Wformat=2
  - -Wfour-char-constants
  - -Wframe-larger-than=
  - -Wfunction-def-in-objc-container
  - -Wfuture-compat
  - -Wgcc-compat
  - -Wglobal-constructors
  - -Wgnu
  - -Wgnu-alignof-expression
  - -Wgnu-anonymous-struct
  - -Wgnu-array-member-paren-init
  - -Wgnu-auto-type
  - -Wgnu-binary-literal
  - -Wgnu-case-range
  - -Wgnu-complex-integer
  - -Wgnu-compound-literal-initializer
  - -Wgnu-conditional-omitted-operand
  - -Wgnu-designator
  - -Wgnu-empty-initializer
  - -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-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
  - -Wheader-guard
  - -Wheader-hygiene
  - -Widiomatic-parentheses
  - -Wignored-attributes
  - -Wignored-optimization-argument
  - -Wignored-pragmas
  - -Wignored-qualifiers
  - -Wimplicit
  - -Wimplicit-atomic-properties
  - -Wimplicit-conversion-floating-point-to-bool
  - -Wimplicit-exception-spec-mismatch
  - -Wimplicit-fallthrough
  - -Wimplicit-fallthrough-per-function
  - -Wimplicit-function-declaration
  - -Wimplicit-int
  - -Wimplicit-retain-self
  - -Wimplicitly-unsigned-literal
  - -Wimport
  - -Wimport-preprocessor-directive-pedantic
  - -Winaccessible-base
  - -Winclude-next-absolute-path
  - -Winclude-next-outside-header
  - -Wincompatible-function-pointer-types
  - -Wincompatible-library-redeclaration
  - -Wincompatible-ms-struct
  - -Wincompatible-pointer-types
  - -Wincompatible-pointer-types-discards-qualifiers
  - -Wincompatible-property-type
  - -Wincompatible-sysroot
  - -Wincomplete-implementation
  - -Wincomplete-module
  - -Wincomplete-umbrella
  - -Winconsistent-dllimport
  - -Winconsistent-missing-override
  - -Wincrement-bool
  - -Winfinite-recursion
  - -Winit-self
  - -Winitializer-overrides
  - -Winline
  - -Winline-asm
  - -Winline-new-delete
  - -Winstantiation-after-specialization
  - -Wint-conversion
  - -Wint-conversions
  - -Wint-to-pointer-cast
  - -Wint-to-void-pointer-cast
  - -Winteger-overflow
  - -Winvalid-command-line-argument
  - -Winvalid-constexpr
  - -Winvalid-iboutlet
  - -Winvalid-initializer-from-system-header
  - -Winvalid-noreturn
  - -Winvalid-offsetof
  - -Winvalid-or-nonexistent-directory
  - -Winvalid-pch
  - -Winvalid-pp-token
  - -Winvalid-source-encoding
  - -Winvalid-token-paste
  - -Wjump-seh-finally
  - -Wkeyword-compat
  - -Wkeyword-macro
  - -Wknr-promoted-parameter
  - -Wlanguage-extension-token
  - -Wlarge-by-value-copy
  - -Wliblto
  - -Wliteral-conversion
  - -Wliteral-range
  - -Wlocal-type-template-args
  - -Wlogical-not-parentheses
  - -Wlogical-op-parentheses
  - -Wlong-long
  - -Wloop-analysis
  - -Wmacro-redefined
  - -Wmain
  - -Wmain-return-type
  - -Wmalformed-warning-check
  - -Wmany-braces-around-scalar-init
  - -Wmemsize-comparison
  - -Wmethod-signatures
  - -Wmicrosoft
  - -Wmicrosoft-anon-tag
  - -Wmicrosoft-cast
  - -Wmicrosoft-charize
  - -Wmicrosoft-comment-paste
  - -Wmicrosoft-const-init
  - -Wmicrosoft-cpp-macro
  - -Wmicrosoft-default-arg-redefinition
  - -Wmicrosoft-end-of-file
  - -Wmicrosoft-enum-forward-reference
  - -Wmicrosoft-enum-value
  - -Wmicrosoft-exception-spec
  - -Wmicrosoft-exists
  - -Wmicrosoft-explicit-constructor-call
  - -Wmicrosoft-extra-qualification
  - -Wmicrosoft-fixed-enum
  - -Wmicrosoft-flexible-array
  - -Wmicrosoft-goto
  - -Wmicrosoft-include
  - -Wmicrosoft-mutable-reference
  - -Wmicrosoft-pure-definition
  - -Wmicrosoft-redeclare-static
  - -Wmicrosoft-sealed
  - -Wmicrosoft-template
  - -Wmicrosoft-union-member-reference
  - -Wmicrosoft-unqualified-friend
  - -Wmicrosoft-using-decl
  - -Wmicrosoft-void-pseudo-dtor
  - -Wmismatched-new-delete
  - -Wmismatched-parameter-types
  - -Wmismatched-return-types
  - -Wmismatched-tags
  - -Wmissing-braces
  - -Wmissing-declarations
  - -Wmissing-exception-spec
  - -Wmissing-field-initializers
  - -Wmissing-format-attribute
  - -Wmissing-include-dirs
  - -Wmissing-method-return-type
  - -Wmissing-noreturn
  - -Wmissing-prototype-for-cc
  - -Wmissing-prototypes
  - -Wmissing-selector-name
  - -Wmissing-sysroot
  - -Wmissing-variable-declarations
  - -Rmodule-build
  - -Wmodule-conflict
  - -Wmodule-file-config-mismatch
  - -Wmodule-file-extension
  - -Wmodule-import-in-extern-c
  - -Wmodules-ambiguous-internal-linkage
  - -Wmodules-import-nested-redundant
  - -Wmost
  - -Wmove
  - -Wmsvc-include
  - -Wmultichar
  - -Wmultiple-move-vbase
  - -Wnarrowing
  - -Wnested-anon-types
  - -Wnested-externs
  - -Wnew-returns-null
  - -Wnewline-eof
  - -Wnon-gcc
  - -Wnon-literal-null-conversion
  - -Wnon-modular-include-in-framework-module
  - -Wnon-modular-include-in-module
  - -Wnon-pod-varargs
  - -Wnon-virtual-dtor
  - -Wnonnull
  - -Wnonportable-cfstrings
  - -Wnonportable-include-path
  - -Wnonportable-system-include-path
  - -Wnonportable-vector-initialization
  - -Wnull-arithmetic
  - -Wnull-character
  - -Wnull-conversion
  - -Wnull-dereference
  - -Wnullability
  - -Wnullability-completeness
  - -Wnullability-declspec
  - -Wnullability-extension
  - -Wnullable-to-nonnull-conversion
  - -Wobjc-autosynthesis-property-ivar-name-match
  - -Wobjc-circular-container
  - -Wobjc-cocoa-api
  - -Wobjc-designated-initializers
  - -Wobjc-forward-class-redefinition
  - -Wobjc-interface-ivars
  - -Wobjc-literal-compare
  - -Wobjc-literal-conversion
  - -Wobjc-macro-redefinition
  - -Wobjc-method-access
  - -Wobjc-missing-property-synthesis
  - -Wobjc-missing-super-calls
  - -Wobjc-multiple-method-names
  - -Wobjc-noncopy-retain-block-property
  - -Wobjc-nonunified-exceptions
  - -Wobjc-property-implementation
  - -Wobjc-property-implicit-mismatch
  - -Wobjc-property-matches-cocoa-ownership-rule
  - -Wobjc-property-no-attribute
  - -Wobjc-property-synthesis
  - -Wobjc-protocol-method-implementation
  - -Wobjc-protocol-property-synthesis
  - -Wobjc-protocol-qualifiers
  - -Wobjc-readonly-with-setter-property
  - -Wobjc-redundant-api-use
  - -Wobjc-redundant-literal-use
  - -Wobjc-root-class
  - -Wobjc-string-compare
  - -Wobjc-string-concatenation
  - -Wodr
  - -Wold-style-cast
  - -Wold-style-definition
  - -Wopencl-unsupported-rgba
  - -Wopenmp-clauses
  - -Wopenmp-loop-form
  - -Wopenmp-target
  - -Woption-ignored
  - -Wout-of-line-declaration
  - -Wover-aligned
  - -Woverflow
  - -Woverlength-strings
  - -Woverloaded-shift-op-parentheses
  - -Woverloaded-virtual
  - -Woverride-module
  - -Woverriding-method-mismatch
  - -Woverriding-t-option
  - -Wpacked
  - -Wpadded
  - -Wparentheses
  - -Wparentheses-equality
  - -Wpartial-availability
  - -Rpass
  - -Rpass-analysis
  - -Wpass-failed
  - -Rpass-missed
  - -Wpch-date-time
  - -Wpedantic
  - -Wpedantic-core-features
  - -Wpessimizing-move
  - -Wpointer-arith
  - -Wpointer-bool-conversion
  - -Wpointer-sign
  - -Wpointer-to-int-cast
  - -Wpointer-type-mismatch
  - -Wpotentially-evaluated-expression
  - -Wpragma-once-outside-header
  - -Wpragma-system-header-outside-header
  - -Wpragmas
  - -Wpredefined-identifier-outside-function
  - -Wprivate-extern
  - -Wprivate-header
  - -Wprofile-instr-out-of-date
  - -Wprofile-instr-unprofiled
  - -Wproperty-access-dot-syntax
  - -Wproperty-attribute-mismatch
  - -Wprotocol
  - -Wprotocol-property-synthesis-ambiguity
  - -Wqualified-void-return-type
  - -Wrange-loop-analysis
  - -Wreadonly-iboutlet-property
  - -Wreceiver-expr
  - -Wreceiver-forward-class
  - -Wredeclared-class-member
  - -Wredundant-decls
  - -Wredundant-move
  - -Wregister
  - -Wreinterpret-base-class
  - -Rremark-backend-plugin
  - -Wreorder
  - -Wrequires-super-attribute
  - -Wreserved-id-macro
  - -Wreserved-user-defined-literal
  - -Wretained-language-linkage
  - -Wreturn-stack-address
  - -Wreturn-type
  - -Wreturn-type-c-linkage
  - -Wrtti-for-exceptions
  - -Rsanitize-address
  - -Wsection
  - -Wselector
  - -Wselector-type-mismatch
  - -Wself-assign
  - -Wself-assign-field
  - -Wself-move
  - -Wsemicolon-before-method-body
  - -Wsentinel
  - -Wsequence-point
  - -Wserialized-diagnostics
  - -Wshadow
  - -Wshadow-all
  - -Wshadow-field-in-constructor
  - -Wshadow-field-in-constructor-modified
  - -Wshadow-ivar
  - -Wshift-count-negative
  - -Wshift-count-overflow
  - -Wshift-negative-value
  - -Wshift-op-parentheses
  - -Wshift-overflow
  - -Wshift-sign-overflow
  - -Wshorten-64-to-32
  - -Wsign-compare
  - -Wsign-conversion
  - -Wsign-promo
  - -Wsizeof-array-argument
  - -Wsizeof-array-decay
  - -Wsizeof-pointer-memaccess
  - -Wsometimes-uninitialized
  - -Wsource-uses-openmp
  - -Wspir-compat
  - -Wstack-protector
  - -Wstatic-float-init
  - -Wstatic-in-inline
  - -Wstatic-inline-explicit-instantiation
  - -Wstatic-local-in-inline
  - -Wstatic-self-init
  - -Wstrict-aliasing
  - -Wstrict-aliasing=0
  - -Wstrict-aliasing=1
  - -Wstrict-aliasing=2
  - -Wstrict-overflow
  - -Wstrict-overflow=0
  - -Wstrict-overflow=1
  - -Wstrict-overflow=2
  - -Wstrict-overflow=3
  - -Wstrict-overflow=4
  - -Wstrict-overflow=5
  - -Wstrict-prototypes
  - -Wstrict-selector-match
  - -Wstring-compare
  - -Wstring-conversion
  - -Wstring-plus-char
  - -Wstring-plus-int
  - -Wstrlcpy-strlcat-size
  - -Wstrncat-size
  - -Wsuper-class-method-mismatch
  - -Wswitch
  - -Wswitch-bool
  - -Wswitch-default
  - -Wswitch-enum
  - -Wsync-fetch-and-nand-semantics-changed
  - -Wsynth
  - -Wtautological-compare
  - -Wtautological-constant-out-of-range-compare
  - -Wtautological-overlap-compare
  - -Wtautological-pointer-compare
  - -Wtautological-undefined-compare
  - -Wtentative-definition-incomplete-type
  - -Wthread-safety
  - -Wthread-safety-analysis
  - -Wthread-safety-attributes
  - -Wthread-safety-beta
  - -Wthread-safety-negative
  - -Wthread-safety-precise
  - -Wthread-safety-reference
  - -Wthread-safety-verbose
  - -Wtrigraphs
  - -Wtype-limits
  - -Wtype-safety
  - -Wtypedef-redefinition
  - -Wtypename-missing
  - -Wunavailable-declarations
  - -Wundeclared-selector
  - -Wundef
  - -Wundefined-bool-conversion
  - -Wundefined-func-template
  - -Wundefined-inline
  - -Wundefined-internal
  - -Wundefined-reinterpret-cast
  - -Wundefined-var-template
  - -Wunevaluated-expression
  - -Wunguarded-availability
  - -Wunicode
  - -Wunicode-whitespace
  - -Wuninitialized
  - -Wunknown-argument
  - -Wunknown-attributes
  - -Wunknown-escape-sequence
  - -Wunknown-pragmas
  - -Wunknown-sanitizers
  - -Wunknown-warning-option
  - -Wunnamed-type-template-args
  - -Wunneeded-internal-declaration
  - -Wunneeded-member-function
  - -Wunreachable-code
  - -Wunreachable-code-aggressive
  - -Wunreachable-code-break
  - -Wunreachable-code-loop-increment
  - -Wunreachable-code-return
  - -Wunsequenced
  - -Wunsupported-cb
  - -Wunsupported-dll-base-class-template
  - -Wunsupported-friend
  - -Wunsupported-nan
  - -Wunsupported-visibility
  - -Wunused
  - -Wunused-argument
  - -Wunused-command-line-argument
  - -Wunused-comparison
  - -Wunused-const-variable
  - -Wunused-exception-parameter
  - -Wunused-function
  - -Wunused-getter-return-value
  - -Wunused-label
  - -Wunused-local-typedef
  - -Wunused-local-typedefs
  - -Wunused-macros
  - -Wunused-member-function
  - -Wunused-parameter
  - -Wunused-private-field
  - -Wunused-property-ivar
  - -Wunused-result
  - -Wunused-value
  - -Wunused-variable
  - -Wunused-volatile-lvalue
  - -Wused-but-marked-unused
  - -Wuser-defined-literals
  - -Wvarargs
  - -Wvariadic-macros
  - -Wvector-conversion
  - -Wvector-conversions
  - -Wvexing-parse
  - -Wvisibility
  - -Wvla
  - -Wvla-extension
  - -Wvoid-ptr-dereference
  - -Wvolatile-register-var
  - -Wweak-template-vtables
  - -Wweak-vtables
  - -Wwritable-strings
  - -Wwrite-strings
  - -Wzero-length-array

## Introduction

This page lists the diagnostic flags currently supported by Clang.

## Diagnostic flags

### -W

Synonym for -Wextra.

### -W#pragma-messages

This diagnostic is enabled by default.

Diagnostic text:

The text of this diagnostic is not controlled by Clang.

### -W#warnings

This diagnostic is enabled by default.

Diagnostic text:

The text of this diagnostic is not controlled by Clang.

### -WCFString-literal

This diagnostic is enabled by default.

Diagnostic text:

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

### -WCL4

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

Controls -Wall, -Wextra.

### -WIndependentClass-attribute

This diagnostic is enabled by default.

Diagnostic text:

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

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

### -WNSObject-attribute

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wabi

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

### -Wabsolute-value

This diagnostic is enabled by default.

Diagnostic text:

warning: absolute value function A given an argument of type B but has parameter of type C which may cause truncation of value

warning: taking the absolute value of |
pointer
function
array
| type B is suspicious

warning: taking the absolute value of unsigned type A has no effect

warning: using |
integer
floating point
complex
| absolute value function A when argument is of |
integer
floating point
complex
| type

### -Wabstract-final-class

This diagnostic is enabled by default.

Diagnostic text:

warning: abstract class is marked ‘ |
final
sealed
| ‘

### -Wabstract-vbase-init

Diagnostic text:

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

### -Waddress

This diagnostic is enabled by default.

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

### -Waddress-of-array-temporary

This diagnostic is enabled by default.

Diagnostic text:

warning: pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression

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

### -Wall

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

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

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

### -Wanalyzer-incompatible-plugin

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wanonymous-pack-parens

This diagnostic is enabled by default.

Diagnostic text:

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

### -Warc

This diagnostic is enabled by default.

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

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

This diagnostic is enabled by default.

Diagnostic text:

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

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

Diagnostic text:

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

### -Warc-non-pod-memaccess

This diagnostic is enabled by default.

Diagnostic text:

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

### -Warc-performSelector-leaks

This diagnostic is enabled by default.

Diagnostic text:

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

### -Warc-repeated-use-of-weak

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

Diagnostic text:

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

### -Warc-retain-cycles

This diagnostic is enabled by default.

Diagnostic text:

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

### -Warc-unsafe-retained-assign

This diagnostic is enabled by default.

Diagnostic text:

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

warning: assigning retained object to |
weak
unsafe_unretained
property
variable
| ; object will be released after assignment

warning: assigning retained object to unsafe property; object will be released after assignment

### -Warray-bounds

This diagnostic is enabled by default.

Diagnostic text:

warning: array index A is past the end of the array (which contains B element |
s
| )

warning: array index A is before the beginning of the array

warning: array argument is too small; contains A elements, callee requires at least B

warning: ‘static’ has no effect on zero-length arrays

### -Warray-bounds-pointer-arithmetic

Diagnostic text:

warning: the pointer incremented by A refers past the end of the array (that contains B element |
s
| )

warning: the pointer decremented by A refers before the beginning of the array

### -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: the argument to A has side effects that will be discarded

### -Wat-protocol

This diagnostic is enabled by default.

Diagnostic text:

warning: @protocol is using a forward protocol declaration of A

### -Watomic-memory-ordering

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wattributes

This diagnostic is enabled by default.

Controls -Wignored-attributes, -Wunknown-attributes.

### -Wauto-disable-vptr-sanitizer

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wauto-import

Diagnostic text:

warning: treating # |
include
import
include_next
__include_macros
| as an import of module ‘B’

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

### -Wbackend-plugin

This diagnostic is enabled by default.

Diagnostic text:

The text of this diagnostic is not controlled by Clang.

### -Wbackslash-newline-escape

This diagnostic is enabled by default.

Diagnostic text:

warning: backslash and newline separated by space

### -Wbad-array-new-length

This diagnostic is enabled by default.

Diagnostic text:

warning: array is too large (A elements)

warning: array size is negative

### -Wbad-function-cast

Diagnostic text:

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

### -Wbind-to-temporary-copy

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

Diagnostic text:

warning: C++98 requires an accessible copy constructor for class C when binding a reference to a temporary; was |
private
protected

warning: no viable constructor |
copying variable
copying parameter
returning object
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

### -Wbitfield-constant-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: implicit truncation from C to bitfield changes value from A to B

### -Wbitfield-width

This diagnostic is enabled by default.

Diagnostic text:

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

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

### -Wbitwise-op-parentheses

This diagnostic is enabled by default.

Diagnostic text:

warning: ’A’ within ‘B’

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

### -Wbraced-scalar-init

This diagnostic is enabled by default.

Diagnostic text:

warning: braces around scalar initializer

### -Wbridge-cast

This diagnostic is enabled by default.

Diagnostic text:

warning: A bridges to B, not C

warning: A cannot bridge to B

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

### -Wbuiltin-requires-header

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wc++-compat

Diagnostic text:

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

### -Wc++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, -Wc++98-c++11-c++14-compat, -Wc++98-c++11-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

Controls -Wc++98-c++11-c++14-compat-pedantic, -Wc++98-c++11-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: alias declarations are a C++11 extension

warning: implicit conversion from array size expression of type A to |
integral
enumeration
| type C is a C++11 extension

warning: ‘auto’ type specifier is a C++11 extension

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

warning: |
defaulted
deleted
| function definitions are a C++11 extension

warning: befriending enumeration type A is a C++11 extension

warning: commas at the end of enumerator lists are a C++11 extension

warning: explicit conversion functions are a C++11 extension

warning: extern templates are a C++11 extension

warning: range-based for loop is a C++11 extension

warning: generalized initializer lists are a C++11 extension

warning: use of enumeration in a nested name specifier is a C++11 extension

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

warning: in-class initialization of non-static data member is a C++11 extension

warning: ’A’ keyword is a C++11 extension

warning: reference qualifiers on functions are a C++11 extension

warning: rvalue references are a C++11 extension

warning: scoped enumerations are a C++11 extension

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

warning: non-type template argument referring to |
function
object
| B with internal linkage is a C++11 extension

warning: ‘template’ keyword outside of a template

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

warning: first declaration of |
class template
class template partial
variable template
variable template partial
function template
member function
static data member
member class
member enumeration
| specialization of B outside namespace C is a C++11 extension

warning: ‘typename’ occurs outside of a template

warning: unelaborated friend declaration is a C++11 extension; specify ‘ |
struct
interface
union
class
enum
| ‘ to befriend B

warning: variadic templates are a C++11 extension

### -Wc++11-extra-semi

Diagnostic text:

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

### -Wc++11-inline-namespace

This diagnostic is enabled by default.

Diagnostic text:

warning: inline namespaces are a C++11 feature

### -Wc++11-long-long

Diagnostic text:

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

### -Wc++11-narrowing

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

Diagnostic text:

error: |
case value
enumerator value
non-type template argument
array size
constexpr if condition
cannot be narrowed from type C to D
evaluates to C, which cannot be narrowed to type D

error: constant expression evaluates to A which cannot be narrowed to type B

error: type A cannot be narrowed to B in initializer list

error: non-constant-expression cannot be narrowed from type A to B in initializer list

warning: constant expression evaluates to A which cannot be narrowed to type B in C++11

warning: type A cannot be narrowed to B in initializer list in C++11

warning: non-constant-expression cannot be narrowed from type A to B in initializer list in C++11

### -Wc++14-binary-literal

Diagnostic text:

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

### -Wc++14-compat

Synonym for -Wc++98-c++11-c++14-compat.

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

Synonym for -Wc++98-c++11-c++14-compat-pedantic.

### -Wc++14-extensions

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

Also controls -Wc++14-binary-literal.

Diagnostic text:

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

warning: multiple return statements in constexpr function is a C++14 extension

warning: variable declaration in a constexpr |
function
constructor
| is a C++14 extension

warning: type definition in a constexpr |
function
constructor
| is a C++14 extension

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

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

warning: initialized lambda captures are a C++14 extension

warning: variable templates are a C++14 extension

### -Wc++1y-extensions

Synonym for -Wc++14-extensions.

### -Wc++1z-compat

This diagnostic is enabled by default.

Controls -Wdeprecated-increment-bool, -Wdeprecated-register.

### -Wc++1z-extensions

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

Diagnostic text:

warning: constexpr if is a C++1z extension

warning: ‘constexpr’ on lambda expressions is a C++1z extension

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

warning: decomposition declarations are a C++1z extension

warning: pack fold expression is a C++1z extension

warning: ‘begin’ and ‘end’ returning different types (A and B) is a C++1z extension

warning: hexadecimal floating literals are a C++1z feature

warning: inline variables are a C++1z extension

warning: nested namespace definition is a C++1z extension; define each namespace separately

warning: capture of ‘*this’ by copy is a C++1z extension

warning: static_assert with no message is a C++1z extension

warning: template template parameter using ‘typename’ is a C++1z extension

warning: default scope specifier for attributes is a C++1z extension

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

Diagnostic text:

warning: attributes on |
a namespace
an enumerator
| declaration are incompatible with C++ standards before C++1z

warning: constexpr if is incompatible with C++ standards before C++1z

warning: constexpr on lambda expressions is incompatible with C++ standards before C++1z

warning: decomposition declarations are incompatible with C++ standards before C++1z

warning: pack fold expression is incompatible with C++ standards before C++1z

warning: inline variables are incompatible with C++ standards before C++1z

warning: nested namespace definition is incompatible with C++ standards before C++1z

warning: by value capture of ‘*this’ is incompatible with C++ standards before C++1z

warning: static_assert with no message is incompatible with C++ standards before C++1z

warning: template template parameter using ‘typename’ is incompatible with C++ standards before C++1z

warning: unicode literals are incompatible with C++ standards before C++1z

warning: default scope specifier for attributes is incompatible with C++ standards before C++1z

warning: ‘begin’ and ‘end’ returning different types (A and B) is incompatible with C++ standards before C++1z

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

Also controls -Wc++98-c++11-c++14-compat.

Diagnostic text:

warning: hexidecimal floating literals are incompatible with C++ standards before C++1z

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

Diagnostic text:

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

warning: multiple return statements in constexpr function is incompatible with C++ standards before C++14

warning: constexpr function with no return statements is incompatible with C++ standards before C++14

warning: variable declaration in a constexpr |
function
constructor
| is incompatible with C++ standards before C++14

warning: type definition in a constexpr |
function
constructor
| is incompatible with C++ standards before C++14

warning: ‘decltype(auto)’ type specifier is incompatible with C++ standards before C++14

warning: digit separators are incompatible with C++ standards before C++14

warning: initialized lambda captures are incompatible with C++ standards before C++14

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

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

Also controls -Wc++98-c++11-compat.

Diagnostic text:

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

### -Wc++98-compat

Also controls -Wc++98-c++11-c++14-compat, -Wc++98-c++11-compat, -Wc++98-compat-local-type-template-args, -Wc++98-compat-unnamed-type-template-args.

Diagnostic text:

warning: alias declarations are incompatible with C++98

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

warning: alignof expressions are incompatible with C++98

warning: C++11 attribute syntax is incompatible with C++98

warning: ‘auto’ type specifier is incompatible with C++98

warning: ‘constexpr’ specifier is incompatible with C++98

warning: constructor call from initializer list is incompatible with C++98

warning: ‘decltype’ type specifier is incompatible with C++98

warning: |
defaulted
deleted
| function definitions are incompatible with C++98

warning: delegating constructors are incompatible with C++98

warning: scalar initialized from empty initializer list is incompatible with C++98

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

warning: befriending enumeration type A is incompatible with C++98

warning: enumeration type in nested name specifier is incompatible with C++98

warning: explicit conversion functions are incompatible with C++98

warning: range-based for loop is incompatible with C++98

warning: friend declaration naming a member of the declaring class is incompatible with C++98

warning: generalized initializer lists are incompatible with C++98

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

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

warning: initialization of initializer_list object is incompatible with C++98

warning: inline namespaces are incompatible with C++98

warning: lambda expressions are incompatible with C++98

warning: ’<::’ is treated as digraph ‘<:’ (aka ‘[‘) followed by ‘:’ in C++98

warning: literal operators are incompatible with C++98

warning: universal character name referring to a control character is incompatible with C++98

warning: specifying character ‘A’ with a universal character name is incompatible with C++98

warning: noexcept specifications are incompatible with C++98

warning: noexcept expressions are incompatible with C++98

warning: use of non-static data member A in an unevaluated context is incompatible with C++98

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

warning: in-class initialization of non-static data members is incompatible with C++98

warning: |
anonymous struct
union
| member B with a non-trivial |
constructor
copy constructor
move constructor
copy assignment operator
move assignment operator
destructor
| is incompatible with C++98

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

warning: ’A’ keyword is incompatible with C++98

warning: passing object of trivial but non-POD type A through variadic |
function
block
method
constructor
| is incompatible with C++98

warning: raw string literals are incompatible with C++98

warning: reference qualifiers on functions are incompatible with C++98

warning: reference initialized from initializer list is incompatible with C++98

warning: rvalue references are incompatible with C++98

warning: scoped enumerations are incompatible with C++98

warning: substitution failure due to access control is incompatible with C++98

warning: static_assert declarations are incompatible with C++98

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

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

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

warning: use of null pointer as non-type template argument is incompatible with C++98

warning: non-type template argument referring to |
function
object
| B with internal linkage is incompatible with C++98

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

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

warning: |
class template
class template partial
variable template
variable template partial
function template
member function
static data member
member class
member enumeration
| specialization of B outside namespace C 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: use of ‘typename’ outside of a template is incompatible with C++98

warning: befriending B without ‘ |
struct
interface
union
class
enum
| ‘ keyword is incompatible with C++98

warning: using this character in an identifier 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
returning object
throwing object
copying member subobject
copying array element
allocating object
copying temporary
initializing base subobject
initializing vector element
| 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-local-type-template-args

Diagnostic text:

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

### -Wc++98-compat-pedantic

Also controls -Wc++98-c++11-c++14-compat-pedantic, -Wc++98-c++11-compat-pedantic, -Wc++98-compat, -Wc++98-compat-bind-to-temporary-copy.

Diagnostic text:

warning: implicit conversion from array size expression of type A to |
integral
enumeration
| type C is incompatible with C++98

warning: cast between pointer-to-function and pointer-to-object is incompatible with C++98

warning: empty macro arguments are incompatible with C++98

warning: commas at the end of enumerator lists are incompatible with C++98

warning: extern templates are incompatible with C++98

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

warning: C++98 requires newline at end of file

warning: #line number greater than 32767 is incompatible with C++98

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

warning: variadic macros are incompatible with C++98

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

Diagnostic text:

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

### -Wc11-extensions

Diagnostic text:

warning: anonymous unions are a C11 extension

warning: A is a C11-specific feature

warning: anonymous structs are a C11 extension

warning: generic selections are a C11-specific feature

warning: _Noreturn functions are a C11-specific feature

warning: _Static_assert is a C11-specific feature

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

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

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: 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: designated initializers are a C99 feature

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

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

### -Wchar-align

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

### -Wchar-subscripts

Diagnostic text:

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

warning: array subscript is of type ‘char’

### -Wclang-cl-pch

This diagnostic is enabled by default.

Diagnostic text:

warning: support for ‘/Yc’ with more than one source file not implemented yet; flag ignored

warning: support for ‘/Yc’ and ‘/Yu’ with different filenames not implemented yet; flags ignored

warning: support for ‘A’ without a filename not implemented yet; flag ignored

warning: support for ‘A’ without a corresponding /FI flag not implemented yet; flag ignored

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

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

warning: comparison of distinct pointer types (A and B) uses non-standard composite pointer type C

### -Wcomplex-component-init

Diagnostic text:

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

### -Wconditional-type-mismatch

This diagnostic is enabled by default.

Diagnostic text:

warning: pointer/integer type mismatch in conditional expression

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

Diagnostic text:

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

### -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 -Wbool-conversion, -Wconstant-conversion, -Wenum-conversion, -Wfloat-conversion, -Wint-conversion, -Wliteral-conversion, -Wnon-literal-null-conversion, -Wnull-conversion, -Wobjc-literal-conversion, -Wshorten-64-to-32, -Wsign-conversion, -Wstring-conversion.

Diagnostic text:

warning: implicit conversion discards imaginary component: A to B

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

warning: implicit conversion loses integer precision: A to B

warning: implicit conversion turns vector to scalar: A to B

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.

### -Wcoreturn-without-coawait

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘co_return’ used in a function that uses neither ‘co_await’ nor ‘co_yield’

### -Wcovered-switch-default

Diagnostic text:

warning: default label in switch which covers all enumeration values

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

### -Wctor-dtor-privacy

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

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

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

warning: binding reference |
subobject of
| member A to a temporary value

warning: initializing pointer member A with the stack address of parameter B

### -Wdangling-initializer-list

This diagnostic is enabled by default.

Diagnostic text:

warning: array backing the initializer list will be destroyed at the end of |
the full-expression
the constructor

### -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 (zlib not installed)

### -Wdeclaration-after-statement

Diagnostic text:

warning: ISO C90 forbids mixing declarations and code

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

This diagnostic is enabled by default.

Diagnostic text:

warning: cannot delete expression with pointer-to-‘void’ type A

warning: deleting pointer to incomplete type A may cause undefined behavior

### -Wdelete-non-virtual-dtor

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

Diagnostic text:

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

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

### -Wdeprecated

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

Also controls -Wdeprecated-attributes, -Wdeprecated-declarations, -Wdeprecated-increment-bool, -Wdeprecated-register, -Wdeprecated-writable-strings.

Diagnostic text:

warning: -O4 is equivalent to -O3

warning: access declarations are deprecated; use using declarations instead

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

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

warning: argument ‘A’ is deprecated, use ‘B’ instead

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

warning: dynamic exception specifications are deprecated

warning: OpenCL version A does not support the option ‘B’

warning: Use of ‘long’ with ‘__vector’ is deprecated

### -Wdeprecated-attributes

This diagnostic is enabled by default.

Diagnostic text:

warning: specifying vector types with the ‘mode’ attribute is deprecated; use the ‘vector_size’ attribute instead

### -Wdeprecated-declarations

This diagnostic is enabled by default.

Diagnostic text:

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

Diagnostic text:

warning: Implementing deprecated |
method
class
category

### -Wdeprecated-increment-bool

This diagnostic is enabled by default.

Diagnostic text:

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

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

This diagnostic is enabled by default.

Diagnostic text:

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

### -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: parameter ‘A’ is already documented

warning: unrecognized parameter passing direction, valid directions are ‘[in]’, ‘[out]’ and ‘[in,out]’

warning: ’ |
\
@
| param’ command used in a comment that is not attached to a function declaration

warning: parameter ‘A’ not found in the function declaration

warning: ’ |
\
@
| B’ command used in a comment that is attached to a |
function returning void
constructor
destructor
method returning void

warning: ’ |
\
@
| B’ command used in a comment that is not attached to a function or method declaration

warning: template parameter ‘A’ is already documented

warning: ’ |
\
@
| tparam’ command used in a comment that is not attached to a template declaration

warning: template parameter ‘A’ not found in the template declaration

warning: not a Doxygen trailing comment

warning: ’ |
\
@
| B’ command does not terminate a verbatim text block

### -Wdocumentation-deprecated-sync

Diagnostic text:

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

### -Wdocumentation-html

Diagnostic text:

warning: HTML end tag ‘A’ is forbidden

warning: HTML end tag does not match any start tag

warning: HTML tag ‘A’ requires an end tag

warning: HTML start tag ‘A’ closed by ‘B’

### -Wdocumentation-pedantic

Also controls -Wdocumentation-unknown-command.

Diagnostic text:

warning: whitespace is not allowed in parameter passing direction

### -Wdocumentation-unknown-command

Diagnostic text:

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

warning: unknown command tag name

### -Wdollar-in-identifier-extension

Diagnostic text:

warning: ’$’ in identifier

### -Wdouble-promotion

Diagnostic text:

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

### -Wduplicate-decl-specifier

This diagnostic is enabled by default.

Diagnostic text:

warning: duplicate ‘A’ declaration specifier

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

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

### -Weffc++

Synonym for -Wnon-virtual-dtor.

### -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++1z does not allow a decomposition group to be empty

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

Diagnostic text:

warning: comparison of two values with different enumeration types

### -Wenum-conversion

This diagnostic is enabled by default.

Diagnostic text:

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

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

### -Wexit-time-destructors

Diagnostic text:

warning: declaration requires an exit-time destructor

### -Wexpansion-to-defined

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

Diagnostic text:

warning: macro expansion producing ‘defined’ has undefined behavior

warning: macro expansion producing ‘defined’ has undefined behavior

### -Wexplicit-initialize-call

This diagnostic is enabled by default.

Diagnostic text:

warning: explicit call to +initialize results in duplicate call to +initialize

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

### -Wexplicit-ownership-type

Diagnostic text:

warning: method parameter of type A with no explicit ownership

### -Wextended-offsetof

Diagnostic text:

warning: using extended field designator is an 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 -Wignored-qualifiers, -Winitializer-overrides, -Wmissing-field-initializers, -Wmissing-method-return-type, -Wsemicolon-before-method-body, -Wsign-compare, -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.

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

### -Wfallback

This diagnostic is enabled by default.

Diagnostic text:

warning: falling back to A

### -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 of out of range value from A to B changes value from C to D

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

Diagnostic text:

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

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

warning: invalid position specified for |
field width
field precision

warning: cannot mix positional and non-positional arguments in format string

warning: length modifier ‘A’ results in undefined behavior or no effect with ‘B’ conversion specifier

warning: format string should not be a wide string

warning: position arguments in format strings start counting at 1 (not 0)

warning: format string missing

warning: object format flags cannot be used with ‘A’ conversion specifier

warning: ’ |
*
.*
| ‘ specified field |
width
precision
| is missing a matching ‘int’ argument

warning: field |
width
precision
| should have type B, but argument has type C

warning: missing object format flag

warning: format string contains ‘\0’ within the string body

warning: format string is not null-terminated

warning: flag ‘A’ is ignored when flag ‘B’ is present

warning: incomplete format specifier

warning: more ‘%%’ conversions than data arguments

warning: ’A’ is not a valid object format flag

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-invalid-specifier

This diagnostic is enabled by default.

Diagnostic text:

warning: invalid conversion specifier ‘A’

### -Wformat-non-iso

Diagnostic text:

warning: ’A’ |
length modifier
conversion specifier
| is not supported by ISO C

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

warning: positional arguments are not supported by ISO C

### -Wformat-nonliteral

Diagnostic text:

warning: format string is not a string literal

### -Wformat-pedantic

Diagnostic text:

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

### -Wfour-char-constants

Diagnostic text:

warning: multi-character character constant

### -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 of A bytes in B

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

This diagnostic is enabled by default.

Diagnostic text:

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

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

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

Diagnostic text:

warning: binary integer literals are a GNU extension

### -Wgnu-case-range

Diagnostic text:

warning: use of GNU case range extension

### -Wgnu-complex-integer

Diagnostic text:

warning: complex integer types are a GNU extension

### -Wgnu-compound-literal-initializer

Diagnostic text:

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

### -Wgnu-conditional-omitted-operand

Diagnostic text:

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

### -Wgnu-designator

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

Diagnostic text:

warning: use of GNU array range extension

warning: use of GNU ‘missing =’ extension in designator

warning: use of GNU old-style field designator extension

### -Wgnu-empty-initializer

Diagnostic text:

warning: use of GNU empty initializer extension

### -Wgnu-empty-struct

Diagnostic text:

warning: empty |
struct
union
| is a GNU extension

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

warning: |
struct
union
| without named members is a GNU extension

### -Wgnu-flexible-array-initializer

Diagnostic text:

warning: flexible array initialization is a GNU extension

### -Wgnu-flexible-array-union-member

Diagnostic text:

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

### -Wgnu-folding-constant

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-label-as-value

Diagnostic text:

warning: use of GNU address-of-label extension

warning: use of GNU indirect-goto extension

### -Wgnu-redeclared-enum

Diagnostic text:

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

### -Wgnu-statement-expression

Diagnostic text:

warning: use of GNU statement expression extension

### -Wgnu-static-float-init

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wgnu-string-literal-operator-template

This diagnostic is enabled by default.

Diagnostic text:

warning: string literal operator templates are a GNU extension

### -Wgnu-union-cast

Diagnostic text:

warning: cast to union type is a GNU extension

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

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wgnu-zero-line-directive

Diagnostic text:

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

### -Wgnu-zero-variadic-macro-arguments

Diagnostic text:

warning: must specify at least one argument for ‘…’ parameter of variadic macro

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

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

### -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: |
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: ‘abi_tag’ attribute on |
non-inline
anonymous
| namespace ignored

warning: attribute A after definition is ignored

warning: A attribute can only be applied to instance variables or properties

warning: A attribute ignored

warning: A attribute ignored on inline function

warning: ’A’ attribute cannot be specified on a definition

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

warning: ‘nonnull’ attribute applied to function with no pointer arguments

warning: ‘nonnull’ attribute when used on parameters takes no arguments

warning: A attribute ignored when parsing type

warning: A attribute only applies to a pointer or reference (B is invalid)

warning: A attribute only applies to |
constant
| pointer arguments

warning: attribute declaration must precede definition

warning: A attribute only applies to return values that are pointers

warning: A attribute only applies to return values that are pointers or references

warning: ‘sentinel’ attribute requires named arguments

warning: ‘sentinel’ attribute only supported for variadic |
functions
blocks

warning: A attribute argument not supported: B

warning: 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, variables, and Objective-C interfaces
functions and methods
parameters
functions, methods and blocks
functions, methods, and classes
functions, methods, and parameters
classes
enums
variables
methods
fields and global variables
structs
parameters and typedefs
variables and typedefs
thread-local variables
variables and fields
variables, data members and tag types
types and namespaces
Objective-C interfaces
methods and properties
struct or union
struct, union or class
types
Objective-C instance methods
init methods of interface or class extension declarations
variables, functions and classes
functions, variables, classes, and Objective-C interfaces
Objective-C protocols
variables with static or thread storage duration
functions and global variables
structs, unions, and typedefs
structs and typedefs
interface or protocol declarations
kernel functions
non-K&R-style functions
variables, enums, fields and typedefs
functions, methods, enums, and classes
structs, classes, variables, functions, and inline namespaces
variables, functions, methods, types, enumerations, enumerators, labels, and non-static data members

warning: attribute A ignored, because it cannot be applied to omitted return type

warning: calling convention A ignored for this target

warning: A calling convention ignored on constructor/destructor

warning: A calling convention ignored on variadic function

warning: attribute A ignored, because it cannot be applied to a type

warning: attribute A is ignored, place it after “ |
class
struct
interface
union
enum
| ” to apply attribute to type declaration

warning: ‘deprecated’ attribute on anonymous namespace ignored

warning: A redeclared inline; B attribute ignored

warning: attribute A is already applied with different parameters

warning: attribute A is already applied

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: ‘internal_linkage’ attribute on a non-static local variable is ignored

warning: qualifiers after comma in declarator list are ignored

warning: MIPS ‘interrupt’ attribute only applies to functions that have |
no parameters
a ‘void’ return type

warning: unknown attribute ‘A’

warning: A attribute only applies to |
Objective-C object
pointer
pointer-to-CF-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 is deprecated and ignored in OpenCL version B

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: Ignoring unsupported ‘A’ in the target attribute string

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

This diagnostic is enabled by default.

Diagnostic text:

warning: expected ‘=’ following ‘#pragma |
align
options align
| ‘ - ignored

warning: invalid alignment option in ‘#pragma |
align
options align
| ‘ - ignored

warning: ’#pragma comment A’ ignored

warning: missing argument to debug command ‘A’

warning: unexpected debug command ‘A’

warning: expected action or ‘)’ in ‘#pragma A’ - ignored

warning: missing ‘:’ after A - ignoring

warning: missing ‘:’ or ‘)’ after A - ignoring

warning: expected ‘enable’ or ‘disable’ - ignoring

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 ‘)’ 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: extra tokens at end of ‘#pragma A’ - ignored

warning: ’#pragma init_seg’ is only supported when targeting a Microsoft environment

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

warning: unknown action for ‘#pragma A’ - ignored

warning: unknown action ‘B’ for ‘#pragma A’ - 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: unknown OpenCL extension A - 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’

### -Wignored-qualifiers

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

Diagnostic text:

warning: ARC |
unused
__unsafe_unretained
__strong
__weak
__autoreleasing
| lifetime qualifier on return type is ignored

warning: ’A’ qualifier on omitted return type B has no effect

warning: ’A’ type qualifier |
s
| on return type |
:has
:have
| no effect

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

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-conversion-floating-point-to-bool

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wimplicit-exception-spec-mismatch

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wimplicit-fallthrough

Also controls -Wimplicit-fallthrough-per-function.

Diagnostic text:

warning: fallthrough annotation in unreachable code

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-function-declaration

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

Diagnostic text:

warning: implicit declaration of function A is invalid in C99

warning: implicitly declaring library function ‘A’ with type B

error: use of unknown builtin A

warning: implicit declaration of function A

### -Wimplicit-int

This diagnostic is enabled by default.

Diagnostic text:

warning: type specifier missing, defaults to ‘int’

### -Wimplicit-retain-self

Diagnostic text:

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

### -Wimplicitly-unsigned-literal

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wimport

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

### -Wimport-preprocessor-directive-pedantic

Diagnostic text:

warning: #import is a language extension

### -Winaccessible-base

This diagnostic is enabled by default.

Diagnostic text:

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

### -Winclude-next-absolute-path

This diagnostic is enabled by default.

Diagnostic text:

warning: #include_next with absolute path

### -Winclude-next-outside-header

This diagnostic is enabled by default.

Diagnostic text:

warning: #include_next in primary source file

### -Wincompatible-function-pointer-types

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wincompatible-library-redeclaration

This diagnostic is enabled by default.

Diagnostic text:

warning: incompatible redeclaration of library function A

### -Wincompatible-ms-struct

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

Diagnostic text:

error: ms_struct may not produce Microsoft-compatible layouts for classes with base classes or virtual functions

### -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 different types
passing to parameter of different type
returning from function with different return type
converting between types
initializing with expression of different type
sending to parameter of different type
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 different types
passing to parameter of different type
returning from function with different return type
converting between types
initializing with expression of different type
sending to parameter of different type
casting between types
| discards qualifiers in nested pointer types

warning: |
assigning to different types
passing to parameter of different type
returning from function with different return type
converting between types
initializing with expression of different type
sending to parameter of different type
casting between types
| discards qualifiers

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

This diagnostic is enabled by default.

Diagnostic text:

warning: missing submodule ‘A’

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-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++1z does not allow incrementing expression of type bool

### -Winfinite-recursion

Diagnostic text:

warning: all paths through this function will call itself

### -Winit-self

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

### -Winitializer-overrides

This diagnostic is enabled by default.

Diagnostic text:

warning: initializer overrides prior initialization of this subobject

warning: subobject initialization overrides initialization of other fields within its enclosing subobject

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

This diagnostic is enabled by default.

Diagnostic text:

warning: replacement function A cannot be declared ‘inline’

### -Winstantiation-after-specialization

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wint-conversion

This diagnostic is enabled by default.

Diagnostic text:

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

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

### -Wint-conversions

Synonym for -Wint-conversion.

### -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: optimization level ‘A’ is not supported; using ‘B C’ instead

### -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 |
function
constructor
| never produces a constant expression

### -Winvalid-iboutlet

This diagnostic is enabled by default.

Diagnostic text:

warning: |
instance variable
property
| with A attribute must be an object type (invalid B)

warning: IBOutletCollection properties should be copy/strong and not assign

### -Winvalid-initializer-from-system-header

This diagnostic is enabled by default.

Diagnostic text:

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

### -Winvalid-noreturn

This diagnostic is enabled by default.

Diagnostic text:

warning: function declared ‘noreturn’ should not return

warning: function A declared ‘noreturn’ should not return

### -Winvalid-offsetof

This diagnostic is enabled by default.

Diagnostic text:

warning: offset of on non-POD type A

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

### -Winvalid-or-nonexistent-directory

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

Diagnostic text:

warning: environment variable SCE_ORBIS_SDK_DIR is set, but points to invalid or nonexistent directory ‘A’

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

### -Winvalid-pch

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

### -Winvalid-pp-token

This diagnostic is enabled by default.

Diagnostic text:

warning: empty character constant

warning: missing terminating |
‘
‘”’
| character

### -Winvalid-source-encoding

This diagnostic is enabled by default.

Diagnostic text:

warning: illegal character encoding in character literal

warning: illegal character encoding in string literal

### -Winvalid-token-paste

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

Diagnostic text:

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

### -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 of K&R function parameter is not compatible with parameter type declared in a previous prototype

### -Wlanguage-extension-token

Diagnostic text:

warning: extension used

### -Wlarge-by-value-copy

This diagnostic is enabled by default.

Diagnostic text:

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

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

### -Wliblto

This diagnostic is enabled by default.

Diagnostic text:

warning: libLTO.dylib relative to clang installed dir not found; using ‘ld’ default search path instead

### -Wliteral-conversion

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wliteral-range

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wlogical-op-parentheses

This diagnostic is enabled by default.

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: ISO C++ does not allow ‘main’ to be used by a program

warning: ‘main’ is not allowed to be declared _Noreturn

warning: ‘main’ is not allowed to be declared variadic

warning: only one parameter on ‘main’ declaration

warning: variable named ‘main’ with external linkage has undefined behavior

warning: ‘main’ should not be declared static

### -Wmain-return-type

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wmalformed-warning-check

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wmany-braces-around-scalar-init

This diagnostic is enabled by default.

Diagnostic text:

warning: too many braces around scalar initializer

### -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-anon-tag, -Wmicrosoft-cast, -Wmicrosoft-charize, -Wmicrosoft-comment-paste, -Wmicrosoft-const-init, -Wmicrosoft-cpp-macro, -Wmicrosoft-default-arg-redefinition, -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-mutable-reference, -Wmicrosoft-pure-definition, -Wmicrosoft-redeclare-static, -Wmicrosoft-sealed, -Wmicrosoft-template, -Wmicrosoft-union-member-reference, -Wmicrosoft-unqualified-friend, -Wmicrosoft-using-decl, -Wmicrosoft-void-pseudo-dtor.

### -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-end-of-file

Diagnostic text:

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

### -Wmicrosoft-enum-forward-reference

Diagnostic text:

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

### -Wmicrosoft-enum-value

This diagnostic is enabled by default.

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: A is missing exception specification ‘B’

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

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wmicrosoft-mutable-reference

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wmicrosoft-pure-definition

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wmicrosoft-redeclare-static

Diagnostic text:

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

### -Wmicrosoft-sealed

This diagnostic is enabled by default.

Diagnostic text:

warning: ‘sealed’ keyword is a Microsoft extension

### -Wmicrosoft-template

This diagnostic is enabled by default.

Diagnostic text:

warning: duplicate explicit instantiation of A ignored as a Microsoft extension

warning: use of identifier A found via unqualified lookup into dependent bases of class templates is a Microsoft extension

warning: explicit specialization of A within class scope 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 outside namespace enclosing C is a Microsoft extension

warning: template argument for template type parameter must be a type; omitted ‘typename’ is a Microsoft extension

warning: use of undeclared identifier A; unqualified lookup into dependent bases of class template B is a Microsoft extension

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

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

### -Wmismatched-return-types

This diagnostic is enabled by default.

Diagnostic text:

warning: conflicting return type in implementation of A

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

warning: |
struct
interface
class
template
| C was previously declared as a |
struct
interface
class
template

### -Wmissing-braces

Diagnostic text:

warning: suggest braces around initialization of subobject

### -Wmissing-declarations

This diagnostic is enabled by default.

Diagnostic text:

warning: declaration does not declare anything

warning: ’A’ is not permitted on a declaration of a type

warning: typedef requires a name

warning: ’A’ ignored on this declaration

### -Wmissing-exception-spec

This diagnostic is enabled by default.

Diagnostic text:

warning: A is missing exception specification ‘B’

### -Wmissing-field-initializers

Diagnostic text:

warning: missing field A initializer

### -Wmissing-format-attribute

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

### -Wmissing-include-dirs

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

### -Wmissing-method-return-type

Diagnostic text:

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

### -Wmissing-noreturn

Diagnostic text:

warning: block could be declared with attribute ‘noreturn’

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

### -Wmissing-prototype-for-cc

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wmissing-prototypes

Diagnostic text:

warning: no previous prototype for function A

### -Wmissing-selector-name

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wmissing-sysroot

This diagnostic is enabled by default.

Diagnostic text:

warning: no such sysroot directory: ‘A’

### -Wmissing-variable-declarations

Diagnostic text:

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

### -Rmodule-build

Diagnostic text:

remark: building module ‘A’ as ‘B’

remark: finished building module ‘A’

### -Wmodule-conflict

This diagnostic is enabled by default.

Diagnostic text:

warning: module ‘A’ conflicts with already-imported module ‘B’: C

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

### -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 -Wcast-of-sel-type, -Wchar-subscripts, -Wcomment, -Wdelete-non-virtual-dtor, -Wextern-c-compat, -Wfor-loop-analysis, -Wformat, -Wimplicit, -Winfinite-recursion, -Wmismatched-tags, -Wmissing-braces, -Wmove, -Wmultichar, -Wobjc-designated-initializers, -Wobjc-missing-super-calls, -Woverloaded-virtual, -Wprivate-extern, -Wreorder, -Wreturn-type, -Wself-assign, -Wself-move, -Wsizeof-array-argument, -Wsizeof-array-decay, -Wstring-plus-int, -Wtrigraphs, -Wuninitialized, -Wunknown-pragmas, -Wunused, -Wvolatile-register-var.

### -Wmove

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

### -Wmsvc-include

Synonym for -Wmicrosoft-include.

### -Wmultichar

This diagnostic is enabled by default.

Diagnostic text:

warning: multi-character character constant

### -Wmultiple-move-vbase

This diagnostic is enabled by default.

Diagnostic text:

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

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

warning: no newline at end of file

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

### -Wnon-modular-include-in-module

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

Diagnostic text:

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

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

Diagnostic text:

warning: A has virtual functions but non-virtual destructor

### -Wnonnull

This diagnostic is enabled by default.

Diagnostic text:

warning: null passed to a callee that requires a non-null argument

warning: null returned from |
function
method
| that requires a non-null return value

### -Wnonportable-cfstrings

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

### -Wnonportable-include-path

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wnonportable-system-include-path

Diagnostic text:

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

### -Wnonportable-vector-initialization

This diagnostic is enabled by default.

Diagnostic text:

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

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

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

Diagnostic text:

warning: |
pointer
block pointer
member pointer
| 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

### -Wnullable-to-nonnull-conversion

Diagnostic text:

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

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

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wobjc-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-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-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-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 non-GC 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-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

### -Wodr

This diagnostic is enabled by default.

Diagnostic text:

warning: type A has incompatible definitions in different translation units

### -Wold-style-cast

Diagnostic text:

warning: use of old-style cast

### -Wold-style-definition

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

### -Wopencl-unsupported-rgba

This diagnostic is enabled by default.

Diagnostic text:

warning: vector component name ‘A’ is an OpenCL version 2.2 feature

### -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: zero linear step (A |
and other variables in clause
| should probably be const)

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

This diagnostic is enabled by default.

Diagnostic text:

warning: declaration is not declared in any declare target region

### -Woption-ignored

This diagnostic is enabled by default.

Diagnostic text:

warning: option ‘A’ was ignored by the PS4 toolchain, using ‘-fPIC’

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

### -Wover-aligned

Diagnostic text:

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

### -Woverflow

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

### -Woverlength-strings

Diagnostic text:

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

### -Woverloaded-shift-op-parentheses

This diagnostic is enabled by default.

Diagnostic text:

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

### -Woverloaded-virtual

Diagnostic text:

warning: A hides overloaded virtual |
function
functions

### -Woverride-module

This diagnostic is enabled by default.

Diagnostic text:

warning: overriding the module target triple with A

### -Woverriding-method-mismatch

Diagnostic text:

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

warning: conflicting parameter types in declaration of A

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

warning: conflicting return type in declaration of A

warning: conflicting variadic declaration of method and its implementation

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

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

### -Woverriding-t-option

This diagnostic is enabled by default.

Diagnostic text:

warning: overriding ‘A’ option with ‘B’

### -Wpacked

Diagnostic text:

warning: packed attribute is unnecessary for A

### -Wpadded

Diagnostic text:

warning: padding |
struct
interface
class
| B with C |
byte
bit
s
| to align anonymous bit-field

warning: padding |
struct
interface
class
| B with C |
byte
bit
s
| to align E

warning: padding size of A with B |
byte
bit
s
| to alignment boundary

### -Wparentheses

This diagnostic is enabled by default.

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

Diagnostic text:

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

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

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

### -Wparentheses-equality

This diagnostic is enabled by default.

Diagnostic text:

warning: equality comparison with extraneous parentheses

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

### -Wpedantic

Also controls -Wc++11-extra-semi, -Wc++11-long-long, -Wc++14-binary-literal, -Wc11-extensions, -Wcomplex-component-init, -Wdeclaration-after-statement, -Wdollar-in-identifier-extension, -Wembedded-directive, -Wempty-translation-unit, -Wextended-offsetof, -Wflexible-array-extensions, -Wformat-pedantic, -Wfour-char-constants, -Wgnu-anonymous-struct, -Wgnu-auto-type, -Wgnu-binary-literal, -Wgnu-case-range, -Wgnu-complex-integer, -Wgnu-compound-literal-initializer, -Wgnu-conditional-omitted-operand, -Wgnu-empty-initializer, -Wgnu-empty-struct, -Wgnu-flexible-array-initializer, -Wgnu-flexible-array-union-member, -Wgnu-folding-constant, -Wgnu-imaginary-constant, -Wgnu-include-next, -Wgnu-label-as-value, -Wgnu-redeclared-enum, -Wgnu-statement-expression, -Wgnu-union-cast, -Wgnu-zero-line-directive, -Wgnu-zero-variadic-macro-arguments, -Wimport-preprocessor-directive-pedantic, -Wkeyword-macro, -Wlanguage-extension-token, -Wlong-long, -Wmicrosoft-charize, -Wmicrosoft-comment-paste, -Wmicrosoft-cpp-macro, -Wmicrosoft-end-of-file, -Wmicrosoft-enum-forward-reference, -Wmicrosoft-fixed-enum, -Wmicrosoft-flexible-array, -Wmicrosoft-redeclare-static, -Wnested-anon-types, -Wnullability-extension, -Woverlength-strings, -Wretained-language-linkage, -Wvariadic-macros, -Wvla-extension, -Wzero-length-array.

Diagnostic text:

warning: ‘enable_if’ is a clang extension

warning: designated initializers are a C99 feature

warning: ISO C++ does not allow ‘main’ to be used by a program

warning: C++98 requires an accessible copy constructor for class C when binding a reference to a temporary; was |
private
protected

warning: anonymous |
struct
union
| cannot be ‘B’

warning: no viable constructor |
copying variable
copying parameter
returning object
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: parameter A was not declared, defaulting to type ‘int’

warning: qualifier in explicit instantiation of A requires a template-id (a typedef is not permitted)

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

warning: ISO C forbids forward references to ‘enum’ types

warning: ISO C restricts enumerator values to range of ‘int’ (A is too |
small
large
| )

warning: size of static array must be an integer constant expression

warning: initializer for aggregate is not a compile-time constant

warning: flexible array members are a C99 feature

warning: invalid application of ‘ |
sizeof
alignof
vec_step
| ‘ to a function type

warning: invalid application of ‘ |
sizeof
alignof
vec_step
| ‘ to a void type

warning: ISO C90 does not allow subscripting non-lvalue array

warning: subscript of a pointer to void is a GNU 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: arithmetic on |
a
| pointer |
s
| to void is a GNU extension

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

warning: ISO C does not support ‘++’/’–’ on complex integer type A

warning: ISO C does not support ‘~’ for complex conjugation of A

warning: complex numbers are an extension in a freestanding C99 implementation

warning: cast between pointer-to-function and pointer-to-object is an extension

warning: implicit conversion from array size expression of type A to |
integral
enumeration
| type C is a C++11 extension

warning: |
assigning to different types
passing to parameter of different type
returning from function with different return type
converting between types
initializing with expression of different type
sending to parameter of different type
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: use of the A attribute is a C++14 extension

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

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

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

warning: ’A’ cannot be signed or unsigned

warning: |
qualifier in
static
| array size |
‘[*] ‘
| is a C99 feature

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

warning: ‘__thread’ before ‘A’

warning: type-less parameter names in function declaration

warning: variable declaration in for loop is a C99-specific feature

warning: compound literals are a C99-specific feature

warning: commas at the end of enumerator lists are a C99-specific feature

warning: commas at the end of enumerator lists are a C++11 extension

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

warning: use of GNU array range extension

warning: exception specification of ‘…’ is a Microsoft extension

warning: extern templates are a C++11 extension

warning: multi-line // comment

warning: // comments are not allowed in this language

warning: no newline at end of file

warning: use of non-standard escape character ‘\A’

warning: hexadecimal floating constants are a C99 feature

warning: hexadecimal floating literals are a C++1z feature

warning: #ident is a language extension

warning: #warning is a language extension

warning: comma operator in operand of #if

warning: __VA_ARGS__ can only appear in the expansion of a C99 variadic macro

warning: empty macro arguments are a C99 feature

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

warning: macro expansion producing ‘defined’ has undefined behavior

### -Wpedantic-core-features

Diagnostic text:

warning: OpenCL extension A is core feature or supported optional core feature - ignoring

### -Wpessimizing-move

Diagnostic text:

warning: moving a temporary object prevents copy elision

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

### -Wpointer-arith

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

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

warning: invalid application of ‘ |
sizeof
alignof
vec_step
| ‘ to a function type

warning: invalid application of ‘ |
sizeof
alignof
vec_step
| ‘ to a void type

warning: subtraction of pointers to type A of zero size has undefined behavior

### -Wpointer-bool-conversion

This diagnostic is enabled by default.

Diagnostic text:

warning: nonnull |
function call
parameter
| ’B’ will evaluate to ‘true’ on first encounter

warning: address of |
function
array
| ’B’ will always evaluate to ‘true’

### -Wpointer-sign

This diagnostic is enabled by default.

Diagnostic text:

warning: |
assigning to different types
passing to parameter of different type
returning from function with different return type
converting between types
initializing with expression of different type
sending to parameter of different type
casting between types
| converts between pointers to integer types with different sign

### -Wpointer-to-int-cast

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

### -Wpointer-type-mismatch

This diagnostic is enabled by default.

Diagnostic text:

warning: pointer type mismatch

### -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-once-outside-header

This diagnostic is enabled by default.

Diagnostic text:

warning: #pragma once in main 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, -Wunknown-pragmas.

Diagnostic text:

warning: #pragma redefine_extname is applicable to external C declarations only; not applied to |
function
variable
| B

### -Wpredefined-identifier-outside-function

This diagnostic is enabled by default.

Diagnostic text:

warning: predefined identifier is only valid inside function

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

### -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
| no data and C |
: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 A was selected for synthesis

### -Wqualified-void-return-type

This diagnostic is enabled by default.

Diagnostic text:

warning: function cannot return qualified void type A

### -Wrange-loop-analysis

Diagnostic text:

warning: loop variable A is initialized with a value of a different type resulting in a copy

warning: loop variable A of type B creates a copy from type C

warning: loop variable A is always a copy because the range of type B does not return a reference

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

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

### -Wregister

This diagnostic is enabled by default.

Also controls -Wdeprecated-register.

Diagnostic text:

error: ISO C++1z 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

Diagnostic text:

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

### -Wrequires-super-attribute

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wreserved-id-macro

Diagnostic text:

warning: macro name is a reserved identifier

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

### -Wretained-language-linkage

Diagnostic text:

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

### -Wreturn-stack-address

This diagnostic is enabled by default.

Diagnostic text:

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 B returned

### -Wreturn-type

This diagnostic is enabled by default.

Also controls -Wreturn-type-c-linkage.

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

warning: control reaches end of non-void function

warning: control reaches end of non-void lambda

warning: control may reach end of non-void function

warning: control may reach end of non-void lambda

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

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

### -Wrtti-for-exceptions

This diagnostic is enabled by default.

Diagnostic text:

warning: implicitly enabling rtti for exception handling

### -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 blacklisted file
is blacklisted

### -Wsection

This diagnostic is enabled by default.

Diagnostic text:

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

Diagnostic text:

warning: explicitly assigning value of variable of type A to itself

### -Wself-assign-field

This diagnostic is enabled by default.

Diagnostic text:

warning: assigning |
field
instance variable
| to itself

### -Wself-move

Diagnostic text:

warning: explicitly moving variable of type A to itself

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

### -Wshadow-all

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

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

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

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

### -Wsign-promo

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

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

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

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

Diagnostic text:

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

warning: unexpected ‘#pragma omp …’ in program

### -Wspir-compat

Diagnostic text:

warning: sampler initializer has invalid A bits

### -Wstack-protector

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

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

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

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

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

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

### -Wsuper-class-method-mismatch

Diagnostic text:

warning: method parameter type does not match super class method parameter type

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

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

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

### -Wtautological-compare

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

Also controls -Wtautological-constant-out-of-range-compare, -Wtautological-overlap-compare, -Wtautological-pointer-compare, -Wtautological-undefined-compare.

Diagnostic text:

warning: |
self-
array
| comparison always evaluates to |
false
true
a constant

warning: bitwise comparison always evaluates to |
false
true

warning: comparison of unsigned |
enum
| expression A is always B

warning: comparison of A unsigned |
enum
| expression is always B

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

This diagnostic is enabled by default.

Diagnostic text:

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

### -Wtautological-overlap-compare

Diagnostic text:

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

### -Wtentative-definition-incomplete-type

This diagnostic is enabled by default.

Diagnostic text:

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

### -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: expecting A ’B’ to be held at start of each loop

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: A ’B’ is acquired exclusively and shared in the same scope

warning: A ’B’ is not held on every path through here

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: |
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: invalid capability name ‘A’; capability name must be ‘mutex’ or ‘role’

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(“mutex”)’ attribute

warning: A only applies to pointer types; type here is B

warning: ignoring A attribute because its argument is invalid

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

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

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

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

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

Diagnostic text:

warning: A is not defined, evaluates to 0

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

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

Diagnostic text:

warning: A is only available conditionally

warning: A may be partial because the receiver type is unknown

warning: A is partial: B

warning: A is only available on B C or newer

### -Wunicode

This diagnostic is enabled by default.

Diagnostic text:

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

This diagnostic is enabled by default.

Diagnostic text:

warning: treating Unicode character as whitespace

### -Wuninitialized

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

Also controls -Wsometimes-uninitialized, -Wstatic-self-init.

Diagnostic text:

warning: base class A is uninitialized when used here to access B

warning: field A is uninitialized when used here

warning: reference A is not yet bound to a value when used here

warning: block pointer variable A is uninitialized 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

### -Wunknown-argument

This diagnostic is enabled by default.

Diagnostic text:

warning: unknown argument ignored in clang-cl: ‘A’

### -Wunknown-attributes

This diagnostic is enabled by default.

Diagnostic text:

warning: unknown attribute A ignored

### -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: unknown warning group ‘A’, ignored

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_ACCESS ON is not supported, ignoring pragma

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

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

### -Wunreachable-code

Also controls -Wunreachable-code-loop-increment.

Diagnostic text:

warning: code will never be executed

### -Wunreachable-code-aggressive

Controls -Wunreachable-code, -Wunreachable-code-break, -Wunreachable-code-return.

### -Wunreachable-code-break

Diagnostic text:

warning: ‘break’ will never be executed

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

### -Wunsequenced

This diagnostic is enabled by default.

Diagnostic text:

warning: multiple unsequenced modifications to A

warning: unsequenced modification and access to A

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

This diagnostic is enabled by default.

Diagnostic text:

warning: target does not support ‘protected’ visibility; using ‘default’

### -Wunused

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

Controls -Wunused-argument, -Wunused-function, -Wunused-label, -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-command-line-argument

This diagnostic is enabled by default.

Diagnostic text:

warning: joined argument expects additional value: ‘A’

warning: argument ‘-fdiagnostics-show-hotness’ requires profile-guided optimization information

warning: A: ‘B’ input unused |
when ‘D’ is present

warning: A: ‘B’ input unused in cpp mode

warning: A: previously preprocessed input |
unused when ‘C’ is present

warning: argument unused during compilation: ‘A’

### -Wunused-comparison

This diagnostic is enabled by default.

Diagnostic text:

warning: |
in
| equality
relational
| 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-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

### -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: container access result unused - container access should not be used for side effects

warning: expression result unused

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 not starting with ‘_’ are reserved |
; no literal will invoke this operator

### -Wvarargs

This diagnostic is enabled by default.

Diagnostic text:

warning: second argument to ‘va_start’ is not the last named parameter

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

Diagnostic text:

warning: named variadic macros are a GNU extension

warning: variadic macros are a C99 feature

### -Wvector-conversion

Diagnostic text:

warning: incompatible vector types |
assigning to different types
passing to parameter of different type
returning from function with different return type
converting between types
initializing with expression of different type
sending to parameter of different type
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

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

Diagnostic text:

warning: variable length array used

### -Wvla-extension

Diagnostic text:

warning: variable length arrays are a C99 feature

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

### -Wweak-template-vtables

Diagnostic text:

warning: explicit template instantiation A will emit a vtable in every translation unit

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

### -Wzero-length-array

Diagnostic text:

warning: zero size arrays are an extension