blob: d8c486fc3b3c8e79435ca35cd38f86205fb5ba97 [file] [log] [blame]
Richard Smithb6a3b4b2016-09-12 05:58:29 +00001..
2 -------------------------------------------------------------------
3 NOTE: This file is automatically generated by running clang-tblgen
4 -gen-diag-docs. Do not edit this file by hand!!
5 -------------------------------------------------------------------
6
7.. Add custom CSS to output. FIXME: This should be put into <head> rather
8 than the start of <body>.
9.. raw:: html
10
11 <style>
12 table.docutils {
13 width: 1px;
14 }
15 table.docutils td {
16 border: none;
Richard Smith14568ff2016-09-14 02:24:50 +000017 padding: 0 0 0 0.2em;
Richard Smithb6a3b4b2016-09-12 05:58:29 +000018 vertical-align: middle;
19 white-space: nowrap;
20 width: 1px;
Richard Smith14568ff2016-09-14 02:24:50 +000021 font-family: monospace;
Richard Smithb6a3b4b2016-09-12 05:58:29 +000022 }
23 table.docutils tr + tr {
24 border-top: 0.2em solid #aaa;
25 }
26 .error {
27 font-family: monospace;
28 font-weight: bold;
Richard Smithac205312016-09-12 17:55:49 +000029 color: #c00;
Richard Smithb6a3b4b2016-09-12 05:58:29 +000030 }
31 .warning {
32 font-family: monospace;
33 font-weight: bold;
Richard Smith9d5f86b2016-09-14 00:35:56 +000034 color: #80a;
Richard Smithb6a3b4b2016-09-12 05:58:29 +000035 }
36 .remark {
37 font-family: monospace;
38 font-weight: bold;
39 color: #00c;
40 }
41 .diagtext {
42 font-family: monospace;
43 font-weight: bold;
44 }
45 </style>
46
Richard Smith14568ff2016-09-14 02:24:50 +000047.. FIXME: rST doesn't support formatting this, so we format all <td> elements
48 as monospace font face instead.
Richard Smithb6a3b4b2016-09-12 05:58:29 +000049.. |nbsp| unicode:: 0xA0
50 :trim:
51
52.. Roles generated by clang-tblgen.
53.. role:: error
54.. role:: warning
55.. role:: remark
56.. role:: diagtext
57.. role:: placeholder(emphasis)
58
59=========================
60Diagnostic flags in Clang
61=========================
62.. contents::
63 :local:
64
65Introduction
66============
67
68This page lists the diagnostic flags currently supported by Clang.
69
70Diagnostic flags
71================
72
73-W
74--
75Synonym for `-Wextra`_.
76
77
78-W#pragma-messages
79------------------
80This diagnostic is enabled by default.
81
82**Diagnostic text:**
83
84The text of this diagnostic is not controlled by Clang.
85
86
87-W#warnings
88-----------
89This diagnostic is enabled by default.
90
91**Diagnostic text:**
92
93The text of this diagnostic is not controlled by Clang.
94
95
96-WCFString-literal
97------------------
98This diagnostic is enabled by default.
99
100**Diagnostic text:**
101
102+------------------------------------------------------------------------------------------------------------------------------------+
103|:warning:`warning:` |nbsp| :diagtext:`input conversion stopped due to an input byte that does not belong to the input codeset UTF-8`|
104+------------------------------------------------------------------------------------------------------------------------------------+
105
106
107-WCL4
108-----
109Some of the diagnostics controlled by this flag are enabled by default.
110
111Controls `-Wall`_, `-Wextra`_.
112
113
114-WIndependentClass-attribute
115----------------------------
116This diagnostic is enabled by default.
117
118**Diagnostic text:**
119
120+------------------------------------------------------------------------------------------------------------------------------+
121|:warning:`warning:` |nbsp| :diagtext:`'objc\_independent\_class' attribute may be put on a typedef only; attribute is ignored`|
122+------------------------------------------------------------------------------------------------------------------------------+
123
124+----------------------------------------------------------------------------------------------------------------------------------------------------+
125|:warning:`warning:` |nbsp| :diagtext:`'objc\_independent\_class' attribute may be put on Objective-C object pointer type only; attribute is ignored`|
126+----------------------------------------------------------------------------------------------------------------------------------------------------+
127
128
129-WNSObject-attribute
130--------------------
131This diagnostic is enabled by default.
132
133**Diagnostic text:**
134
135+--------------------------------------------------------------------------------------------------------------+
136|:warning:`warning:` |nbsp| :diagtext:`'NSObject' attribute may be put on a typedef only; attribute is ignored`|
137+--------------------------------------------------------------------------------------------------------------+
138
139
140-Wabi
141-----
142This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
143
144-Wabsolute-value
145----------------
146This diagnostic is enabled by default.
147
148**Diagnostic text:**
149
150+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
151|:warning:`warning:` |nbsp| :diagtext:`absolute value function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`given an argument of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`but has parameter of type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`which may cause truncation of value`|
152+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
153
154+---------------------------------------------------------------------------+----------------------+---------------------------------------------------------------------------------+
155|:warning:`warning:` |nbsp| :diagtext:`taking the absolute value of` |nbsp| |+--------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is suspicious`|
156| ||:diagtext:`pointer` || |
157| |+--------------------+| |
158| ||:diagtext:`function`|| |
159| |+--------------------+| |
160| ||:diagtext:`array` || |
161| |+--------------------+| |
162+---------------------------------------------------------------------------+----------------------+---------------------------------------------------------------------------------+
163
164+------------------------------------------------------------------------------------------------------------------------------------------+
165|:warning:`warning:` |nbsp| :diagtext:`taking the absolute value of unsigned type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has no effect`|
166+------------------------------------------------------------------------------------------------------------------------------------------+
167
168+----------------------------------------------------+----------------------------+------------------------------------------------------------------------------------------------------------------+----------------------------+------------------------+
169|:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| |+--------------------------+| |nbsp| :diagtext:`absolute value function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when argument is of` |nbsp| |+--------------------------+| |nbsp| :diagtext:`type`|
170| ||:diagtext:`integer` || ||:diagtext:`integer` || |
171| |+--------------------------+| |+--------------------------+| |
172| ||:diagtext:`floating point`|| ||:diagtext:`floating point`|| |
173| |+--------------------------+| |+--------------------------+| |
174| ||:diagtext:`complex` || ||:diagtext:`complex` || |
175| |+--------------------------+| |+--------------------------+| |
176+----------------------------------------------------+----------------------------+------------------------------------------------------------------------------------------------------------------+----------------------------+------------------------+
177
178
179-Wabstract-final-class
180----------------------
181This diagnostic is enabled by default.
182
183**Diagnostic text:**
184
185+-----------------------------------------------------------------+--------------------+-------------+
186|:warning:`warning:` |nbsp| :diagtext:`abstract class is marked '`|+------------------+|:diagtext:`'`|
187| ||:diagtext:`final` || |
188| |+------------------+| |
189| ||:diagtext:`sealed`|| |
190| |+------------------+| |
191+-----------------------------------------------------------------+--------------------+-------------+
192
193
194-Wabstract-vbase-init
195---------------------
196**Diagnostic text:**
197
198+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
199|:warning:`warning:` |nbsp| :diagtext:`initializer for virtual base class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of abstract class` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will never be used`|
200+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
201
202
203-Waddress
204---------
205This diagnostic is enabled by default.
206
207Controls `-Wpointer-bool-conversion`_, `-Wstring-compare`_, `-Wtautological-pointer-compare`_.
208
209
210-Waddress-of-array-temporary
211----------------------------
212This diagnostic is enabled by default.
213
214**Diagnostic text:**
215
216+---------------------------------------------------------------------------------------------------------------------------------------------+
217|:warning:`warning:` |nbsp| :diagtext:`pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression`|
218+---------------------------------------------------------------------------------------------------------------------------------------------+
219
220
221-Waddress-of-packed-member
222--------------------------
223This diagnostic is enabled by default.
224
225**Diagnostic text:**
226
227+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
228|:warning:`warning:` |nbsp| :diagtext:`taking address of packed member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of class or structure` |nbsp| :placeholder:`B` |nbsp| :diagtext:`may result in an unaligned pointer value`|
229+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
230
231
232-Waddress-of-temporary
233----------------------
234This diagnostic is an error by default, but the flag ``-Wno-address-of-temporary`` can be used to disable the error.
235
236**Diagnostic text:**
237
238+-----------------------------------------------------------------------------------------------------------+
239|:error:`error:` |nbsp| :diagtext:`taking the address of a temporary object of type` |nbsp| :placeholder:`A`|
240+-----------------------------------------------------------------------------------------------------------+
241
242
243-Waggregate-return
244------------------
245This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
246
247-Wall
248-----
249Some of the diagnostics controlled by this flag are enabled by default.
250
251Controls `-Wmost`_, `-Wparentheses`_, `-Wswitch`_, `-Wswitch-bool`_.
252
253
Richard Smithcf9f4222017-01-20 19:27:09 +0000254-Walloca-with-align-alignof
255---------------------------
256This diagnostic is enabled by default.
257
258**Diagnostic text:**
259
260+--------------------------------------------------------------------------------------------------------------------+
261|:warning:`warning:` |nbsp| :diagtext:`second argument to \_\_builtin\_alloca\_with\_align is supposed to be in bits`|
262+--------------------------------------------------------------------------------------------------------------------+
263
264
265-Wambiguous-delete
266------------------
267This diagnostic is enabled by default.
268
269**Diagnostic text:**
270
271+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
272|:warning:`warning:` |nbsp| :diagtext:`multiple suitable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`functions for` |nbsp| :placeholder:`B`:diagtext:`; no 'operator delete' function will be invoked if initialization throws an exception`|
273+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
274
275
Richard Smithb6a3b4b2016-09-12 05:58:29 +0000276-Wambiguous-ellipsis
277--------------------
278This diagnostic is enabled by default.
279
280**Diagnostic text:**
281
282+------------------------------------------------------------------------------------------------+---------------------------------------------+
283|:warning:`warning:` |nbsp| :diagtext:`'...' in this location creates a C-style varargs function`|+-------------------------------------------+|
284| ||:diagtext:`, not a function parameter pack`||
285| |+-------------------------------------------+|
286| || ||
287| |+-------------------------------------------+|
288+------------------------------------------------------------------------------------------------+---------------------------------------------+
289
290
291-Wambiguous-macro
292-----------------
293This diagnostic is enabled by default.
294
295**Diagnostic text:**
296
297+-------------------------------------------------------------------------------------------+
298|:warning:`warning:` |nbsp| :diagtext:`ambiguous expansion of macro` |nbsp| :placeholder:`A`|
299+-------------------------------------------------------------------------------------------+
300
301
302-Wambiguous-member-template
303---------------------------
304This diagnostic is enabled by default.
305
306**Diagnostic text:**
307
308+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
309|:warning:`warning:` |nbsp| :diagtext:`lookup of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in member access expression is ambiguous; using member of` |nbsp| :placeholder:`B`|
310+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
311
312
313-Wanalyzer-incompatible-plugin
314------------------------------
315This diagnostic is enabled by default.
316
317**Diagnostic text:**
318
319+----------------------------------------------------------------------------------------------------------------------------------------+
320|:warning:`warning:` |nbsp| :diagtext:`checker plugin '`:placeholder:`A`:diagtext:`' is not compatible with this version of the analyzer`|
321+----------------------------------------------------------------------------------------------------------------------------------------+
322
323
324-Wanonymous-pack-parens
325-----------------------
326This diagnostic is enabled by default.
327
328**Diagnostic text:**
329
330+---------------------------------------------------------------------------------------------------------+
331|:warning:`warning:` |nbsp| :diagtext:`ISO C++11 requires a parenthesized pack declaration to have a name`|
332+---------------------------------------------------------------------------------------------------------+
333
334
335-Warc
336-----
337This diagnostic is enabled by default.
338
Richard Smith8cba2912016-09-14 01:55:42 +0000339Controls `-Warc-non-pod-memaccess`_, `-Warc-retain-cycles`_, `-Warc-unsafe-retained-assign`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +0000340
341
342-Warc-bridge-casts-disallowed-in-nonarc
343---------------------------------------
344This diagnostic is enabled by default.
345
346**Diagnostic text:**
347
348+-------------------------------------------------------------------------------------------------------------+
349|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' casts have no effect when not using ARC`|
350+-------------------------------------------------------------------------------------------------------------+
351
352
353-Warc-maybe-repeated-use-of-weak
354--------------------------------
355**Diagnostic text:**
356
357+---------------------------------------------------+-------------------------------+------------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+
358|:warning:`warning:` |nbsp| :diagtext:`weak` |nbsp| |+-----------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`may be accessed multiple times in this` |nbsp| |+--------------------+| |nbsp| :diagtext:`and may be unpredictably set to nil; assign to a strong variable to keep the object alive`|
359| ||:diagtext:`variable` || ||:diagtext:`function`|| |
360| |+-----------------------------+| |+--------------------+| |
361| ||:diagtext:`property` || ||:diagtext:`method` || |
362| |+-----------------------------+| |+--------------------+| |
363| ||:diagtext:`implicit property`|| ||:diagtext:`block` || |
364| |+-----------------------------+| |+--------------------+| |
365| ||:diagtext:`instance variable`|| ||:diagtext:`lambda` || |
366| |+-----------------------------+| |+--------------------+| |
367+---------------------------------------------------+-------------------------------+------------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+
368
369
370-Warc-non-pod-memaccess
371-----------------------
372This diagnostic is enabled by default.
373
374**Diagnostic text:**
375
376+---------------------------+-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
377|:warning:`warning:` |nbsp| |+---------------------------+| |nbsp| :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a pointer to ownership-qualified type` |nbsp| :placeholder:`C`|
378| ||:diagtext:`destination for`|| |
379| |+---------------------------+| |
380| ||:diagtext:`source of` || |
381| |+---------------------------+| |
382+---------------------------+-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
383
384
385-Warc-performSelector-leaks
386---------------------------
387This diagnostic is enabled by default.
388
389**Diagnostic text:**
390
391+-------------------------------------------------------------------------------------------------------+
392|:warning:`warning:` |nbsp| :diagtext:`performSelector may cause a leak because its selector is unknown`|
393+-------------------------------------------------------------------------------------------------------+
394
395
396-Warc-repeated-use-of-weak
397--------------------------
398Also controls `-Warc-maybe-repeated-use-of-weak`_.
399
400**Diagnostic text:**
401
402+---------------------------------------------------+-------------------------------+--------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+
403|:warning:`warning:` |nbsp| :diagtext:`weak` |nbsp| |+-----------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is accessed multiple times in this` |nbsp| |+--------------------+| |nbsp| :diagtext:`but may be unpredictably set to nil; assign to a strong variable to keep the object alive`|
404| ||:diagtext:`variable` || ||:diagtext:`function`|| |
405| |+-----------------------------+| |+--------------------+| |
406| ||:diagtext:`property` || ||:diagtext:`method` || |
407| |+-----------------------------+| |+--------------------+| |
408| ||:diagtext:`implicit property`|| ||:diagtext:`block` || |
409| |+-----------------------------+| |+--------------------+| |
410| ||:diagtext:`instance variable`|| ||:diagtext:`lambda` || |
411| |+-----------------------------+| |+--------------------+| |
412+---------------------------------------------------+-------------------------------+--------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+
413
414
415-Warc-retain-cycles
416-------------------
417This diagnostic is enabled by default.
418
419**Diagnostic text:**
420
421+------------------------------------------------------------------------------------------------------------------------------------------------------+
422|:warning:`warning:` |nbsp| :diagtext:`capturing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`strongly in this block is likely to lead to a retain cycle`|
423+------------------------------------------------------------------------------------------------------------------------------------------------------+
424
425
426-Warc-unsafe-retained-assign
427----------------------------
428This diagnostic is enabled by default.
429
430**Diagnostic text:**
431
432+--------------------------------------------------------+---------------------------------+-------------------------------------+----------------------+------------------------------------------------------+
433|:warning:`warning:` |nbsp| :diagtext:`assigning` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`to a weak` |nbsp| |+--------------------+|:diagtext:`; object will be released after assignment`|
434| ||:diagtext:`array literal` || ||:diagtext:`property`|| |
435| |+-------------------------------+| |+--------------------+| |
436| ||:diagtext:`dictionary literal` || ||:diagtext:`variable`|| |
437| |+-------------------------------+| |+--------------------+| |
438| ||:diagtext:`numeric literal` || | | |
439| |+-------------------------------+| | | |
440| ||:diagtext:`boxed expression` || | | |
441| |+-------------------------------+| | | |
442| ||:diagtext:`<should not happen>`|| | | |
443| |+-------------------------------+| | | |
444| ||:diagtext:`block literal` || | | |
445| |+-------------------------------+| | | |
446+--------------------------------------------------------+---------------------------------+-------------------------------------+----------------------+------------------------------------------------------+
447
448+---------------------------------------------------------------------------+--------------------------------+--------+----------------------+------------------------------------------------------+
449|:warning:`warning:` |nbsp| :diagtext:`assigning retained object to` |nbsp| |+------------------------------+| |nbsp| |+--------------------+|:diagtext:`; object will be released after assignment`|
450| ||:diagtext:`weak` || ||:diagtext:`property`|| |
451| |+------------------------------+| |+--------------------+| |
452| ||:diagtext:`unsafe\_unretained`|| ||:diagtext:`variable`|| |
453| |+------------------------------+| |+--------------------+| |
454+---------------------------------------------------------------------------+--------------------------------+--------+----------------------+------------------------------------------------------+
455
456+-----------------------------------------------------------------------------------------------------------------------------+
457|:warning:`warning:` |nbsp| :diagtext:`assigning retained object to unsafe property; object will be released after assignment`|
458+-----------------------------------------------------------------------------------------------------------------------------+
459
460
461-Warray-bounds
462--------------
463This diagnostic is enabled by default.
464
465**Diagnostic text:**
466
467+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+
468|:warning:`warning:` |nbsp| :diagtext:`array index` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is past the end of the array (which contains` |nbsp| :placeholder:`B` |nbsp| :diagtext:`element`|+-------------+|:diagtext:`)`|
469| || || |
470| |+-------------+| |
471| ||:diagtext:`s`|| |
472| |+-------------+| |
473+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+
474
475+----------------------------------------------------------------------------------------------------------------------------------+
476|:warning:`warning:` |nbsp| :diagtext:`array index` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is before the beginning of the array`|
477+----------------------------------------------------------------------------------------------------------------------------------+
478
479+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
480|:warning:`warning:` |nbsp| :diagtext:`array argument is too small; contains` |nbsp| :placeholder:`A` |nbsp| :diagtext:`elements, callee requires at least` |nbsp| :placeholder:`B`|
481+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
482
483+-----------------------------------------------------------------------------------+
484|:warning:`warning:` |nbsp| :diagtext:`'static' has no effect on zero-length arrays`|
485+-----------------------------------------------------------------------------------+
486
487
488-Warray-bounds-pointer-arithmetic
489---------------------------------
490**Diagnostic text:**
491
492+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+
493|:warning:`warning:` |nbsp| :diagtext:`the pointer incremented by` |nbsp| :placeholder:`A` |nbsp| :diagtext:`refers past the end of the array (that contains` |nbsp| :placeholder:`B` |nbsp| :diagtext:`element`|+-------------+|:diagtext:`)`|
494| || || |
495| |+-------------+| |
496| ||:diagtext:`s`|| |
497| |+-------------+| |
498+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+
499
500+-----------------------------------------------------------------------------------------------------------------------------------------------------+
501|:warning:`warning:` |nbsp| :diagtext:`the pointer decremented by` |nbsp| :placeholder:`A` |nbsp| :diagtext:`refers before the beginning of the array`|
502+-----------------------------------------------------------------------------------------------------------------------------------------------------+
503
504
505-Wasm
506-----
Richard Smithcf9f4222017-01-20 19:27:09 +0000507This diagnostic is enabled by default.
508
509Controls `-Wasm-ignored-qualifier`_, `-Wasm-operand-widths`_.
510
511
512-Wasm-ignored-qualifier
513-----------------------
514This diagnostic is enabled by default.
515
516**Diagnostic text:**
517
518+----------------------------------------------------------------------------------------------------------+
519|:warning:`warning:` |nbsp| :diagtext:`ignored` |nbsp| :placeholder:`A` |nbsp| :diagtext:`qualifier on asm`|
520+----------------------------------------------------------------------------------------------------------+
521
522+-------------------------------------------------------------------------------------+
523|:warning:`warning:` |nbsp| :diagtext:`meaningless 'volatile' on asm outside function`|
524+-------------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +0000525
526
527-Wasm-operand-widths
528--------------------
529This diagnostic is enabled by default.
530
531**Diagnostic text:**
532
533+-----------------------------------------------------------------------------------------------------------------------+
534|:warning:`warning:` |nbsp| :diagtext:`value size does not match register size specified by the constraint and modifier`|
535+-----------------------------------------------------------------------------------------------------------------------+
536
537
538-Wassign-enum
539-------------
540**Diagnostic text:**
541
542+---------------------------------------------------------------------------------------------------------------+
543|:warning:`warning:` |nbsp| :diagtext:`integer constant not in range of enumerated type` |nbsp| :placeholder:`A`|
544+---------------------------------------------------------------------------------------------------------------+
545
546
547-Wassume
548--------
549This diagnostic is enabled by default.
550
551**Diagnostic text:**
552
553+-----------------------------------------------------------------------------------------------------------------------------------------+
554|:warning:`warning:` |nbsp| :diagtext:`the argument to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has side effects that will be discarded`|
555+-----------------------------------------------------------------------------------------------------------------------------------------+
556
557
558-Wat-protocol
559-------------
560This diagnostic is enabled by default.
561
562**Diagnostic text:**
563
564+-------------------------------------------------------------------------------------------------------------------+
565|:warning:`warning:` |nbsp| :diagtext:`@protocol is using a forward protocol declaration of` |nbsp| :placeholder:`A`|
566+-------------------------------------------------------------------------------------------------------------------+
567
568
569-Watomic-memory-ordering
570------------------------
571This diagnostic is enabled by default.
572
573**Diagnostic text:**
574
575+-------------------------------------------------------------------------------------------+
576|:warning:`warning:` |nbsp| :diagtext:`memory order argument to atomic operation is invalid`|
577+-------------------------------------------------------------------------------------------+
578
579
580-Watomic-properties
581-------------------
Richard Smith8cba2912016-09-14 01:55:42 +0000582Controls `-Wcustom-atomic-properties`_, `-Wimplicit-atomic-properties`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +0000583
584
585-Watomic-property-with-user-defined-accessor
586--------------------------------------------
587This diagnostic is enabled by default.
588
589**Diagnostic text:**
590
591+--------------------------------------------------------------------------------------------------------------------------------------------+--------------------+-----------------------------------------------+--------------------+
592|:warning:`warning:` |nbsp| :diagtext:`writable atomic property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot pair a synthesized` |nbsp| |+------------------+| |nbsp| :diagtext:`with a user defined` |nbsp| |+------------------+|
593| ||:diagtext:`getter`|| ||:diagtext:`getter`||
594| |+------------------+| |+------------------+|
595| ||:diagtext:`setter`|| ||:diagtext:`setter`||
596| |+------------------+| |+------------------+|
597+--------------------------------------------------------------------------------------------------------------------------------------------+--------------------+-----------------------------------------------+--------------------+
598
599
600-Wattribute-packed-for-bitfield
601-------------------------------
602This diagnostic is enabled by default.
603
604**Diagnostic text:**
605
606+-------------------------------------------------------------------------------------------------------------------------------------------------+
607|:warning:`warning:` |nbsp| :diagtext:`'packed' attribute was ignored on bit-fields with single-byte alignment in older versions of GCC and Clang`|
608+-------------------------------------------------------------------------------------------------------------------------------------------------+
609
610
611-Wattributes
612------------
613This diagnostic is enabled by default.
614
Richard Smith8cba2912016-09-14 01:55:42 +0000615Controls `-Wignored-attributes`_, `-Wunknown-attributes`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +0000616
617
618-Wauto-disable-vptr-sanitizer
619-----------------------------
620This diagnostic is enabled by default.
621
622**Diagnostic text:**
623
624+------------------------------------------------------------------------------------------------------+
625|:warning:`warning:` |nbsp| :diagtext:`implicitly disabling vptr sanitizer because rtti wasn't enabled`|
626+------------------------------------------------------------------------------------------------------+
627
628
629-Wauto-import
630-------------
631**Diagnostic text:**
632
633+-------------------------------------------------+---------------------------------+-------------------------------------------------------------------------+
634|:warning:`warning:` |nbsp| :diagtext:`treating #`|+-------------------------------+| |nbsp| :diagtext:`as an import of module '`:placeholder:`B`:diagtext:`'`|
635| ||:diagtext:`include` || |
636| |+-------------------------------+| |
637| ||:diagtext:`import` || |
638| |+-------------------------------+| |
639| ||:diagtext:`include\_next` || |
640| |+-------------------------------+| |
641| ||:diagtext:`\_\_include\_macros`|| |
642| |+-------------------------------+| |
643+-------------------------------------------------+---------------------------------+-------------------------------------------------------------------------+
644
645
646-Wauto-storage-class
647--------------------
648This diagnostic is enabled by default.
649
650**Diagnostic text:**
651
652+---------------------------------------------------------------------------------------------------------------------------------------------+
653|:warning:`warning:` |nbsp| :diagtext:`'auto' storage class specifier is not permitted in C++11, and will not be supported in future releases`|
654+---------------------------------------------------------------------------------------------------------------------------------------------+
655
656
657-Wauto-var-id
658-------------
659This diagnostic is enabled by default.
660
661**Diagnostic text:**
662
663+-------------------------------------------------------------------------------------------------------+
664|:warning:`warning:` |nbsp| :diagtext:`'auto' deduced as 'id' in declaration of` |nbsp| :placeholder:`A`|
665+-------------------------------------------------------------------------------------------------------+
666
667
668-Wavailability
669--------------
670This diagnostic is enabled by default.
671
672**Diagnostic text:**
673
674+--------------------------------------------------------------------------------------------------------------+
675|:warning:`warning:` |nbsp| :diagtext:`'unavailable' availability overrides all other availability information`|
676+--------------------------------------------------------------------------------------------------------------+
677
678+------------------------------------------------------------------------------------------------------------------------+
679|:warning:`warning:` |nbsp| :diagtext:`unknown platform` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in availability macro`|
680+------------------------------------------------------------------------------------------------------------------------+
681
682+----------------------------------------------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------------------------+------------------------+-------------------------------------------------------------------------------------+
683|:warning:`warning:` |nbsp| :diagtext:`feature cannot be` |nbsp| |+----------------------+| |nbsp| :diagtext:`in` |nbsp| :placeholder:`B` |nbsp| :diagtext:`version` |nbsp| :placeholder:`C` |nbsp| :diagtext:`before it was` |nbsp| |+----------------------+| |nbsp| :diagtext:`in version` |nbsp| :placeholder:`E`:diagtext:`; attribute ignored`|
684| ||:diagtext:`introduced`|| ||:diagtext:`introduced`|| |
685| |+----------------------+| |+----------------------+| |
686| ||:diagtext:`deprecated`|| ||:diagtext:`deprecated`|| |
687| |+----------------------+| |+----------------------+| |
688| ||:diagtext:`obsoleted` || ||:diagtext:`obsoleted` || |
689| |+----------------------+| |+----------------------+| |
690+----------------------------------------------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------------------------+------------------------+-------------------------------------------------------------------------------------+
691
692+---------------------------------------------------------------------------------------------------------------------------+
693|:warning:`warning:` |nbsp| :diagtext:`use same version number separators '\_' or '.'; as in 'major\[.minor\[.subminor\]\]'`|
694+---------------------------------------------------------------------------------------------------------------------------+
695
696+---------------------------------------------------------------------------------------+
697|:warning:`warning:` |nbsp| :diagtext:`availability does not match previous declaration`|
698+---------------------------------------------------------------------------------------+
699
700+---------------------------+--------------------------------+--------------------------+-------------------------------+--------+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+
701|:warning:`warning:` |nbsp| |+------------------------------+|:diagtext:`method` |nbsp| |+-----------------------------+| |nbsp| |+---------------------------------------------+| |nbsp| :diagtext:`on` |nbsp| :placeholder:`B` |nbsp| :diagtext:`(`:placeholder:`C` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`D`:diagtext:`)`|
702| || || ||:diagtext:`introduced after` || ||:diagtext:`the protocol method it implements`|| |
703| |+------------------------------+| |+-----------------------------+| |+---------------------------------------------+| |
704| ||:diagtext:`overriding` |nbsp| || ||:diagtext:`deprecated before`|| ||:diagtext:`overridden method` || |
705| |+------------------------------+| |+-----------------------------+| |+---------------------------------------------+| |
706| | | ||:diagtext:`obsoleted before` || | | |
707| | | |+-----------------------------+| | | |
708+---------------------------+--------------------------------+--------------------------+-------------------------------+--------+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+
709
710+---------------------------+--------------------------------+---------------------------------------------------------------------------------------------------+-----------------------------------------------+--------------------------------+
711|:warning:`warning:` |nbsp| |+------------------------------+|:diagtext:`method cannot be unavailable on` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when` |nbsp| |+---------------------------------------------+| |nbsp| :diagtext:`is available`|
712| || || ||:diagtext:`the protocol method it implements`|| |
713| |+------------------------------+| |+---------------------------------------------+| |
714| ||:diagtext:`overriding` |nbsp| || ||:diagtext:`its overridden method` || |
715| |+------------------------------+| |+---------------------------------------------+| |
716+---------------------------+--------------------------------+---------------------------------------------------------------------------------------------------+-----------------------------------------------+--------------------------------+
717
718
719-Wbackend-plugin
720----------------
721This diagnostic is enabled by default.
722
723**Diagnostic text:**
724
725The text of this diagnostic is not controlled by Clang.
726
727
728-Wbackslash-newline-escape
729--------------------------
730This diagnostic is enabled by default.
731
732**Diagnostic text:**
733
734+-------------------------------------------------------------------------------+
735|:warning:`warning:` |nbsp| :diagtext:`backslash and newline separated by space`|
736+-------------------------------------------------------------------------------+
737
738
Richard Smithb6a3b4b2016-09-12 05:58:29 +0000739-Wbad-function-cast
740-------------------
741**Diagnostic text:**
742
743+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
744|:warning:`warning:` |nbsp| :diagtext:`cast from function call of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to non-matching type` |nbsp| :placeholder:`B`|
745+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
746
747
748-Wbind-to-temporary-copy
749------------------------
750Also controls `-Wc++98-compat-bind-to-temporary-copy`_.
751
752**Diagnostic text:**
753
754+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+
755|:warning:`warning:` |nbsp| :diagtext:`C++98 requires an accessible copy constructor for class` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary; was` |nbsp| |+---------------------+|
756| ||:diagtext:`private` ||
757| |+---------------------+|
758| ||:diagtext:`protected`||
759| |+---------------------+|
760+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+
761
762+--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
763|:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp| |+---------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when binding a reference to a temporary`|
764| ||:diagtext:`copying variable` || |
765| |+---------------------------------------+| |
766| ||:diagtext:`copying parameter` || |
767| |+---------------------------------------+| |
768| ||:diagtext:`returning object` || |
769| |+---------------------------------------+| |
770| ||:diagtext:`throwing object` || |
771| |+---------------------------------------+| |
772| ||:diagtext:`copying member subobject` || |
773| |+---------------------------------------+| |
774| ||:diagtext:`copying array element` || |
775| |+---------------------------------------+| |
776| ||:diagtext:`allocating object` || |
777| |+---------------------------------------+| |
778| ||:diagtext:`copying temporary` || |
779| |+---------------------------------------+| |
780| ||:diagtext:`initializing base subobject`|| |
781| |+---------------------------------------+| |
782| ||:diagtext:`initializing vector element`|| |
783| |+---------------------------------------+| |
784| ||:diagtext:`capturing value` || |
785| |+---------------------------------------+| |
786+--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
787
788
789-Wbitfield-constant-conversion
790------------------------------
791This diagnostic is enabled by default.
792
793**Diagnostic text:**
794
Richard Smithcf9f4222017-01-20 19:27:09 +0000795+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
796|:warning:`warning:` |nbsp| :diagtext:`implicit truncation from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to bit-field changes value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
797+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +0000798
799
Richard Smith9a016602017-04-13 22:44:22 +0000800-Wbitfield-enum-conversion
801--------------------------
802**Diagnostic text:**
803
804+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
805|:warning:`warning:` |nbsp| :diagtext:`bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not wide enough to store all enumerators of` |nbsp| :placeholder:`B`|
806+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
807
808+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
809|:warning:`warning:` |nbsp| :diagtext:`signed bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`needs an extra bit to represent the largest positive enumerators of` |nbsp| :placeholder:`B`|
810+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
811
812+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
813|:warning:`warning:` |nbsp| :diagtext:`assigning value of signed enum type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to unsigned bit-field` |nbsp| :placeholder:`A`:diagtext:`; negative enumerators of enum` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will be converted to positive values`|
814+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
815
816
Richard Smithb6a3b4b2016-09-12 05:58:29 +0000817-Wbitfield-width
818----------------
819This diagnostic is enabled by default.
820
821**Diagnostic text:**
822
823+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+
824|:warning:`warning:` |nbsp| :diagtext:`width of anonymous bit-field (`:placeholder:`A` |nbsp| :diagtext:`bits) exceeds width of its type; value will be truncated to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`bit`|+-------------+|
825| || ||
826| |+-------------+|
827| ||:diagtext:`s`||
828| |+-------------+|
829+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+
830
831+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+
832|:warning:`warning:` |nbsp| :diagtext:`width of bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`(`:placeholder:`B` |nbsp| :diagtext:`bits) exceeds the width of its type; value will be truncated to` |nbsp| :placeholder:`C` |nbsp| :diagtext:`bit`|+-------------+|
833| || ||
834| |+-------------+|
835| ||:diagtext:`s`||
836| |+-------------+|
837+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+
838
839
840-Wbitwise-op-parentheses
841------------------------
842This diagnostic is enabled by default.
843
844**Diagnostic text:**
845
846+-----------------------------------------------------------------------------------------------------------+
847|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' within '`:placeholder:`B`:diagtext:`'`|
848+-----------------------------------------------------------------------------------------------------------+
849
850
Richard Smithcf9f4222017-01-20 19:27:09 +0000851-Wblock-capture-autoreleasing
852-----------------------------
Richard Smith9a016602017-04-13 22:44:22 +0000853This diagnostic is enabled by default.
854
Richard Smithcf9f4222017-01-20 19:27:09 +0000855**Diagnostic text:**
856
857+-----------------------------------------------------------------------------------------------------------------------------+
858|:warning:`warning:` |nbsp| :diagtext:`block captures an autoreleasing out-parameter, which may result in use-after-free bugs`|
859+-----------------------------------------------------------------------------------------------------------------------------+
860
861
Richard Smithb6a3b4b2016-09-12 05:58:29 +0000862-Wbool-conversion
863-----------------
864This diagnostic is enabled by default.
865
866Also controls `-Wpointer-bool-conversion`_, `-Wundefined-bool-conversion`_.
867
868**Diagnostic text:**
869
870+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
871|:warning:`warning:` |nbsp| :diagtext:`initialization of pointer of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to null from a constant boolean expression`|
872+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
873
874
875-Wbool-conversions
876------------------
877Synonym for `-Wbool-conversion`_.
878
879
880-Wbraced-scalar-init
881--------------------
882This diagnostic is enabled by default.
883
884**Diagnostic text:**
885
886+-----------------------------------------------------------------------+
887|:warning:`warning:` |nbsp| :diagtext:`braces around scalar initializer`|
888+-----------------------------------------------------------------------+
889
890
891-Wbridge-cast
892-------------
893This diagnostic is enabled by default.
894
895**Diagnostic text:**
896
897+------------------------------------------------------------------------------------------------------------------------------------------+
898|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`bridges to` |nbsp| :placeholder:`B`:diagtext:`, not` |nbsp| :placeholder:`C`|
899+------------------------------------------------------------------------------------------------------------------------------------------+
900
901+-------------------------------------------------------------------------------------------------------+
902|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot bridge to` |nbsp| :placeholder:`B`|
903+-------------------------------------------------------------------------------------------------------+
904
905
906-Wbuiltin-macro-redefined
907-------------------------
908This diagnostic is enabled by default.
909
910**Diagnostic text:**
911
912+---------------------------------------------------------------+
913|:warning:`warning:` |nbsp| :diagtext:`redefining builtin macro`|
914+---------------------------------------------------------------+
915
916+---------------------------------------------------------------+
917|:warning:`warning:` |nbsp| :diagtext:`undefining builtin macro`|
918+---------------------------------------------------------------+
919
920
921-Wbuiltin-memcpy-chk-size
922-------------------------
923This diagnostic is enabled by default.
924
925**Diagnostic text:**
926
927+------------------------------------------------------------------------------------------------------+
928|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will always overflow destination buffer`|
929+------------------------------------------------------------------------------------------------------+
930
931
932-Wbuiltin-requires-header
933-------------------------
934This diagnostic is enabled by default.
935
936**Diagnostic text:**
937
938+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
939|:warning:`warning:` |nbsp| :diagtext:`declaration of built-in function '`:placeholder:`B`:diagtext:`' requires inclusion of the header <`:placeholder:`A`:diagtext:`>`|
940+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
941
942
943-Wc++-compat
944------------
945**Diagnostic text:**
946
947+---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+
948|:warning:`warning:` |nbsp| |+-------------------------+|+------------------+| |nbsp| :diagtext:`has size 0 in C,` |nbsp| |+-------------------------+| |nbsp| :diagtext:`in C++`|
949| || |||:diagtext:`struct`|| ||:diagtext:`size 1` || |
950| |+-------------------------+|+------------------+| |+-------------------------+| |
951| ||:diagtext:`empty` |nbsp| |||:diagtext:`union` || ||:diagtext:`non-zero size`|| |
952| |+-------------------------+|+------------------+| |+-------------------------+| |
953+---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+
954
955
956-Wc++0x-compat
957--------------
958Synonym for `-Wc++11-compat`_.
959
960
961-Wc++0x-extensions
962------------------
963Synonym for `-Wc++11-extensions`_.
964
965
966-Wc++0x-narrowing
967-----------------
968Synonym for `-Wc++11-narrowing`_.
969
970
971-Wc++11-compat
972--------------
973Some of the diagnostics controlled by this flag are enabled by default.
974
Richard Smith8cba2912016-09-14 01:55:42 +0000975Also 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`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +0000976
977**Diagnostic text:**
978
979+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+
980|:warning:`warning:` |nbsp| :diagtext:`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` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C++11 onwards`|
981| ||:diagtext:`have type 'long long'`|| |
982| |+---------------------------------+| |
983| ||:diagtext:`be ill-formed` || |
984| |+---------------------------------+| |
985+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+
986
987+--------------------------------------------------------------------------------------------------------------+
988|:warning:`warning:` |nbsp| :diagtext:`'auto' storage class specifier is redundant and incompatible with C++11`|
989+--------------------------------------------------------------------------------------------------------------+
990
991+-------------------------------------------------------------------------------------------------------------------------+
992|:warning:`warning:` |nbsp| :diagtext:`identifier after literal will be treated as a user-defined literal suffix in C++11`|
993+-------------------------------------------------------------------------------------------------------------------------+
994
995+-------------------------------------------------------------------------------------------+
996|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a keyword in C++11`|
997+-------------------------------------------------------------------------------------------+
998
999+--------------------------------------------------------------------------------------------------------------------------------+
1000|:warning:`warning:` |nbsp| :diagtext:`use of right-shift operator ('>>') in template argument will require parentheses in C++11`|
1001+--------------------------------------------------------------------------------------------------------------------------------+
1002
1003+--------------------------------------------------------------------------------+
1004|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation cannot be 'inline'`|
1005+--------------------------------------------------------------------------------+
1006
1007+--------------------------------------------------------------------------------------------------------------------------------------+
1008|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`must occur at global scope`|
1009+--------------------------------------------------------------------------------------------------------------------------------------+
1010
1011+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
1012|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not in a namespace enclosing` |nbsp| :placeholder:`B`|
1013+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
1014
1015+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
1016|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`must occur in namespace` |nbsp| :placeholder:`B`|
1017+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
1018
1019+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+
1020|:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C++98; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C++11 onwards`|
1021| ||:diagtext:`have type 'long long'`|| |
1022| |+---------------------------------+| |
1023| ||:diagtext:`be ill-formed` || |
1024| |+---------------------------------+| |
1025+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+
1026
1027
1028-Wc++11-compat-deprecated-writable-strings
1029------------------------------------------
1030This diagnostic is enabled by default.
1031
1032**Diagnostic text:**
1033
1034+---------------------------------------------------------------------------------------------------------------------------------+
1035|:warning:`warning:` |nbsp| :diagtext:`conversion from string literal to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`|
1036+---------------------------------------------------------------------------------------------------------------------------------+
1037
1038
1039-Wc++11-compat-pedantic
1040-----------------------
Richard Smith8cba2912016-09-14 01:55:42 +00001041Controls `-Wc++98-c++11-c++14-compat-pedantic`_, `-Wc++98-c++11-compat-pedantic`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00001042
1043
1044-Wc++11-compat-reserved-user-defined-literal
1045--------------------------------------------
1046**Diagnostic text:**
1047
1048+----------------------------------------------------------------------------------------------------------------------------------+
1049|:warning:`warning:` |nbsp| :diagtext:`identifier after literal will be treated as a reserved user-defined literal suffix in C++11`|
1050+----------------------------------------------------------------------------------------------------------------------------------+
1051
1052
1053-Wc++11-extensions
1054------------------
1055Some of the diagnostics controlled by this flag are enabled by default.
1056
1057Also controls `-Wc++11-extra-semi`_, `-Wc++11-inline-namespace`_, `-Wc++11-long-long`_.
1058
1059**Diagnostic text:**
1060
1061+-------------------------------------------------------------------------------+
1062|:warning:`warning:` |nbsp| :diagtext:`alias declarations are a C++11 extension`|
1063+-------------------------------------------------------------------------------+
1064
1065+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+
1066|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a C++11 extension`|
1067| ||:diagtext:`integral` || |
1068| |+-----------------------+| |
1069| ||:diagtext:`enumeration`|| |
1070| |+-----------------------+| |
1071+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+
1072
1073+---------------------------------------------------------------------------------+
1074|:warning:`warning:` |nbsp| :diagtext:`'auto' type specifier is a C++11 extension`|
1075+---------------------------------------------------------------------------------+
1076
1077+-----------------------------------------------------------------------------------------------------------+
1078|:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a C++11 extension`|
1079+-----------------------------------------------------------------------------------------------------------+
1080
1081+---------------------------+-----------------------+--------------------------------------------------------------+
1082|:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`function definitions are a C++11 extension`|
1083| ||:diagtext:`defaulted`|| |
1084| |+---------------------+| |
1085| ||:diagtext:`deleted` || |
1086| |+---------------------+| |
1087+---------------------------+-----------------------+--------------------------------------------------------------+
1088
1089+-----------------------------------------------------------------------------------------------------------------------------------+
1090|:warning:`warning:` |nbsp| :diagtext:`befriending enumeration type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C++11 extension`|
1091+-----------------------------------------------------------------------------------------------------------------------------------+
1092
1093+--------------------------------------------------------------------------------------------------+
1094|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C++11 extension`|
1095+--------------------------------------------------------------------------------------------------+
1096
1097+------------------------------------------------------------------------------------------+
1098|:warning:`warning:` |nbsp| :diagtext:`explicit conversion functions are a C++11 extension`|
1099+------------------------------------------------------------------------------------------+
1100
1101+-----------------------------------------------------------------------------+
1102|:warning:`warning:` |nbsp| :diagtext:`extern templates are a C++11 extension`|
1103+-----------------------------------------------------------------------------+
1104
1105+--------------------------------------------------------------------------------+
1106|:warning:`warning:` |nbsp| :diagtext:`range-based for loop is a C++11 extension`|
1107+--------------------------------------------------------------------------------+
1108
1109+------------------------------------------------------------------------------------------+
1110|:warning:`warning:` |nbsp| :diagtext:`generalized initializer lists are a C++11 extension`|
1111+------------------------------------------------------------------------------------------+
1112
1113+---------------------------------------------------------------------------------------------------------+
1114|:warning:`warning:` |nbsp| :diagtext:`use of enumeration in a nested name specifier is a C++11 extension`|
1115+---------------------------------------------------------------------------------------------------------+
1116
1117+----------------------------------------------------------------------------------------------------------------------------+
1118|:warning:`warning:` |nbsp| :diagtext:`non-class friend type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C++11 extension`|
1119+----------------------------------------------------------------------------------------------------------------------------+
1120
1121+-------------------------------------------------------------------------------------------------------------+
1122|:warning:`warning:` |nbsp| :diagtext:`in-class initialization of non-static data member is a C++11 extension`|
1123+-------------------------------------------------------------------------------------------------------------+
1124
1125+--------------------------------------------------------------------------------------------------+
1126|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' keyword is a C++11 extension`|
1127+--------------------------------------------------------------------------------------------------+
1128
1129+----------------------------------------------------------------------------------------------+
1130|:warning:`warning:` |nbsp| :diagtext:`reference qualifiers on functions are a C++11 extension`|
1131+----------------------------------------------------------------------------------------------+
1132
1133+------------------------------------------------------------------------------+
1134|:warning:`warning:` |nbsp| :diagtext:`rvalue references are a C++11 extension`|
1135+------------------------------------------------------------------------------+
1136
1137+--------------------------------------------------------------------------------+
1138|:warning:`warning:` |nbsp| :diagtext:`scoped enumerations are a C++11 extension`|
1139+--------------------------------------------------------------------------------+
1140
1141+----------------------------------------------------------------------------------------------------------------------------------+
1142|:warning:`warning:` |nbsp| :diagtext:`static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in union is a C++11 extension`|
1143+----------------------------------------------------------------------------------------------------------------------------------+
1144
1145+--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------+
1146|:warning:`warning:` |nbsp| :diagtext:`non-type template argument referring to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with internal linkage is a C++11 extension`|
1147| ||:diagtext:`function`|| |
1148| |+--------------------+| |
1149| ||:diagtext:`object` || |
1150| |+--------------------+| |
1151+--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------+
1152
1153+-------------------------------------------------------------------------------+
1154|:warning:`warning:` |nbsp| :diagtext:`'template' keyword outside of a template`|
1155+-------------------------------------------------------------------------------+
1156
1157+---------------------------------------------------------------------------------------------------------------+
1158|:warning:`warning:` |nbsp| :diagtext:`default template arguments for a function template are a C++11 extension`|
1159+---------------------------------------------------------------------------------------------------------------+
1160
1161+-------------------------------------------------------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1162|:warning:`warning:` |nbsp| :diagtext:`first declaration of` |nbsp| |+-------------------------------------+| |nbsp| :diagtext:`specialization of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`outside namespace` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a C++11 extension`|
1163| ||:diagtext:`class template` || |
1164| |+-------------------------------------+| |
1165| ||:diagtext:`class template partial` || |
1166| |+-------------------------------------+| |
1167| ||:diagtext:`variable template` || |
1168| |+-------------------------------------+| |
1169| ||:diagtext:`variable template partial`|| |
1170| |+-------------------------------------+| |
1171| ||:diagtext:`function template` || |
1172| |+-------------------------------------+| |
1173| ||:diagtext:`member function` || |
1174| |+-------------------------------------+| |
1175| ||:diagtext:`static data member` || |
1176| |+-------------------------------------+| |
1177| ||:diagtext:`member class` || |
1178| |+-------------------------------------+| |
1179| ||:diagtext:`member enumeration` || |
1180| |+-------------------------------------+| |
1181+-------------------------------------------------------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1182
1183+------------------------------------------------------------------------------+
1184|:warning:`warning:` |nbsp| :diagtext:`'typename' occurs outside of a template`|
1185+------------------------------------------------------------------------------+
1186
1187+------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------+
1188|:warning:`warning:` |nbsp| :diagtext:`unelaborated friend declaration is a C++11 extension; specify '`|+---------------------+|:diagtext:`' to befriend` |nbsp| :placeholder:`B`|
1189| ||:diagtext:`struct` || |
1190| |+---------------------+| |
1191| ||:diagtext:`interface`|| |
1192| |+---------------------+| |
1193| ||:diagtext:`union` || |
1194| |+---------------------+| |
1195| ||:diagtext:`class` || |
1196| |+---------------------+| |
1197| ||:diagtext:`enum` || |
1198| |+---------------------+| |
1199+------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------+
1200
1201+-------------------------------------------------------------------------------+
1202|:warning:`warning:` |nbsp| :diagtext:`variadic templates are a C++11 extension`|
1203+-------------------------------------------------------------------------------+
1204
1205
1206-Wc++11-extra-semi
1207------------------
1208**Diagnostic text:**
1209
1210+-------------------------------------------------------------------------------------------+
1211|:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is a C++11 extension`|
1212+-------------------------------------------------------------------------------------------+
1213
1214
1215-Wc++11-inline-namespace
1216------------------------
1217This diagnostic is enabled by default.
1218
1219**Diagnostic text:**
1220
1221+----------------------------------------------------------------------------+
1222|:warning:`warning:` |nbsp| :diagtext:`inline namespaces are a C++11 feature`|
1223+----------------------------------------------------------------------------+
1224
1225
1226-Wc++11-long-long
1227-----------------
1228**Diagnostic text:**
1229
1230+-----------------------------------------------------------------------+
1231|:warning:`warning:` |nbsp| :diagtext:`'long long' is a C++11 extension`|
1232+-----------------------------------------------------------------------+
1233
1234
1235-Wc++11-narrowing
1236-----------------
1237Some of the diagnostics controlled by this flag are enabled by default.
1238
1239**Diagnostic text:**
1240
1241+-----------------------+----------------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------+
1242|:error:`error:` |nbsp| |+--------------------------------------+| |nbsp| |+------------------------------------------------------------------------------------------------------------------------+|
1243| ||:diagtext:`case value` || ||+--------------------------------------------------------------------------------------------------------------+ ||
1244| |+--------------------------------------+| |||:diagtext:`cannot be narrowed from type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| ||
1245| ||:diagtext:`enumerator value` || ||+--------------------------------------------------------------------------------------------------------------+ ||
1246| |+--------------------------------------+| |+------------------------------------------------------------------------------------------------------------------------+|
1247| ||:diagtext:`non-type template argument`|| ||+----------------------------------------------------------------------------------------------------------------------+||
1248| |+--------------------------------------+| |||:diagtext:`evaluates to` |nbsp| :placeholder:`C`:diagtext:`, which cannot be narrowed to type` |nbsp| :placeholder:`D`|||
1249| ||:diagtext:`array size` || ||+----------------------------------------------------------------------------------------------------------------------+||
1250| |+--------------------------------------+| |+------------------------------------------------------------------------------------------------------------------------+|
1251| ||:diagtext:`constexpr if condition` || | |
1252| |+--------------------------------------+| | |
1253+-----------------------+----------------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------+
1254
1255+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1256|:error:`error:` |nbsp| :diagtext:`constant expression evaluates to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which cannot be narrowed to type` |nbsp| :placeholder:`B`|
1257+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1258
1259+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1260|:error:`error:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be narrowed to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list`|
1261+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1262
1263+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1264|:error:`error:` |nbsp| :diagtext:`non-constant-expression cannot be narrowed from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list`|
1265+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1266
1267+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1268|:warning:`warning:` |nbsp| :diagtext:`constant expression evaluates to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which cannot be narrowed to type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in C++11`|
1269+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1270
1271+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1272|:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be narrowed to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list in C++11`|
1273+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1274
1275+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1276|:warning:`warning:` |nbsp| :diagtext:`non-constant-expression cannot be narrowed from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list in C++11`|
1277+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1278
1279
1280-Wc++14-binary-literal
1281----------------------
1282**Diagnostic text:**
1283
1284+------------------------------------------------------------------------------------+
1285|:warning:`warning:` |nbsp| :diagtext:`binary integer literals are a C++14 extension`|
1286+------------------------------------------------------------------------------------+
1287
1288
1289-Wc++14-compat
1290--------------
1291Synonym for `-Wc++98-c++11-c++14-compat`_.
1292
1293
1294-Wc++14-compat-pedantic
1295-----------------------
1296Synonym for `-Wc++98-c++11-c++14-compat-pedantic`_.
1297
1298
1299-Wc++14-extensions
1300------------------
1301Some of the diagnostics controlled by this flag are enabled by default.
1302
1303Also controls `-Wc++14-binary-literal`_.
1304
1305**Diagnostic text:**
1306
1307+-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+
1308|:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`|
1309| ||:diagtext:`function` || |
1310| |+-----------------------+| |
1311| ||:diagtext:`constructor`|| |
1312| |+-----------------------+| |
1313+-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+
1314
1315+------------------------------------------------------------------------------------------------------------+
1316|:warning:`warning:` |nbsp| :diagtext:`multiple return statements in constexpr function is a C++14 extension`|
1317+------------------------------------------------------------------------------------------------------------+
1318
1319+----------------------------------------------------------------------------------+-------------------------+----------------------------------------+
1320|:warning:`warning:` |nbsp| :diagtext:`variable declaration in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`|
1321| ||:diagtext:`function` || |
1322| |+-----------------------+| |
1323| ||:diagtext:`constructor`|| |
1324| |+-----------------------+| |
1325+----------------------------------------------------------------------------------+-------------------------+----------------------------------------+
1326
1327+-----------------------------------------------------------------------------+-------------------------+----------------------------------------+
1328|:warning:`warning:` |nbsp| :diagtext:`type definition in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`|
1329| ||:diagtext:`function` || |
1330| |+-----------------------+| |
1331| ||:diagtext:`constructor`|| |
1332| |+-----------------------+| |
1333+-----------------------------------------------------------------------------+-------------------------+----------------------------------------+
1334
1335+---------------------------------------------------------------------------------------------------------------------------+
1336|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++14 extension`|
1337+---------------------------------------------------------------------------------------------------------------------------+
1338
1339+-------------------------------------------------------------------------------------------+
1340|:warning:`warning:` |nbsp| :diagtext:`'decltype(auto)' type specifier is a C++14 extension`|
1341+-------------------------------------------------------------------------------------------+
1342
1343+----------------------------------------------------------------------------------------+
1344|:warning:`warning:` |nbsp| :diagtext:`initialized lambda captures are a C++14 extension`|
1345+----------------------------------------------------------------------------------------+
1346
1347+-------------------------------------------------------------------------------+
1348|:warning:`warning:` |nbsp| :diagtext:`variable templates are a C++14 extension`|
1349+-------------------------------------------------------------------------------+
1350
1351
1352-Wc++1y-extensions
1353------------------
1354Synonym for `-Wc++14-extensions`_.
1355
1356
1357-Wc++1z-compat
1358--------------
1359This diagnostic is enabled by default.
1360
Richard Smithcf9f4222017-01-20 19:27:09 +00001361Also controls `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_.
1362
1363**Diagnostic text:**
1364
1365+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1366|:warning:`warning:` |nbsp| :diagtext:`mangled name of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will change in C++17 due to non-throwing exception specification in function signature`|
1367+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00001368
1369
1370-Wc++1z-extensions
1371------------------
1372Some of the diagnostics controlled by this flag are enabled by default.
1373
1374**Diagnostic text:**
1375
1376+------------------------------------------------------------------------+
1377|:warning:`warning:` |nbsp| :diagtext:`constexpr if is a C++1z extension`|
1378+------------------------------------------------------------------------+
1379
1380+---------------------------------------------------------------------------------------------+
1381|:warning:`warning:` |nbsp| :diagtext:`'constexpr' on lambda expressions is a C++1z extension`|
1382+---------------------------------------------------------------------------------------------+
1383
1384+---------------------------------------------------------------------------------------------------------------------------+
1385|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++1z extension`|
1386+---------------------------------------------------------------------------------------------------------------------------+
1387
1388+---------------------------------------------------------------------------------------+
1389|:warning:`warning:` |nbsp| :diagtext:`decomposition declarations are a C++1z extension`|
1390+---------------------------------------------------------------------------------------+
1391
1392+--------------------------------------------------------------------------------+
1393|:warning:`warning:` |nbsp| :diagtext:`pack fold expression is a C++1z extension`|
1394+--------------------------------------------------------------------------------+
1395
1396+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1397|:warning:`warning:` |nbsp| :diagtext:`'begin' and 'end' returning different types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is a C++1z extension`|
1398+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1399
1400+----------------------------------------------------------------------------------------+
1401|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are a C++1z feature`|
1402+----------------------------------------------------------------------------------------+
1403
Richard Smithcf9f4222017-01-20 19:27:09 +00001404+----------------------------------------+--------------------+-------------------------------------------------------------+
1405|:warning:`warning:` |nbsp| :diagtext:`'`|+------------------+|:diagtext:`' initialization statements are a C++1z extension`|
1406| ||:diagtext:`if` || |
1407| |+------------------+| |
1408| ||:diagtext:`switch`|| |
1409| |+------------------+| |
1410+----------------------------------------+--------------------+-------------------------------------------------------------+
1411
Richard Smithb6a3b4b2016-09-12 05:58:29 +00001412+-----------------------------------------------------------------------------+
1413|:warning:`warning:` |nbsp| :diagtext:`inline variables are a C++1z extension`|
1414+-----------------------------------------------------------------------------+
1415
Richard Smithcf9f4222017-01-20 19:27:09 +00001416+---------------------------------------------------------------------------------------------------------------------+
1417|:warning:`warning:` |nbsp| :diagtext:`use of multiple declarators in a single using declaration is a C++1z extension`|
1418+---------------------------------------------------------------------------------------------------------------------+
1419
Richard Smithb6a3b4b2016-09-12 05:58:29 +00001420+-------------------------------------------------------------------------------------------------------------------------+
1421|:warning:`warning:` |nbsp| :diagtext:`nested namespace definition is a C++1z extension; define each namespace separately`|
1422+-------------------------------------------------------------------------------------------------------------------------+
1423
1424+---------------------------------------------------------------------------------------+
1425|:warning:`warning:` |nbsp| :diagtext:`capture of '\*this' by copy is a C++1z extension`|
1426+---------------------------------------------------------------------------------------+
1427
1428+------------------------------------------------------------------------------------------+
1429|:warning:`warning:` |nbsp| :diagtext:`static\_assert with no message is a C++1z extension`|
1430+------------------------------------------------------------------------------------------+
1431
1432+--------------------------------------------------------------------------------------------------------+
1433|:warning:`warning:` |nbsp| :diagtext:`template template parameter using 'typename' is a C++1z extension`|
1434+--------------------------------------------------------------------------------------------------------+
1435
1436+--------------------------------------------------------------------------------------------------+
1437|:warning:`warning:` |nbsp| :diagtext:`default scope specifier for attributes is a C++1z extension`|
1438+--------------------------------------------------------------------------------------------------+
1439
Richard Smithcf9f4222017-01-20 19:27:09 +00001440+-----------------------------------------------------------------------------------------------+
1441|:warning:`warning:` |nbsp| :diagtext:`pack expansion of using declaration is a C++1z extension`|
1442+-----------------------------------------------------------------------------------------------+
1443
Richard Smithb6a3b4b2016-09-12 05:58:29 +00001444
1445-Wc++98-c++11-c++14-compat
1446--------------------------
1447**Diagnostic text:**
1448
1449+------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------+
1450|:warning:`warning:` |nbsp| :diagtext:`attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext:`declaration are incompatible with C++ standards before C++1z`|
1451| ||:diagtext:`a namespace` || |
1452| |+-------------------------+| |
1453| ||:diagtext:`an enumerator`|| |
1454| |+-------------------------+| |
1455+------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------+
1456
1457+---------------------------------------------------------------------------------------------------+
1458|:warning:`warning:` |nbsp| :diagtext:`constexpr if is incompatible with C++ standards before C++1z`|
1459+---------------------------------------------------------------------------------------------------+
1460
1461+----------------------------------------------------------------------------------------------------------------------+
1462|:warning:`warning:` |nbsp| :diagtext:`constexpr on lambda expressions is incompatible with C++ standards before C++1z`|
1463+----------------------------------------------------------------------------------------------------------------------+
1464
1465+------------------------------------------------------------------------------------------------------------------+
1466|:warning:`warning:` |nbsp| :diagtext:`decomposition declarations are incompatible with C++ standards before C++1z`|
1467+------------------------------------------------------------------------------------------------------------------+
1468
1469+-----------------------------------------------------------------------------------------------------------+
1470|:warning:`warning:` |nbsp| :diagtext:`pack fold expression is incompatible with C++ standards before C++1z`|
1471+-----------------------------------------------------------------------------------------------------------+
1472
Richard Smithcf9f4222017-01-20 19:27:09 +00001473+---------------------------+--------------------+----------------------------------------------------------------------------------------------+
1474|:warning:`warning:` |nbsp| |+------------------+| |nbsp| :diagtext:`initialization statements are incompatible with C++ standards before C++1z`|
1475| ||:diagtext:`if` || |
1476| |+------------------+| |
1477| ||:diagtext:`switch`|| |
1478| |+------------------+| |
1479+---------------------------+--------------------+----------------------------------------------------------------------------------------------+
1480
Richard Smithb6a3b4b2016-09-12 05:58:29 +00001481+--------------------------------------------------------------------------------------------------------+
1482|:warning:`warning:` |nbsp| :diagtext:`inline variables are incompatible with C++ standards before C++1z`|
1483+--------------------------------------------------------------------------------------------------------+
1484
1485+------------------------------------------------------------------------------------------------------------------+
1486|:warning:`warning:` |nbsp| :diagtext:`nested namespace definition is incompatible with C++ standards before C++1z`|
1487+------------------------------------------------------------------------------------------------------------------+
1488
1489+-------------------------------------------------------------------------------------------------------------------+
1490|:warning:`warning:` |nbsp| :diagtext:`by value capture of '\*this' is incompatible with C++ standards before C++1z`|
1491+-------------------------------------------------------------------------------------------------------------------+
1492
1493+---------------------------------------------------------------------------------------------------------------------+
1494|:warning:`warning:` |nbsp| :diagtext:`static\_assert with no message is incompatible with C++ standards before C++1z`|
1495+---------------------------------------------------------------------------------------------------------------------+
1496
Richard Smithcf9f4222017-01-20 19:27:09 +00001497+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1498|:warning:`warning:` |nbsp| :diagtext:`non-type template parameters declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`are incompatible with C++ standards before C++1z`|
1499+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1500
Richard Smithb6a3b4b2016-09-12 05:58:29 +00001501+-----------------------------------------------------------------------------------------------------------------------------------+
1502|:warning:`warning:` |nbsp| :diagtext:`template template parameter using 'typename' is incompatible with C++ standards before C++1z`|
1503+-----------------------------------------------------------------------------------------------------------------------------------+
1504
1505+--------------------------------------------------------------------------------------------------------+
1506|:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C++ standards before C++1z`|
1507+--------------------------------------------------------------------------------------------------------+
1508
1509+-----------------------------------------------------------------------------------------------------------------------------+
1510|:warning:`warning:` |nbsp| :diagtext:`default scope specifier for attributes is incompatible with C++ standards before C++1z`|
1511+-----------------------------------------------------------------------------------------------------------------------------+
1512
Richard Smithcf9f4222017-01-20 19:27:09 +00001513+------------------------------------------------------------------------------------------------------------------------------------------------+
1514|:warning:`warning:` |nbsp| :diagtext:`use of multiple declarators in a single using declaration is incompatible with C++ standards before C++1z`|
1515+------------------------------------------------------------------------------------------------------------------------------------------------+
1516
1517+-----------------------------------------------------------------------------------------------------------------------+
1518|:warning:`warning:` |nbsp| :diagtext:`pack expansion using declaration is incompatible with C++ standards before C++1z`|
1519+-----------------------------------------------------------------------------------------------------------------------+
1520
Richard Smithb6a3b4b2016-09-12 05:58:29 +00001521+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1522|:warning:`warning:` |nbsp| :diagtext:`'begin' and 'end' returning different types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is incompatible with C++ standards before C++1z`|
1523+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1524
1525
1526-Wc++98-c++11-c++14-compat-pedantic
1527-----------------------------------
1528Also controls `-Wc++98-c++11-c++14-compat`_.
1529
1530**Diagnostic text:**
1531
1532+---------------------------------------------------------------------------------------------------------------------+
Richard Smithcf9f4222017-01-20 19:27:09 +00001533|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are incompatible with C++ standards before C++1z`|
Richard Smithb6a3b4b2016-09-12 05:58:29 +00001534+---------------------------------------------------------------------------------------------------------------------+
1535
1536
1537-Wc++98-c++11-compat
1538--------------------
1539**Diagnostic text:**
1540
1541+-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
1542|:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`|
1543| ||:diagtext:`function` || |
1544| |+-----------------------+| |
1545| ||:diagtext:`constructor`|| |
1546| |+-----------------------+| |
1547+-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
1548
1549+---------------------------------------------------------------------------------------------------------------------------------------+
1550|:warning:`warning:` |nbsp| :diagtext:`multiple return statements in constexpr function is incompatible with C++ standards before C++14`|
1551+---------------------------------------------------------------------------------------------------------------------------------------+
1552
1553+-----------------------------------------------------------------------------------------------------------------------------------+
1554|:warning:`warning:` |nbsp| :diagtext:`constexpr function with no return statements is incompatible with C++ standards before C++14`|
1555+-----------------------------------------------------------------------------------------------------------------------------------+
1556
1557+----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
1558|:warning:`warning:` |nbsp| :diagtext:`variable declaration in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`|
1559| ||:diagtext:`function` || |
1560| |+-----------------------+| |
1561| ||:diagtext:`constructor`|| |
1562| |+-----------------------+| |
1563+----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
1564
1565+-----------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
1566|:warning:`warning:` |nbsp| :diagtext:`type definition in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`|
1567| ||:diagtext:`function` || |
1568| |+-----------------------+| |
1569| ||:diagtext:`constructor`|| |
1570| |+-----------------------+| |
1571+-----------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
1572
1573+----------------------------------------------------------------------------------------------------------------------+
1574|:warning:`warning:` |nbsp| :diagtext:`'decltype(auto)' type specifier is incompatible with C++ standards before C++14`|
1575+----------------------------------------------------------------------------------------------------------------------+
1576
1577+--------------------------------------------------------------------------------------------------------+
1578|:warning:`warning:` |nbsp| :diagtext:`digit separators are incompatible with C++ standards before C++14`|
1579+--------------------------------------------------------------------------------------------------------+
1580
1581+-------------------------------------------------------------------------------------------------------------------+
1582|:warning:`warning:` |nbsp| :diagtext:`initialized lambda captures are incompatible with C++ standards before C++14`|
1583+-------------------------------------------------------------------------------------------------------------------+
1584
1585+----------------------------------------------------------------------------------------------------------+
1586|:warning:`warning:` |nbsp| :diagtext:`variable templates are incompatible with C++ standards before C++14`|
1587+----------------------------------------------------------------------------------------------------------+
1588
1589
1590-Wc++98-c++11-compat-pedantic
1591-----------------------------
1592Also controls `-Wc++98-c++11-compat`_.
1593
1594**Diagnostic text:**
1595
1596+---------------------------------------------------------------------------------------------------------------+
1597|:warning:`warning:` |nbsp| :diagtext:`binary integer literals are incompatible with C++ standards before C++14`|
1598+---------------------------------------------------------------------------------------------------------------+
1599
1600
1601-Wc++98-compat
1602--------------
Richard Smith8cba2912016-09-14 01:55:42 +00001603Also 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`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00001604
1605**Diagnostic text:**
1606
1607+-------------------------------------------------------------------------------------+
1608|:warning:`warning:` |nbsp| :diagtext:`alias declarations are incompatible with C++98`|
1609+-------------------------------------------------------------------------------------+
1610
1611+---------------------------------------------------------------------------+
1612|:warning:`warning:` |nbsp| :diagtext:`'alignas' is incompatible with C++98`|
1613+---------------------------------------------------------------------------+
1614
1615+--------------------------------------------------------------------------------------+
1616|:warning:`warning:` |nbsp| :diagtext:`alignof expressions are incompatible with C++98`|
1617+--------------------------------------------------------------------------------------+
1618
1619+----------------------------------------------------------------------------------------+
1620|:warning:`warning:` |nbsp| :diagtext:`C++11 attribute syntax is incompatible with C++98`|
1621+----------------------------------------------------------------------------------------+
1622
1623+---------------------------------------------------------------------------------------+
1624|:warning:`warning:` |nbsp| :diagtext:`'auto' type specifier is incompatible with C++98`|
1625+---------------------------------------------------------------------------------------+
1626
1627+---------------------------------------------------------------------------------------+
1628|:warning:`warning:` |nbsp| :diagtext:`'constexpr' specifier is incompatible with C++98`|
1629+---------------------------------------------------------------------------------------+
1630
1631+--------------------------------------------------------------------------------------------------------+
1632|:warning:`warning:` |nbsp| :diagtext:`constructor call from initializer list is incompatible with C++98`|
1633+--------------------------------------------------------------------------------------------------------+
1634
1635+-------------------------------------------------------------------------------------------+
1636|:warning:`warning:` |nbsp| :diagtext:`'decltype' type specifier is incompatible with C++98`|
1637+-------------------------------------------------------------------------------------------+
1638
1639+---------------------------+-----------------------+--------------------------------------------------------------------+
1640|:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`function definitions are incompatible with C++98`|
1641| ||:diagtext:`defaulted`|| |
1642| |+---------------------+| |
1643| ||:diagtext:`deleted` || |
1644| |+---------------------+| |
1645+---------------------------+-----------------------+--------------------------------------------------------------------+
1646
1647+------------------------------------------------------------------------------------------+
1648|:warning:`warning:` |nbsp| :diagtext:`delegating constructors are incompatible with C++98`|
1649+------------------------------------------------------------------------------------------+
1650
1651+----------------------------------------------------------------------------------------------------------------+
1652|:warning:`warning:` |nbsp| :diagtext:`scalar initialized from empty initializer list is incompatible with C++98`|
1653+----------------------------------------------------------------------------------------------------------------+
1654
1655+-----------------------------------------------------------------------------------------------------------------+
1656|:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are incompatible with C++98`|
1657+-----------------------------------------------------------------------------------------------------------------+
1658
1659+-----------------------------------------------------------------------------------------------------------------------------------------+
1660|:warning:`warning:` |nbsp| :diagtext:`befriending enumeration type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with C++98`|
1661+-----------------------------------------------------------------------------------------------------------------------------------------+
1662
1663+-----------------------------------------------------------------------------------------------------------+
1664|:warning:`warning:` |nbsp| :diagtext:`enumeration type in nested name specifier is incompatible with C++98`|
1665+-----------------------------------------------------------------------------------------------------------+
1666
1667+------------------------------------------------------------------------------------------------+
1668|:warning:`warning:` |nbsp| :diagtext:`explicit conversion functions are incompatible with C++98`|
1669+------------------------------------------------------------------------------------------------+
1670
1671+--------------------------------------------------------------------------------------+
1672|:warning:`warning:` |nbsp| :diagtext:`range-based for loop is incompatible with C++98`|
1673+--------------------------------------------------------------------------------------+
1674
1675+---------------------------------------------------------------------------------------------------------------------------+
1676|:warning:`warning:` |nbsp| :diagtext:`friend declaration naming a member of the declaring class is incompatible with C++98`|
1677+---------------------------------------------------------------------------------------------------------------------------+
1678
1679+------------------------------------------------------------------------------------------------+
1680|:warning:`warning:` |nbsp| :diagtext:`generalized initializer lists are incompatible with C++98`|
1681+------------------------------------------------------------------------------------------------+
1682
1683+------------------------------------------------------------------------------------------------------------+
1684|:warning:`warning:` |nbsp| :diagtext:`jump from this goto statement to its label is incompatible with C++98`|
1685+------------------------------------------------------------------------------------------------------------+
1686
1687+---------------------------------------------------------------------------------------------------------------------------------------+
1688|:warning:`warning:` |nbsp| :diagtext:`jump from this indirect goto statement to one of its possible targets is incompatible with C++98`|
1689+---------------------------------------------------------------------------------------------------------------------------------------+
1690
1691+------------------------------------------------------------------------------------------------------------+
1692|:warning:`warning:` |nbsp| :diagtext:`initialization of initializer\_list object is incompatible with C++98`|
1693+------------------------------------------------------------------------------------------------------------+
1694
1695+------------------------------------------------------------------------------------+
1696|:warning:`warning:` |nbsp| :diagtext:`inline namespaces are incompatible with C++98`|
1697+------------------------------------------------------------------------------------+
1698
1699+-------------------------------------------------------------------------------------+
1700|:warning:`warning:` |nbsp| :diagtext:`lambda expressions are incompatible with C++98`|
1701+-------------------------------------------------------------------------------------+
1702
1703+-----------------------------------------------------------------------------------------------------------+
1704|:warning:`warning:` |nbsp| :diagtext:`'<::' is treated as digraph '<:' (aka '\[') followed by ':' in C++98`|
1705+-----------------------------------------------------------------------------------------------------------+
1706
1707+------------------------------------------------------------------------------------+
1708|:warning:`warning:` |nbsp| :diagtext:`literal operators are incompatible with C++98`|
1709+------------------------------------------------------------------------------------+
1710
1711+---------------------------------------------------------------------------------------------------------------------------+
1712|:warning:`warning:` |nbsp| :diagtext:`universal character name referring to a control character is incompatible with C++98`|
1713+---------------------------------------------------------------------------------------------------------------------------+
1714
1715+-----------------------------------------------------------------------------------------------------------------------------------------------------+
1716|:warning:`warning:` |nbsp| :diagtext:`specifying character '`:placeholder:`A`:diagtext:`' with a universal character name is incompatible with C++98`|
1717+-----------------------------------------------------------------------------------------------------------------------------------------------------+
1718
1719+------------------------------------------------------------------------------------------+
1720|:warning:`warning:` |nbsp| :diagtext:`noexcept specifications are incompatible with C++98`|
1721+------------------------------------------------------------------------------------------+
1722
1723+---------------------------------------------------------------------------------------+
1724|:warning:`warning:` |nbsp| :diagtext:`noexcept expressions are incompatible with C++98`|
1725+---------------------------------------------------------------------------------------+
1726
1727+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1728|:warning:`warning:` |nbsp| :diagtext:`use of non-static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in an unevaluated context is incompatible with C++98`|
1729+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1730
1731+----------------------------------------------------------------------------------------------------------------------------------+
1732|:warning:`warning:` |nbsp| :diagtext:`non-class friend type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with C++98`|
1733+----------------------------------------------------------------------------------------------------------------------------------+
1734
1735+--------------------------------------------------------------------------------------------------------------------+
1736|:warning:`warning:` |nbsp| :diagtext:`in-class initialization of non-static data members is incompatible with C++98`|
1737+--------------------------------------------------------------------------------------------------------------------+
1738
1739+---------------------------+------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+----------------------------------------------+
1740|:warning:`warning:` |nbsp| |+----------------------------+| |nbsp| :diagtext:`member` |nbsp| :placeholder:`B` |nbsp| :diagtext:`with a non-trivial` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`is incompatible with C++98`|
1741| ||:diagtext:`anonymous struct`|| ||:diagtext:`constructor` || |
1742| |+----------------------------+| |+------------------------------------+| |
1743| ||:diagtext:`union` || ||:diagtext:`copy constructor` || |
1744| |+----------------------------+| |+------------------------------------+| |
1745| | | ||:diagtext:`move constructor` || |
1746| | | |+------------------------------------+| |
1747| | | ||:diagtext:`copy assignment operator`|| |
1748| | | |+------------------------------------+| |
1749| | | ||:diagtext:`move assignment operator`|| |
1750| | | |+------------------------------------+| |
1751| | | ||:diagtext:`destructor` || |
1752| | | |+------------------------------------+| |
1753+---------------------------+------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+----------------------------------------------+
1754
1755+---------------------------------------------------------------------------+
1756|:warning:`warning:` |nbsp| :diagtext:`'nullptr' is incompatible with C++98`|
1757+---------------------------------------------------------------------------+
1758
1759+--------------------------------------------------------------------------------------------------------+
1760|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' keyword is incompatible with C++98`|
1761+--------------------------------------------------------------------------------------------------------+
1762
1763+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+
1764|:warning:`warning:` |nbsp| :diagtext:`passing object of trivial but non-POD type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++98`|
1765| ||:diagtext:`function` || |
1766| |+-----------------------+| |
1767| ||:diagtext:`block` || |
1768| |+-----------------------+| |
1769| ||:diagtext:`method` || |
1770| |+-----------------------+| |
1771| ||:diagtext:`constructor`|| |
1772| |+-----------------------+| |
1773+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+
1774
1775+--------------------------------------------------------------------------------------+
1776|:warning:`warning:` |nbsp| :diagtext:`raw string literals are incompatible with C++98`|
1777+--------------------------------------------------------------------------------------+
1778
1779+----------------------------------------------------------------------------------------------------+
1780|:warning:`warning:` |nbsp| :diagtext:`reference qualifiers on functions are incompatible with C++98`|
1781+----------------------------------------------------------------------------------------------------+
1782
1783+-------------------------------------------------------------------------------------------------------------+
1784|:warning:`warning:` |nbsp| :diagtext:`reference initialized from initializer list is incompatible with C++98`|
1785+-------------------------------------------------------------------------------------------------------------+
1786
1787+------------------------------------------------------------------------------------+
1788|:warning:`warning:` |nbsp| :diagtext:`rvalue references are incompatible with C++98`|
1789+------------------------------------------------------------------------------------+
1790
1791+--------------------------------------------------------------------------------------+
1792|:warning:`warning:` |nbsp| :diagtext:`scoped enumerations are incompatible with C++98`|
1793+--------------------------------------------------------------------------------------+
1794
1795+------------------------------------------------------------------------------------------------------------+
1796|:warning:`warning:` |nbsp| :diagtext:`substitution failure due to access control is incompatible with C++98`|
1797+------------------------------------------------------------------------------------------------------------+
1798
1799+----------------------------------------------------------------------------------------------+
1800|:warning:`warning:` |nbsp| :diagtext:`static\_assert declarations are incompatible with C++98`|
1801+----------------------------------------------------------------------------------------------+
1802
1803+----------------------------------------------------------------------------------------------------------------------------------------+
1804|:warning:`warning:` |nbsp| :diagtext:`static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in union is incompatible with C++98`|
1805+----------------------------------------------------------------------------------------------------------------------------------------+
1806
1807+---------------------------------------------------------------------------------------------------------------+
1808|:warning:`warning:` |nbsp| :diagtext:`jump from switch statement to this case label is incompatible with C++98`|
1809+---------------------------------------------------------------------------------------------------------------+
1810
1811+---------------------------------------------------------------------------------------------------------------------------------------+
1812|:warning:`warning:` |nbsp| :diagtext:`redundant parentheses surrounding address non-type template argument are incompatible with C++98`|
1813+---------------------------------------------------------------------------------------------------------------------------------------+
1814
1815+-------------------------------------------------------------------------------------------------------------------+
1816|:warning:`warning:` |nbsp| :diagtext:`use of null pointer as non-type template argument is incompatible with C++98`|
1817+-------------------------------------------------------------------------------------------------------------------+
1818
1819+--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+
1820|:warning:`warning:` |nbsp| :diagtext:`non-type template argument referring to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with internal linkage is incompatible with C++98`|
1821| ||:diagtext:`function`|| |
1822| |+--------------------+| |
1823| ||:diagtext:`object` || |
1824| |+--------------------+| |
1825+--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+
1826
1827+-----------------------------------------------------------------------------------------------------------------+
1828|:warning:`warning:` |nbsp| :diagtext:`use of 'template' keyword outside of a template is incompatible with C++98`|
1829+-----------------------------------------------------------------------------------------------------------------+
1830
1831+---------------------------------------------------------------------------------------------------------------------+
1832|:warning:`warning:` |nbsp| :diagtext:`default template arguments for a function template are incompatible with C++98`|
1833+---------------------------------------------------------------------------------------------------------------------+
1834
1835+---------------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1836|:warning:`warning:` |nbsp| |+-------------------------------------+| |nbsp| :diagtext:`specialization of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`outside namespace` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is incompatible with C++98`|
1837| ||:diagtext:`class template` || |
1838| |+-------------------------------------+| |
1839| ||:diagtext:`class template partial` || |
1840| |+-------------------------------------+| |
1841| ||:diagtext:`variable template` || |
1842| |+-------------------------------------+| |
1843| ||:diagtext:`variable template partial`|| |
1844| |+-------------------------------------+| |
1845| ||:diagtext:`function template` || |
1846| |+-------------------------------------+| |
1847| ||:diagtext:`member function` || |
1848| |+-------------------------------------+| |
1849| ||:diagtext:`static data member` || |
1850| |+-------------------------------------+| |
1851| ||:diagtext:`member class` || |
1852| |+-------------------------------------+| |
1853| ||:diagtext:`member enumeration` || |
1854| |+-------------------------------------+| |
1855+---------------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1856
1857+----------------------------------------------------------------------------------------+
1858|:warning:`warning:` |nbsp| :diagtext:`trailing return types are incompatible with C++98`|
1859+----------------------------------------------------------------------------------------+
1860
1861+---------------------------------------------------------------------------------------------------------------+
1862|:warning:`warning:` |nbsp| :diagtext:`consecutive right angle brackets are incompatible with C++98 (use '> >')`|
1863+---------------------------------------------------------------------------------------------------------------+
1864
1865+---------------------------------------------------------------------------------------------------------+
1866|:warning:`warning:` |nbsp| :diagtext:`use of 'typename' outside of a template is incompatible with C++98`|
1867+---------------------------------------------------------------------------------------------------------+
1868
1869+-------------------------------------------------------------------------------------------------------+-----------------------+------------------------------------------------+
1870|:warning:`warning:` |nbsp| :diagtext:`befriending` |nbsp| :placeholder:`B` |nbsp| :diagtext:`without '`|+---------------------+|:diagtext:`' keyword is incompatible with C++98`|
1871| ||:diagtext:`struct` || |
1872| |+---------------------+| |
1873| ||:diagtext:`interface`|| |
1874| |+---------------------+| |
1875| ||:diagtext:`union` || |
1876| |+---------------------+| |
1877| ||:diagtext:`class` || |
1878| |+---------------------+| |
1879| ||:diagtext:`enum` || |
1880| |+---------------------+| |
1881+-------------------------------------------------------------------------------------------------------+-----------------------+------------------------------------------------+
1882
1883+-------------------------------------------------------------------------------------------------------+
1884|:warning:`warning:` |nbsp| :diagtext:`using this character in an identifier is incompatible with C++98`|
1885+-------------------------------------------------------------------------------------------------------+
1886
1887+-----------------------------------------------------------------------------------+
1888|:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C++98`|
1889+-----------------------------------------------------------------------------------+
1890
1891+---------------------------------------------------------------------------------------------------------------+
1892|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' type specifier is incompatible with C++98`|
1893+---------------------------------------------------------------------------------------------------------------+
1894
1895+------------------------------------------------------------------------------------------+
1896|:warning:`warning:` |nbsp| :diagtext:`inheriting constructors are incompatible with C++98`|
1897+------------------------------------------------------------------------------------------+
1898
1899+-------------------------------------------------------------------------------------+
1900|:warning:`warning:` |nbsp| :diagtext:`variadic templates are incompatible with C++98`|
1901+-------------------------------------------------------------------------------------+
1902
1903
1904-Wc++98-compat-bind-to-temporary-copy
1905-------------------------------------
1906**Diagnostic text:**
1907
1908+---------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+
1909|:warning:`warning:` |nbsp| |+---------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary would` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`in C++98`|
1910| ||:diagtext:`copying variable` || ||:diagtext:`invoke an inaccessible constructor`|| |
1911| |+---------------------------------------+| |+----------------------------------------------+| |
1912| ||:diagtext:`copying parameter` || ||:diagtext:`find no viable constructor` || |
1913| |+---------------------------------------+| |+----------------------------------------------+| |
1914| ||:diagtext:`returning object` || ||:diagtext:`find ambiguous constructors` || |
1915| |+---------------------------------------+| |+----------------------------------------------+| |
1916| ||:diagtext:`throwing object` || ||:diagtext:`invoke a deleted constructor` || |
1917| |+---------------------------------------+| |+----------------------------------------------+| |
1918| ||:diagtext:`copying member subobject` || | | |
1919| |+---------------------------------------+| | | |
1920| ||:diagtext:`copying array element` || | | |
1921| |+---------------------------------------+| | | |
1922| ||:diagtext:`allocating object` || | | |
1923| |+---------------------------------------+| | | |
1924| ||:diagtext:`copying temporary` || | | |
1925| |+---------------------------------------+| | | |
1926| ||:diagtext:`initializing base subobject`|| | | |
1927| |+---------------------------------------+| | | |
1928| ||:diagtext:`initializing vector element`|| | | |
1929| |+---------------------------------------+| | | |
1930+---------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+
1931
1932
1933-Wc++98-compat-local-type-template-args
1934---------------------------------------
1935**Diagnostic text:**
1936
1937+--------------------------------------------------------------------------------------------------------------------------------------------+
1938|:warning:`warning:` |nbsp| :diagtext:`local type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`as template argument is incompatible with C++98`|
1939+--------------------------------------------------------------------------------------------------------------------------------------------+
1940
1941
1942-Wc++98-compat-pedantic
1943-----------------------
Richard Smith8cba2912016-09-14 01:55:42 +00001944Also 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`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00001945
1946**Diagnostic text:**
1947
1948+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------------+
1949|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is incompatible with C++98`|
1950| ||:diagtext:`integral` || |
1951| |+-----------------------+| |
1952| ||:diagtext:`enumeration`|| |
1953| |+-----------------------+| |
1954+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------------+
1955
1956+------------------------------------------------------------------------------------------------------------------------+
1957|:warning:`warning:` |nbsp| :diagtext:`cast between pointer-to-function and pointer-to-object is incompatible with C++98`|
1958+------------------------------------------------------------------------------------------------------------------------+
1959
1960+----------------------------------------------------------------------------------------+
1961|:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are incompatible with C++98`|
1962+----------------------------------------------------------------------------------------+
1963
1964+--------------------------------------------------------------------------------------------------------+
1965|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are incompatible with C++98`|
1966+--------------------------------------------------------------------------------------------------------+
1967
1968+-----------------------------------------------------------------------------------+
1969|:warning:`warning:` |nbsp| :diagtext:`extern templates are incompatible with C++98`|
1970+-----------------------------------------------------------------------------------+
1971
1972+-----------------------------------------------------------------------------+
1973|:warning:`warning:` |nbsp| :diagtext:`'long long' is incompatible with C++98`|
1974+-----------------------------------------------------------------------------+
1975
1976+----------------------------------------------------------------------------+
1977|:warning:`warning:` |nbsp| :diagtext:`C++98 requires newline at end of file`|
1978+----------------------------------------------------------------------------+
1979
1980+-------------------------------------------------------------------------------------------------+
1981|:warning:`warning:` |nbsp| :diagtext:`#line number greater than 32767 is incompatible with C++98`|
1982+-------------------------------------------------------------------------------------------------+
1983
1984+-------------------------------------------------------------------------------------------------+
1985|:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is incompatible with C++98`|
1986+-------------------------------------------------------------------------------------------------+
1987
1988+----------------------------------------------------------------------------------+
1989|:warning:`warning:` |nbsp| :diagtext:`variadic macros are incompatible with C++98`|
1990+----------------------------------------------------------------------------------+
1991
1992
1993-Wc++98-compat-unnamed-type-template-args
1994-----------------------------------------
1995**Diagnostic text:**
1996
1997+---------------------------------------------------------------------------------------------------+
1998|:warning:`warning:` |nbsp| :diagtext:`unnamed type as template argument is incompatible with C++98`|
1999+---------------------------------------------------------------------------------------------------+
2000
2001
2002-Wc11-extensions
2003----------------
2004**Diagnostic text:**
2005
2006+---------------------------------------------------------------------------+
2007|:warning:`warning:` |nbsp| :diagtext:`anonymous unions are a C11 extension`|
2008+---------------------------------------------------------------------------+
2009
2010+----------------------------------------------------------------------------------------+
2011|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C11-specific feature`|
2012+----------------------------------------------------------------------------------------+
2013
2014+----------------------------------------------------------------------------+
2015|:warning:`warning:` |nbsp| :diagtext:`anonymous structs are a C11 extension`|
2016+----------------------------------------------------------------------------+
2017
2018+------------------------------------------------------------------------------------+
2019|:warning:`warning:` |nbsp| :diagtext:`generic selections are a C11-specific feature`|
2020+------------------------------------------------------------------------------------+
2021
2022+--------------------------------------------------------------------------------------+
2023|:warning:`warning:` |nbsp| :diagtext:`\_Noreturn functions are a C11-specific feature`|
2024+--------------------------------------------------------------------------------------+
2025
2026+---------------------------------------------------------------------------------+
2027|:warning:`warning:` |nbsp| :diagtext:`\_Static\_assert is a C11-specific feature`|
2028+---------------------------------------------------------------------------------+
2029
2030
2031-Wc99-compat
2032------------
2033Some of the diagnostics controlled by this flag are enabled by default.
2034
2035**Diagnostic text:**
2036
2037+---------------------------+--------------------------------------------------------+--------------------------------------------+
2038|:warning:`warning:` |nbsp| |+------------------------------------------------------+| |nbsp| :diagtext:`is incompatible with C99`|
2039| ||:diagtext:`using this character in an identifier` || |
2040| |+------------------------------------------------------+| |
2041| ||:diagtext:`starting an identifier with this character`|| |
2042| |+------------------------------------------------------+| |
2043+---------------------------+--------------------------------------------------------+--------------------------------------------+
2044
2045+---------------------------------------------------------------------------------+
2046|:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C99`|
2047+---------------------------------------------------------------------------------+
2048
2049+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+----------------------------------+
2050|:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C89; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C99 onwards`|
2051| ||:diagtext:`have type 'long long'`|| |
2052| |+---------------------------------+| |
2053| ||:diagtext:`be ill-formed` || |
2054| |+---------------------------------+| |
2055+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+----------------------------------+
2056
2057
2058-Wc99-extensions
2059----------------
2060Some of the diagnostics controlled by this flag are enabled by default.
2061
2062**Diagnostic text:**
2063
2064+-----------------------------------------------------------------------------------------------+
2065|:warning:`warning:` |nbsp| :diagtext:`initializer for aggregate is not a compile-time constant`|
2066+-----------------------------------------------------------------------------------------------+
2067
2068+---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+
2069|:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`array size` |nbsp| |+---------------------+|:diagtext:`is a C99 feature`|
2070| ||:diagtext:`qualifier in` |nbsp| || || || |
2071| |+--------------------------------+| |+---------------------+| |
2072| ||:diagtext:`static` |nbsp| || || || |
2073| |+--------------------------------+| |+---------------------+| |
2074| || || ||:diagtext:`'\[\*\] '`|| |
2075| |+--------------------------------+| |+---------------------+| |
2076+---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+
2077
2078+-----------------------------------------------------------------------------------+
2079|:warning:`warning:` |nbsp| :diagtext:`compound literals are a C99-specific feature`|
2080+-----------------------------------------------------------------------------------+
2081
2082+-------------------------------------------------------------------------------+
2083|:warning:`warning:` |nbsp| :diagtext:`flexible array members are a C99 feature`|
2084+-------------------------------------------------------------------------------+
2085
2086+-------------------------------------------------------------------------------------------------+
2087|:warning:`warning:` |nbsp| :diagtext:`variable declaration in for loop is a C99-specific feature`|
2088+-------------------------------------------------------------------------------------------------+
2089
2090+---------------------------------------------------------------------------------------+
2091|:warning:`warning:` |nbsp| :diagtext:`ISO C99 requires whitespace after the macro name`|
2092+---------------------------------------------------------------------------------------+
2093
2094+--------------------------------------------------------------------------------+
2095|:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C99 feature`|
2096+--------------------------------------------------------------------------------+
2097
2098+------------------------------------------------------------------------------+
2099|:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are a C99 feature`|
2100+------------------------------------------------------------------------------+
2101
2102+-------------------------------------------------------------------------------------------------------+
2103|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C99-specific feature`|
2104+-------------------------------------------------------------------------------------------------------+
2105
2106+---------------------------------------------------------------------------------------+
2107|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating constants are a C99 feature`|
2108+---------------------------------------------------------------------------------------+
2109
2110
2111-Wcast-align
2112------------
2113**Diagnostic text:**
2114
2115+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2116|:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`increases required alignment from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`|
2117+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2118
2119
2120-Wcast-calling-convention
2121-------------------------
2122This diagnostic is enabled by default.
2123
2124**Diagnostic text:**
2125
2126+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2127|:warning:`warning:` |nbsp| :diagtext:`cast between incompatible calling conventions '`:placeholder:`A`:diagtext:`' and '`:placeholder:`B`:diagtext:`'; calls through this pointer may abort at runtime`|
2128+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2129
2130
2131-Wcast-of-sel-type
2132------------------
2133This diagnostic is enabled by default.
2134
2135**Diagnostic text:**
2136
2137+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2138|:warning:`warning:` |nbsp| :diagtext:`cast of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is deprecated; use sel\_getName instead`|
2139+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2140
2141
2142-Wcast-qual
2143-----------
2144**Diagnostic text:**
2145
2146+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------+
2147|:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`drops` |nbsp| |+-----------------------------------------+|
2148| ||:diagtext:`const and volatile qualifiers`||
2149| |+-----------------------------------------+|
2150| ||:diagtext:`const qualifier` ||
2151| |+-----------------------------------------+|
2152| ||:diagtext:`volatile qualifier` ||
2153| |+-----------------------------------------+|
2154+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------+
2155
2156+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2157|:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`must have all intermediate pointers const qualified to be safe`|
2158+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2159
2160
2161-Wchar-align
2162------------
2163This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
2164
2165-Wchar-subscripts
2166-----------------
2167**Diagnostic text:**
2168
2169+------------------------------------------------------------+-------------------------+-------------------------------------+
2170|:warning:`warning:` |nbsp| :diagtext:`array section` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is of type 'char'`|
2171| ||:diagtext:`lower bound`|| |
2172| |+-----------------------+| |
2173| ||:diagtext:`length` || |
2174| |+-----------------------+| |
2175+------------------------------------------------------------+-------------------------+-------------------------------------+
2176
2177+------------------------------------------------------------------------+
2178|:warning:`warning:` |nbsp| :diagtext:`array subscript is of type 'char'`|
2179+------------------------------------------------------------------------+
2180
2181
2182-Wclang-cl-pch
2183--------------
2184This diagnostic is enabled by default.
2185
2186**Diagnostic text:**
2187
2188+-------------------------------------------------------------------------------------------------------------------------+
2189|:warning:`warning:` |nbsp| :diagtext:`support for '/Yc' with more than one source file not implemented yet; flag ignored`|
2190+-------------------------------------------------------------------------------------------------------------------------+
2191
2192+------------------------------------------------------------------------------------------------------------------------------+
2193|:warning:`warning:` |nbsp| :diagtext:`support for '/Yc' and '/Yu' with different filenames not implemented yet; flags ignored`|
2194+------------------------------------------------------------------------------------------------------------------------------+
2195
2196+--------------------------------------------------------------------------------------------------------------------------------------+
2197|:warning:`warning:` |nbsp| :diagtext:`support for '`:placeholder:`A`:diagtext:`' without a filename not implemented yet; flag ignored`|
2198+--------------------------------------------------------------------------------------------------------------------------------------+
2199
2200+----------------------------------------------------------------------------------------------------------------------------------------------------+
2201|:warning:`warning:` |nbsp| :diagtext:`support for '`:placeholder:`A`:diagtext:`' without a corresponding /FI flag not implemented yet; flag ignored`|
2202+----------------------------------------------------------------------------------------------------------------------------------------------------+
2203
2204
2205-Wclass-varargs
2206---------------
2207Some of the diagnostics controlled by this flag are enabled by default.
2208
2209Also controls `-Wnon-pod-varargs`_.
2210
2211**Diagnostic text:**
2212
2213+---------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------+
2214|:warning:`warning:` |nbsp| :diagtext:`passing object of class type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+|+--------------------------------------------------------------------+|
2215| ||:diagtext:`function` ||| ||
2216| |+-----------------------+|+--------------------------------------------------------------------+|
2217| ||:diagtext:`block` |||+------------------------------------------------------------------+||
2218| |+-----------------------+|||:diagtext:`; did you mean to call '`:placeholder:`D`:diagtext:`'?`|||
2219| ||:diagtext:`method` |||+------------------------------------------------------------------+||
2220| |+-----------------------+|+--------------------------------------------------------------------+|
2221| ||:diagtext:`constructor`|| |
2222| |+-----------------------+| |
2223+---------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------+
2224
2225
2226-Wcomma
2227-------
2228**Diagnostic text:**
2229
2230+-----------------------------------------------------------------------------+
2231|:warning:`warning:` |nbsp| :diagtext:`possible misuse of comma operator here`|
2232+-----------------------------------------------------------------------------+
2233
2234
2235-Wcomment
2236---------
2237Some of the diagnostics controlled by this flag are enabled by default.
2238
2239**Diagnostic text:**
2240
2241+--------------------------------------------------------------------------------------------------+
2242|:warning:`warning:` |nbsp| :diagtext:`escaped newline between \*/ characters at block comment end`|
2243+--------------------------------------------------------------------------------------------------+
2244
2245+-----------------------------------------------------------------------------------+
2246|:warning:`warning:` |nbsp| :diagtext:`// comments are not allowed in this language`|
2247+-----------------------------------------------------------------------------------+
2248
2249+------------------------------------------------------------+
2250|:warning:`warning:` |nbsp| :diagtext:`multi-line // comment`|
2251+------------------------------------------------------------+
2252
2253+-----------------------------------------------------------------+
2254|:warning:`warning:` |nbsp| :diagtext:`'/\*' within block comment`|
2255+-----------------------------------------------------------------+
2256
2257
2258-Wcomments
2259----------
2260Synonym for `-Wcomment`_.
2261
2262
2263-Wcompare-distinct-pointer-types
2264--------------------------------
2265This diagnostic is enabled by default.
2266
2267**Diagnostic text:**
2268
2269+---------------------------------------------------------------------------+
2270|:warning:`warning:` |nbsp| :diagtext:`comparison of distinct pointer types`|
2271+---------------------------------------------------------------------------+
2272
Richard Smithb6a3b4b2016-09-12 05:58:29 +00002273
2274-Wcomplex-component-init
2275------------------------
2276**Diagnostic text:**
2277
2278+----------------------------------------------------------------------------------------------------------------------+
2279|:warning:`warning:` |nbsp| :diagtext:`complex initialization specifying real and imaginary components is an extension`|
2280+----------------------------------------------------------------------------------------------------------------------+
2281
2282
2283-Wconditional-type-mismatch
2284---------------------------
2285This diagnostic is enabled by default.
2286
2287**Diagnostic text:**
2288
2289+----------------------------------------------------------------------------------------------+
2290|:warning:`warning:` |nbsp| :diagtext:`pointer/integer type mismatch in conditional expression`|
2291+----------------------------------------------------------------------------------------------+
2292
2293
2294-Wconditional-uninitialized
2295---------------------------
2296**Diagnostic text:**
2297
2298+----------------------------------------------------------------------------------------------------------------------------+-------------------------------+
2299|:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be uninitialized when` |nbsp| |+-----------------------------+|
2300| ||:diagtext:`used here` ||
2301| |+-----------------------------+|
2302| ||:diagtext:`captured by block`||
2303| |+-----------------------------+|
2304+----------------------------------------------------------------------------------------------------------------------------+-------------------------------+
2305
2306
2307-Wconfig-macros
2308---------------
2309This diagnostic is enabled by default.
2310
2311**Diagnostic text:**
2312
2313+---------------------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+---------------------------------------------------------+
2314|:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`of configuration macro '`:placeholder:`B`:diagtext:`' has no effect on the import of '`:placeholder:`C`:diagtext:`'; pass '`|+------------------------------------------------+|:diagtext:`' on the command line to configure the module`|
2315| ||:diagtext:`definition`|| ||+----------------------------------------------+|| |
2316| |+----------------------+| |||:diagtext:`-D`:placeholder:`B`:diagtext:`=...`||| |
2317| ||:diagtext:`#undef` || ||+----------------------------------------------+|| |
2318| |+----------------------+| |+------------------------------------------------+| |
2319| | | ||+------------------------------+ || |
2320| | | |||:diagtext:`-U`:placeholder:`B`| || |
2321| | | ||+------------------------------+ || |
2322| | | |+------------------------------------------------+| |
2323+---------------------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+---------------------------------------------------------+
2324
2325
2326-Wconstant-conversion
2327---------------------
2328This diagnostic is enabled by default.
2329
2330Also controls `-Wbitfield-constant-conversion`_.
2331
2332**Diagnostic text:**
2333
2334+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2335|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
2336+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2337
2338
2339-Wconstant-logical-operand
2340--------------------------
2341This diagnostic is enabled by default.
2342
2343**Diagnostic text:**
2344
2345+----------------------------------------------------------------------------------------------------------+
2346|:warning:`warning:` |nbsp| :diagtext:`use of logical '`:placeholder:`A`:diagtext:`' with constant operand`|
2347+----------------------------------------------------------------------------------------------------------+
2348
2349
2350-Wconstexpr-not-const
2351---------------------
2352This diagnostic is enabled by default.
2353
2354**Diagnostic text:**
2355
2356+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
2357|:warning:`warning:` |nbsp| :diagtext:`'constexpr' non-static member function will not be implicitly 'const' in C++14; add 'const' to avoid a change in behavior`|
2358+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
2359
2360
2361-Wconsumed
2362----------
2363**Diagnostic text:**
2364
2365+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
2366|:warning:`warning:` |nbsp| :diagtext:`consumed analysis attribute is attached to member of class '`:placeholder:`A`:diagtext:`' which isn't marked as consumable`|
2367+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
2368
2369+--------------------------------------------------------------------------------------------------------------------------------+
2370|:warning:`warning:` |nbsp| :diagtext:`state of variable '`:placeholder:`A`:diagtext:`' must match at the entry and exit of loop`|
2371+--------------------------------------------------------------------------------------------------------------------------------+
2372
2373+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2374|:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' not in expected state when the function returns: expected '`:placeholder:`B`:diagtext:`', observed '`:placeholder:`C`:diagtext:`'`|
2375+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2376
2377+-------------------------------------------------------------------------------------------------------------------------------------------------------+
2378|:warning:`warning:` |nbsp| :diagtext:`argument not in expected state; expected '`:placeholder:`A`:diagtext:`', observed '`:placeholder:`B`:diagtext:`'`|
2379+-------------------------------------------------------------------------------------------------------------------------------------------------------+
2380
2381+---------------------------------------------------------------------------------------------------------------+
2382|:warning:`warning:` |nbsp| :diagtext:`return state set for an unconsumable type '`:placeholder:`A`:diagtext:`'`|
2383+---------------------------------------------------------------------------------------------------------------+
2384
2385+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
2386|:warning:`warning:` |nbsp| :diagtext:`return value not in expected state; expected '`:placeholder:`A`:diagtext:`', observed '`:placeholder:`B`:diagtext:`'`|
2387+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
2388
2389+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2390|:warning:`warning:` |nbsp| :diagtext:`invalid invocation of method '`:placeholder:`A`:diagtext:`' on object '`:placeholder:`B`:diagtext:`' while it is in the '`:placeholder:`C`:diagtext:`' state`|
2391+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2392
2393+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2394|:warning:`warning:` |nbsp| :diagtext:`invalid invocation of method '`:placeholder:`A`:diagtext:`' on a temporary object while it is in the '`:placeholder:`B`:diagtext:`' state`|
2395+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2396
2397
2398-Wconversion
2399------------
2400Some of the diagnostics controlled by this flag are enabled by default.
2401
Richard Smith9a016602017-04-13 22:44:22 +00002402Also controls `-Wbitfield-enum-conversion`_, `-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`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00002403
2404**Diagnostic text:**
2405
2406+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
2407|:warning:`warning:` |nbsp| :diagtext:`implicit conversion discards imaginary component:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
2408+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
2409
2410+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
2411|:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
2412+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
2413
2414+---------------------------------------------------------------------------------------------------------------------------------------------------------+
2415|:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses integer precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
2416+---------------------------------------------------------------------------------------------------------------------------------------------------------+
2417
2418+--------------------------------------------------------------------------------------------------------------------------------------------------------+
2419|:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns vector to scalar:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
2420+--------------------------------------------------------------------------------------------------------------------------------------------------------+
2421
2422+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2423|:warning:`warning:` |nbsp| :diagtext:`non-type template argument with value '`:placeholder:`A`:diagtext:`' converted to '`:placeholder:`B`:diagtext:`' for unsigned template parameter of type` |nbsp| :placeholder:`C`|
2424+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2425
2426+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2427|:warning:`warning:` |nbsp| :diagtext:`non-type template argument value '`:placeholder:`A`:diagtext:`' truncated to '`:placeholder:`B`:diagtext:`' for template parameter of type` |nbsp| :placeholder:`C`|
2428+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2429
2430
2431-Wconversion-null
2432-----------------
2433Synonym for `-Wnull-conversion`_.
2434
2435
Richard Smith9a016602017-04-13 22:44:22 +00002436-Wcoroutine
2437-----------
2438This diagnostic is enabled by default.
2439
2440**Diagnostic text:**
2441
2442+-----------------------------------------------------------------------------------------------------------------------------------------------------+
2443|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is required to declare the member 'unhandled\_exception()' when exceptions are enabled`|
2444+-----------------------------------------------------------------------------------------------------------------------------------------------------+
2445
2446
Richard Smithb6a3b4b2016-09-12 05:58:29 +00002447-Wcovered-switch-default
2448------------------------
2449**Diagnostic text:**
2450
2451+--------------------------------------------------------------------------------------------------+
2452|:warning:`warning:` |nbsp| :diagtext:`default label in switch which covers all enumeration values`|
2453+--------------------------------------------------------------------------------------------------+
2454
2455
2456-Wcstring-format-directive
2457--------------------------
2458**Diagnostic text:**
2459
2460+------------------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+------------------------+
2461|:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| :placeholder:`A` |nbsp| :diagtext:`directive in` |nbsp| |+--------------------+| |nbsp| :diagtext:`which is being passed as a formatting argument to the formatting` |nbsp| |+----------------------+|
2462| ||:diagtext:`NSString`|| ||:diagtext:`method` ||
2463| |+--------------------+| |+----------------------+|
2464| ||:diagtext:`CFString`|| ||:diagtext:`CFfunction`||
2465| |+--------------------+| |+----------------------+|
2466+------------------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+------------------------+
2467
2468
2469-Wctor-dtor-privacy
2470-------------------
2471This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
2472
2473-Wcuda-compat
2474-------------
2475Some of the diagnostics controlled by this flag are enabled by default.
2476
2477**Diagnostic text:**
2478
2479+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
2480|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute parameter` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is negative and will be ignored`|
2481+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
2482
Richard Smithcf9f4222017-01-20 19:27:09 +00002483+---------------------------------------------------------------------------------------------------------------------------------+
2484|:warning:`warning:` |nbsp| :diagtext:`nvcc does not allow '\_\_`:placeholder:`A`:diagtext:`\_\_' to appear after '()' in lambdas`|
2485+---------------------------------------------------------------------------------------------------------------------------------+
2486
Richard Smithb6a3b4b2016-09-12 05:58:29 +00002487+------------------------------------------------------------------------------------------------------------+
2488|:warning:`warning:` |nbsp| :diagtext:`ignored 'inline' attribute on kernel function` |nbsp| :placeholder:`A`|
2489+------------------------------------------------------------------------------------------------------------+
2490
2491+--------------------------------------------------------------------------------------------------------------------------------------------------------+
2492|:warning:`warning:` |nbsp| :diagtext:`kernel function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a member function; this may not be accepted by nvcc`|
2493+--------------------------------------------------------------------------------------------------------------------------------------------------------+
2494
2495+--------------------------------------------------------------------------------------------------------------+
2496|:warning:`warning:` |nbsp| :diagtext:`argument to '#pragma unroll' should not be in parentheses in CUDA C/C++`|
2497+--------------------------------------------------------------------------------------------------------------+
2498
2499
2500-Wcustom-atomic-properties
2501--------------------------
2502**Diagnostic text:**
2503
2504+---------------------------------------------------------------------------------------------------------------------------------------+--------------------+----------------------------------------------------------------------------+
2505|:warning:`warning:` |nbsp| :diagtext:`atomic by default property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has a user defined` |nbsp| |+------------------+| |nbsp| :diagtext:`(property should be marked 'atomic' if this is intended)`|
2506| ||:diagtext:`getter`|| |
2507| |+------------------+| |
2508| ||:diagtext:`setter`|| |
2509| |+------------------+| |
2510+---------------------------------------------------------------------------------------------------------------------------------------+--------------------+----------------------------------------------------------------------------+
2511
2512
2513-Wdangling-else
2514---------------
2515This diagnostic is enabled by default.
2516
2517**Diagnostic text:**
2518
2519+---------------------------------------------------------------------------------+
2520|:warning:`warning:` |nbsp| :diagtext:`add explicit braces to avoid dangling else`|
2521+---------------------------------------------------------------------------------+
2522
2523
2524-Wdangling-field
2525----------------
2526This diagnostic is enabled by default.
2527
2528**Diagnostic text:**
2529
2530+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
2531|:warning:`warning:` |nbsp| :diagtext:`binding reference member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to stack allocated parameter` |nbsp| :placeholder:`B`|
2532+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
2533
2534+----------------------------------------------------------------+----------------------------------+----------------------------------------------------------------------------------+
2535|:warning:`warning:` |nbsp| :diagtext:`binding reference` |nbsp| |+--------------------------------+|:diagtext:`member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to a temporary value`|
2536| || || |
2537| |+--------------------------------+| |
2538| ||:diagtext:`subobject of` |nbsp| || |
2539| |+--------------------------------+| |
2540+----------------------------------------------------------------+----------------------------------+----------------------------------------------------------------------------------+
2541
2542+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2543|:warning:`warning:` |nbsp| :diagtext:`initializing pointer member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with the stack address of parameter` |nbsp| :placeholder:`B`|
2544+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2545
2546
2547-Wdangling-initializer-list
2548---------------------------
2549This diagnostic is enabled by default.
2550
2551**Diagnostic text:**
2552
2553+-----------------------------------------------------------------------------------------------------------------+---------------------------------+
2554|:warning:`warning:` |nbsp| :diagtext:`array backing the initializer list will be destroyed at the end of` |nbsp| |+-------------------------------+|
2555| ||:diagtext:`the full-expression`||
2556| |+-------------------------------+|
2557| ||:diagtext:`the constructor` ||
2558| |+-------------------------------+|
2559+-----------------------------------------------------------------------------------------------------------------+---------------------------------+
2560
2561
2562-Wdate-time
2563-----------
2564**Diagnostic text:**
2565
2566+------------------------------------------------------------------------------------------+
2567|:warning:`warning:` |nbsp| :diagtext:`expansion of date or time macro is not reproducible`|
2568+------------------------------------------------------------------------------------------+
2569
2570
2571-Wdealloc-in-category
2572---------------------
2573This diagnostic is enabled by default.
2574
2575**Diagnostic text:**
2576
2577+---------------------------------------------------------------------------------+
2578|:warning:`warning:` |nbsp| :diagtext:`-dealloc is being overridden in a category`|
2579+---------------------------------------------------------------------------------+
2580
2581
2582-Wdebug-compression-unavailable
2583-------------------------------
2584This diagnostic is enabled by default.
2585
2586**Diagnostic text:**
2587
2588+------------------------------------------------------------------------------------------+
2589|:warning:`warning:` |nbsp| :diagtext:`cannot compress debug sections (zlib not installed)`|
2590+------------------------------------------------------------------------------------------+
2591
2592
2593-Wdeclaration-after-statement
2594-----------------------------
2595**Diagnostic text:**
2596
2597+-----------------------------------------------------------------------------------+
2598|:warning:`warning:` |nbsp| :diagtext:`ISO C90 forbids mixing declarations and code`|
2599+-----------------------------------------------------------------------------------+
2600
2601
2602-Wdelegating-ctor-cycles
2603------------------------
2604This diagnostic is an error by default, but the flag ``-Wno-delegating-ctor-cycles`` can be used to disable the error.
2605
2606**Diagnostic text:**
2607
2608+------------------------------------------------------------------------------------------------------------------------+
2609|:error:`error:` |nbsp| :diagtext:`constructor for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`creates a delegation cycle`|
2610+------------------------------------------------------------------------------------------------------------------------+
2611
2612
2613-Wdelete-incomplete
2614-------------------
2615This diagnostic is enabled by default.
2616
2617**Diagnostic text:**
2618
2619+-------------------------------------------------------------------------------------------------------------------+
2620|:warning:`warning:` |nbsp| :diagtext:`cannot delete expression with pointer-to-'void' type` |nbsp| :placeholder:`A`|
2621+-------------------------------------------------------------------------------------------------------------------+
2622
2623+--------------------------------------------------------------------------------------------------------------------------------------------------+
2624|:warning:`warning:` |nbsp| :diagtext:`deleting pointer to incomplete type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may cause undefined behavior`|
2625+--------------------------------------------------------------------------------------------------------------------------------------------------+
2626
2627
2628-Wdelete-non-virtual-dtor
2629-------------------------
2630Some of the diagnostics controlled by this flag are enabled by default.
2631
2632**Diagnostic text:**
2633
2634+---------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------+
2635|:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`called on` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that is abstract but has non-virtual destructor`|
2636| ||:diagtext:`delete` || |
2637| |+----------------------+| |
2638| ||:diagtext:`destructor`|| |
2639| |+----------------------+| |
2640+---------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------+
2641
2642+---------------------------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
2643|:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`called on non-final` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that has virtual functions but non-virtual destructor`|
2644| ||:diagtext:`delete` || |
2645| |+----------------------+| |
2646| ||:diagtext:`destructor`|| |
2647| |+----------------------+| |
2648+---------------------------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
2649
2650
2651-Wdeprecated
2652------------
2653Some of the diagnostics controlled by this flag are enabled by default.
2654
Richard Smithcf9f4222017-01-20 19:27:09 +00002655Also controls `-Wdeprecated-attributes`_, `-Wdeprecated-declarations`_, `-Wdeprecated-dynamic-exception-spec`_, `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_, `-Wdeprecated-writable-strings`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00002656
2657**Diagnostic text:**
2658
2659+---------------------------------------------------------------+
2660|:warning:`warning:` |nbsp| :diagtext:`-O4 is equivalent to -O3`|
2661+---------------------------------------------------------------+
2662
2663+---------------------------------------------------------------------------------------------------------+
2664|:warning:`warning:` |nbsp| :diagtext:`access declarations are deprecated; use using declarations instead`|
2665+---------------------------------------------------------------------------------------------------------+
2666
2667+--------------------------------------------------------------------------+---------------------------------+-----------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
2668|:warning:`warning:` |nbsp| :diagtext:`definition of implicit copy` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated because it has a user-declared` |nbsp| |+------------------------------------------------------------+|
2669| ||:diagtext:`constructor` || ||+------------------------+---------------------------------+||
2670| |+-------------------------------+| |||:diagtext:`copy` |nbsp| |+-------------------------------+|||
2671| ||:diagtext:`assignment operator`|| ||| ||:diagtext:`assignment operator`||||
2672| |+-------------------------------+| ||| |+-------------------------------+|||
2673| | | ||| ||:diagtext:`constructor` ||||
2674| | | ||| |+-------------------------------+|||
2675| | | ||+------------------------+---------------------------------+||
2676| | | |+------------------------------------------------------------+|
2677| | | ||:diagtext:`destructor` ||
2678| | | |+------------------------------------------------------------+|
2679+--------------------------------------------------------------------------+---------------------------------+-----------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
2680
2681+-------------------------------------------------------------------------------------------------------------------------------------+
2682|:warning:`warning:` |nbsp| :diagtext:`out-of-line definition of constexpr static data member is redundant in C++17 and is deprecated`|
2683+-------------------------------------------------------------------------------------------------------------------------------------+
2684
2685+----------------------------------------------------------------------------------------------------------------------------------------+
2686|:warning:`warning:` |nbsp| :diagtext:`argument '`:placeholder:`A`:diagtext:`' is deprecated, use '`:placeholder:`B`:diagtext:`' instead`|
2687+----------------------------------------------------------------------------------------------------------------------------------------+
2688
2689+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2690|:warning:`warning:` |nbsp| :diagtext:`treating '`:placeholder:`A`:diagtext:`' input as '`:placeholder:`B`:diagtext:`' when in C++ mode, this behavior is deprecated`|
2691+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2692
Richard Smithb6a3b4b2016-09-12 05:58:29 +00002693+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
2694|:warning:`warning:` |nbsp| :diagtext:`OpenCL version` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not support the option '`:placeholder:`B`:diagtext:`'`|
2695+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
2696
2697+------------------------------------------------------------------------------------+
2698|:warning:`warning:` |nbsp| :diagtext:`Use of 'long' with '\_\_vector' is deprecated`|
2699+------------------------------------------------------------------------------------+
2700
2701
2702-Wdeprecated-attributes
2703-----------------------
2704This diagnostic is enabled by default.
2705
2706**Diagnostic text:**
2707
2708+------------------------------------------------------------------------------------------------------------------------------------------------+
2709|:warning:`warning:` |nbsp| :diagtext:`specifying vector types with the 'mode' attribute is deprecated; use the 'vector\_size' attribute instead`|
2710+------------------------------------------------------------------------------------------------------------------------------------------------+
2711
2712
2713-Wdeprecated-declarations
2714-------------------------
2715This diagnostic is enabled by default.
2716
2717**Diagnostic text:**
2718
2719+-----------------------------------------------------------------------------------------------------------------+
2720|:warning:`warning:` |nbsp| :diagtext:`use of C-style parameters in Objective-C method declarations is deprecated`|
2721+-----------------------------------------------------------------------------------------------------------------+
2722
2723+----------------------------------------------------------------------------+
2724|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`|
2725+----------------------------------------------------------------------------+
2726
2727+---------------------------------------------------------------------------------------------------------------------+
2728|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be deprecated because the receiver type is unknown`|
2729+---------------------------------------------------------------------------------------------------------------------+
2730
2731+-----------------------------------------------------------------------------------------------------+
2732|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated:` |nbsp| :placeholder:`B`|
2733+-----------------------------------------------------------------------------------------------------+
2734
2735+-------------------------------------------------------------------------------------------------------------------------------------+
2736|:warning:`warning:` |nbsp| :diagtext:`property access is using` |nbsp| :placeholder:`A` |nbsp| :diagtext:`method which is deprecated`|
2737+-------------------------------------------------------------------------------------------------------------------------------------+
2738
2739
Richard Smithcf9f4222017-01-20 19:27:09 +00002740-Wdeprecated-dynamic-exception-spec
2741-----------------------------------
2742**Diagnostic text:**
2743
2744+--------------------------------------------------------------------------------------+
2745|:warning:`warning:` |nbsp| :diagtext:`dynamic exception specifications are deprecated`|
2746+--------------------------------------------------------------------------------------+
2747
2748
Richard Smithb6a3b4b2016-09-12 05:58:29 +00002749-Wdeprecated-implementations
2750----------------------------
2751**Diagnostic text:**
2752
2753+----------------------------------------------------------------------+----------------------+
2754|:warning:`warning:` |nbsp| :diagtext:`Implementing deprecated` |nbsp| |+--------------------+|
2755| ||:diagtext:`method` ||
2756| |+--------------------+|
2757| ||:diagtext:`class` ||
2758| |+--------------------+|
2759| ||:diagtext:`category`||
2760| |+--------------------+|
2761+----------------------------------------------------------------------+----------------------+
2762
2763
2764-Wdeprecated-increment-bool
2765---------------------------
2766This diagnostic is enabled by default.
2767
2768**Diagnostic text:**
2769
2770+---------------------------------------------------------------------------------------------------------------------+
2771|:warning:`warning:` |nbsp| :diagtext:`incrementing expression of type bool is deprecated and incompatible with C++1z`|
2772+---------------------------------------------------------------------------------------------------------------------+
2773
2774
2775-Wdeprecated-objc-isa-usage
2776---------------------------
2777This diagnostic is enabled by default.
2778
2779**Diagnostic text:**
2780
2781+-------------------------------------------------------------------------------------------------------------------+
2782|:warning:`warning:` |nbsp| :diagtext:`assignment to Objective-C's isa is deprecated in favor of object\_setClass()`|
2783+-------------------------------------------------------------------------------------------------------------------+
2784
2785+----------------------------------------------------------------------------------------------------------------------+
2786|:warning:`warning:` |nbsp| :diagtext:`direct access to Objective-C's isa is deprecated in favor of object\_getClass()`|
2787+----------------------------------------------------------------------------------------------------------------------+
2788
2789
2790-Wdeprecated-objc-pointer-introspection
2791---------------------------------------
2792This diagnostic is enabled by default.
2793
2794Also controls `-Wdeprecated-objc-pointer-introspection-performSelector`_.
2795
2796**Diagnostic text:**
2797
2798+--------------------------------------------------------------------------------------------------------------------------+
2799|:warning:`warning:` |nbsp| :diagtext:`bitmasking for introspection of Objective-C object pointers is strongly discouraged`|
2800+--------------------------------------------------------------------------------------------------------------------------+
2801
2802
2803-Wdeprecated-objc-pointer-introspection-performSelector
2804-------------------------------------------------------
2805This diagnostic is enabled by default.
2806
2807**Diagnostic text:**
2808
2809+--------------------------------------------------------------------------------------------------------------------------+
2810|:warning:`warning:` |nbsp| :diagtext:`bitmasking for introspection of Objective-C object pointers is strongly discouraged`|
2811+--------------------------------------------------------------------------------------------------------------------------+
2812
2813
2814-Wdeprecated-register
2815---------------------
2816This diagnostic is enabled by default.
2817
2818**Diagnostic text:**
2819
2820+-------------------------------------------------------------------------------------------------------------------+
2821|:warning:`warning:` |nbsp| :diagtext:`'register' storage class specifier is deprecated and incompatible with C++1z`|
2822+-------------------------------------------------------------------------------------------------------------------+
2823
2824
2825-Wdeprecated-writable-strings
2826-----------------------------
2827Synonym for `-Wc++11-compat-deprecated-writable-strings`_.
2828
2829
2830-Wdirect-ivar-access
2831--------------------
2832**Diagnostic text:**
2833
2834+------------------------------------------------------------------------------------------------------------------------------+
2835|:warning:`warning:` |nbsp| :diagtext:`instance variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is being directly accessed`|
2836+------------------------------------------------------------------------------------------------------------------------------+
2837
2838
2839-Wdisabled-macro-expansion
2840--------------------------
2841**Diagnostic text:**
2842
2843+----------------------------------------------------------------------------+
2844|:warning:`warning:` |nbsp| :diagtext:`disabled expansion of recursive macro`|
2845+----------------------------------------------------------------------------+
2846
2847
2848-Wdisabled-optimization
2849-----------------------
2850This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
2851
2852-Wdiscard-qual
2853--------------
2854This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
2855
2856-Wdistributed-object-modifiers
2857------------------------------
2858This diagnostic is enabled by default.
2859
2860**Diagnostic text:**
2861
2862+----------------------------------------------------------------------------------------------------------------------------------------------+
2863|:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on parameter type in implementation of` |nbsp| :placeholder:`A`|
2864+----------------------------------------------------------------------------------------------------------------------------------------------+
2865
2866+-------------------------------------------------------------------------------------------------------------------------------------------+
2867|:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on return type in implementation of` |nbsp| :placeholder:`A`|
2868+-------------------------------------------------------------------------------------------------------------------------------------------+
2869
2870
2871-Wdiv-by-zero
2872-------------
Richard Smithce9d5862016-09-14 01:51:10 +00002873Synonym for `-Wdivision-by-zero`_.
2874
Richard Smithb6a3b4b2016-09-12 05:58:29 +00002875
2876-Wdivision-by-zero
2877------------------
2878This diagnostic is enabled by default.
2879
2880**Diagnostic text:**
2881
2882+---------------------------+-----------------------+----------------------------------------+
2883|:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`by zero is undefined`|
2884| ||:diagtext:`remainder`|| |
2885| |+---------------------+| |
2886| ||:diagtext:`division` || |
2887| |+---------------------+| |
2888+---------------------------+-----------------------+----------------------------------------+
2889
2890
2891-Wdll-attribute-on-redeclaration
2892--------------------------------
2893This diagnostic is enabled by default.
2894
2895**Diagnostic text:**
2896
2897+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2898|:warning:`warning:` |nbsp| :diagtext:`redeclaration of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not add` |nbsp| :placeholder:`B` |nbsp| :diagtext:`attribute`|
2899+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2900
2901
2902-Wdllexport-explicit-instantiation-decl
2903---------------------------------------
2904This diagnostic is enabled by default.
2905
2906**Diagnostic text:**
2907
2908+---------------------------------------------------------------------------------------------------+
2909|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation declaration should not be 'dllexport'`|
2910+---------------------------------------------------------------------------------------------------+
2911
2912
2913-Wdllimport-static-field-def
2914----------------------------
2915This diagnostic is enabled by default.
2916
2917**Diagnostic text:**
2918
2919+---------------------------------------------------------------------------+
2920|:warning:`warning:` |nbsp| :diagtext:`definition of dllimport static field`|
2921+---------------------------------------------------------------------------+
2922
2923
2924-Wdocumentation
2925---------------
Richard Smith8cba2912016-09-14 01:55:42 +00002926Also controls `-Wdocumentation-deprecated-sync`_, `-Wdocumentation-html`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00002927
2928**Diagnostic text:**
2929
2930+----------------------------------------+----------------+-----------------------+------------------------------------------------------------------------+-----------------------+-------------------------------+
2931|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+---------------------+|:diagtext:`' command should not be used in a comment attached to a non-`|+---------------------+| |nbsp| :diagtext:`declaration`|
2932| ||:diagtext:`\\`|||:diagtext:`class` || ||:diagtext:`class` || |
2933| |+--------------+|+---------------------+| |+---------------------+| |
2934| ||:diagtext:`@` |||:diagtext:`interface`|| ||:diagtext:`interface`|| |
2935| |+--------------+|+---------------------+| |+---------------------+| |
2936| | ||:diagtext:`protocol` || ||:diagtext:`protocol` || |
2937| | |+---------------------+| |+---------------------+| |
2938| | ||:diagtext:`struct` || ||:diagtext:`struct` || |
2939| | |+---------------------+| |+---------------------+| |
2940| | ||:diagtext:`union` || ||:diagtext:`union` || |
2941| | |+---------------------+| |+---------------------+| |
2942+----------------------------------------+----------------+-----------------------+------------------------------------------------------------------------+-----------------------+-------------------------------+
2943
2944+-----------------------------------------------------------+----------------+-----------------------------+
2945|:warning:`warning:` |nbsp| :diagtext:`duplicated command '`|+--------------+|:placeholder:`B`:diagtext:`'`|
2946| ||:diagtext:`\\`|| |
2947| |+--------------+| |
2948| ||:diagtext:`@` || |
2949| |+--------------+| |
2950+-----------------------------------------------------------+----------------+-----------------------------+
2951
2952+------------------------------------------------------------------+----------------+-------------------------------------+
2953|:warning:`warning:` |nbsp| :diagtext:`empty paragraph passed to '`|+--------------+|:placeholder:`B`:diagtext:`' command`|
2954| ||:diagtext:`\\`|| |
2955| |+--------------+| |
2956| ||:diagtext:`@` || |
2957| |+--------------+| |
2958+------------------------------------------------------------------+----------------+-------------------------------------+
2959
2960+----------------------------------------+----------------+--------------------------+---------------------------------------------------------------------------------------------+
2961|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+------------------------+|:diagtext:`' command should not be used in a comment attached to a non-container declaration`|
2962| ||:diagtext:`\\`|||:diagtext:`classdesign` || |
2963| |+--------------+|+------------------------+| |
2964| ||:diagtext:`@` |||:diagtext:`coclass` || |
2965| |+--------------+|+------------------------+| |
2966| | ||:diagtext:`dependency` || |
2967| | |+------------------------+| |
2968| | ||:diagtext:`helper` || |
2969| | |+------------------------+| |
2970| | ||:diagtext:`helperclass` || |
2971| | |+------------------------+| |
2972| | ||:diagtext:`helps` || |
2973| | |+------------------------+| |
2974| | ||:diagtext:`instancesize`|| |
2975| | |+------------------------+| |
2976| | ||:diagtext:`ownership` || |
2977| | |+------------------------+| |
2978| | ||:diagtext:`performance` || |
2979| | |+------------------------+| |
2980| | ||:diagtext:`security` || |
2981| | |+------------------------+| |
2982| | ||:diagtext:`superclass` || |
2983| | |+------------------------+| |
2984+----------------------------------------+----------------+--------------------------+---------------------------------------------------------------------------------------------+
2985
2986+----------------------------------------+----------------+---------------------------+---------------------------------------------------------------------+-----------------------------------+-------------------------------+
2987|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+-------------------------+|:diagtext:`' command should be used in a comment attached to` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`declaration`|
2988| ||:diagtext:`\\`|||:diagtext:`function` || ||:diagtext:`a function` || |
2989| |+--------------+|+-------------------------+| |+---------------------------------+| |
2990| ||:diagtext:`@` |||:diagtext:`functiongroup`|| ||:diagtext:`a function` || |
2991| |+--------------+|+-------------------------+| |+---------------------------------+| |
2992| | ||:diagtext:`method` || ||:diagtext:`an Objective-C method`|| |
2993| | |+-------------------------+| |+---------------------------------+| |
2994| | ||:diagtext:`methodgroup` || ||:diagtext:`an Objective-C method`|| |
2995| | |+-------------------------+| |+---------------------------------+| |
2996| | ||:diagtext:`callback` || ||:diagtext:`a pointer to function`|| |
2997| | |+-------------------------+| |+---------------------------------+| |
2998+----------------------------------------+----------------+---------------------------+---------------------------------------------------------------------+-----------------------------------+-------------------------------+
2999
3000+-------------------------------------------------------------------------------------------------------+
3001|:warning:`warning:` |nbsp| :diagtext:`HTML start tag prematurely ended, expected attribute name or '>'`|
3002+-------------------------------------------------------------------------------------------------------+
3003
3004+-------------------------------------------------------------------------------+
3005|:warning:`warning:` |nbsp| :diagtext:`expected quoted string after equals sign`|
3006+-------------------------------------------------------------------------------+
3007
3008+-----------------------------------------------------------------------------------------------------+
3009|:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' is already documented`|
3010+-----------------------------------------------------------------------------------------------------+
3011
3012+------------------------------------------------------------------------------------------------------------------------------------------+
3013|:warning:`warning:` |nbsp| :diagtext:`unrecognized parameter passing direction, valid directions are '\[in\]', '\[out\]' and '\[in,out\]'`|
3014+------------------------------------------------------------------------------------------------------------------------------------------+
3015
3016+----------------------------------------+----------------+-------------------------------------------------------------------------------------------+
3017|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:diagtext:`param' command used in a comment that is not attached to a function declaration`|
3018| ||:diagtext:`\\`|| |
3019| |+--------------+| |
3020| ||:diagtext:`@` || |
3021| |+--------------+| |
3022+----------------------------------------+----------------+-------------------------------------------------------------------------------------------+
3023
3024+---------------------------------------------------------------------------------------------------------------------+
3025|:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' not found in the function declaration`|
3026+---------------------------------------------------------------------------------------------------------------------+
3027
3028+----------------------------------------+----------------+-------------------------------------------------------------------------------------+-------------------------------------+
3029|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command used in a comment that is attached to a` |nbsp| |+-----------------------------------+|
3030| ||:diagtext:`\\`|| ||:diagtext:`function returning void`||
3031| |+--------------+| |+-----------------------------------+|
3032| ||:diagtext:`@` || ||:diagtext:`constructor` ||
3033| |+--------------+| |+-----------------------------------+|
3034| | | ||:diagtext:`destructor` ||
3035| | | |+-----------------------------------+|
3036| | | ||:diagtext:`method returning void` ||
3037| | | |+-----------------------------------+|
3038+----------------------------------------+----------------+-------------------------------------------------------------------------------------+-------------------------------------+
3039
3040+----------------------------------------+----------------+----------------------------------------------------------------------------------------------------------------+
3041|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command used in a comment that is not attached to a function or method declaration`|
3042| ||:diagtext:`\\`|| |
3043| |+--------------+| |
3044| ||:diagtext:`@` || |
3045| |+--------------+| |
3046+----------------------------------------+----------------+----------------------------------------------------------------------------------------------------------------+
3047
3048+--------------------------------------------------------------------------------------------------------------+
3049|:warning:`warning:` |nbsp| :diagtext:`template parameter '`:placeholder:`A`:diagtext:`' is already documented`|
3050+--------------------------------------------------------------------------------------------------------------+
3051
3052+----------------------------------------+----------------+--------------------------------------------------------------------------------------------+
3053|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:diagtext:`tparam' command used in a comment that is not attached to a template declaration`|
3054| ||:diagtext:`\\`|| |
3055| |+--------------+| |
3056| ||:diagtext:`@` || |
3057| |+--------------+| |
3058+----------------------------------------+----------------+--------------------------------------------------------------------------------------------+
3059
3060+------------------------------------------------------------------------------------------------------------------------------+
3061|:warning:`warning:` |nbsp| :diagtext:`template parameter '`:placeholder:`A`:diagtext:`' not found in the template declaration`|
3062+------------------------------------------------------------------------------------------------------------------------------+
3063
3064+---------------------------------------------------------------------+
3065|:warning:`warning:` |nbsp| :diagtext:`not a Doxygen trailing comment`|
3066+---------------------------------------------------------------------+
3067
3068+----------------------------------------+----------------+------------------------------------------------------------------------------+
3069|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command does not terminate a verbatim text block`|
3070| ||:diagtext:`\\`|| |
3071| |+--------------+| |
3072| ||:diagtext:`@` || |
3073| |+--------------+| |
3074+----------------------------------------+----------------+------------------------------------------------------------------------------+
3075
3076
3077-Wdocumentation-deprecated-sync
3078-------------------------------
3079**Diagnostic text:**
3080
3081+----------------------------------------------------------------------------------------------------------------------------------+
3082|:warning:`warning:` |nbsp| :diagtext:`declaration is marked with '\\deprecated' command but does not have a deprecation attribute`|
3083+----------------------------------------------------------------------------------------------------------------------------------+
3084
3085
3086-Wdocumentation-html
3087--------------------
3088**Diagnostic text:**
3089
3090+-----------------------------------------------------------------------------------------------+
3091|:warning:`warning:` |nbsp| :diagtext:`HTML end tag '`:placeholder:`A`:diagtext:`' is forbidden`|
3092+-----------------------------------------------------------------------------------------------+
3093
3094+--------------------------------------------------------------------------------+
3095|:warning:`warning:` |nbsp| :diagtext:`HTML end tag does not match any start tag`|
3096+--------------------------------------------------------------------------------+
3097
3098+--------------------------------------------------------------------------------------------------+
3099|:warning:`warning:` |nbsp| :diagtext:`HTML tag '`:placeholder:`A`:diagtext:`' requires an end tag`|
3100+--------------------------------------------------------------------------------------------------+
3101
3102+-----------------------------------------------------------------------------------------------------------------------------+
3103|:warning:`warning:` |nbsp| :diagtext:`HTML start tag '`:placeholder:`A`:diagtext:`' closed by '`:placeholder:`B`:diagtext:`'`|
3104+-----------------------------------------------------------------------------------------------------------------------------+
3105
3106
3107-Wdocumentation-pedantic
3108------------------------
3109Also controls `-Wdocumentation-unknown-command`_.
3110
3111**Diagnostic text:**
3112
3113+-----------------------------------------------------------------------------------------------+
3114|:warning:`warning:` |nbsp| :diagtext:`whitespace is not allowed in parameter passing direction`|
3115+-----------------------------------------------------------------------------------------------+
3116
3117
3118-Wdocumentation-unknown-command
3119-------------------------------
3120**Diagnostic text:**
3121
3122+--------------------------------------------------------------------------------------------------------------------------------------------+
3123|:warning:`warning:` |nbsp| :diagtext:`unknown command tag name '`:placeholder:`A`:diagtext:`'; did you mean '`:placeholder:`B`:diagtext:`'?`|
3124+--------------------------------------------------------------------------------------------------------------------------------------------+
3125
3126+---------------------------------------------------------------+
3127|:warning:`warning:` |nbsp| :diagtext:`unknown command tag name`|
3128+---------------------------------------------------------------+
3129
3130
3131-Wdollar-in-identifier-extension
3132--------------------------------
3133**Diagnostic text:**
3134
3135+--------------------------------------------------------+
3136|:warning:`warning:` |nbsp| :diagtext:`'$' in identifier`|
3137+--------------------------------------------------------+
3138
3139
3140-Wdouble-promotion
3141------------------
3142**Diagnostic text:**
3143
3144+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3145|:warning:`warning:` |nbsp| :diagtext:`implicit conversion increases floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
3146+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3147
3148
3149-Wduplicate-decl-specifier
3150--------------------------
3151This diagnostic is enabled by default.
3152
3153**Diagnostic text:**
3154
3155+-----------------------------------------------------------------------------------------------------+
3156|:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`|
3157+-----------------------------------------------------------------------------------------------------+
3158
3159+-----------------------------------------------------------------------------------------------------+
3160|:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`|
3161+-----------------------------------------------------------------------------------------------------+
3162
3163
3164-Wduplicate-enum
3165----------------
3166**Diagnostic text:**
3167
3168+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3169|:warning:`warning:` |nbsp| :diagtext:`element` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has been implicitly assigned` |nbsp| :placeholder:`B` |nbsp| :diagtext:`which another element has been assigned`|
3170+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3171
3172
3173-Wduplicate-method-arg
3174----------------------
3175**Diagnostic text:**
3176
3177+------------------------------------------------------------------------------------------------+
3178|:warning:`warning:` |nbsp| :diagtext:`redeclaration of method parameter` |nbsp| :placeholder:`A`|
3179+------------------------------------------------------------------------------------------------+
3180
3181
3182-Wduplicate-method-match
3183------------------------
3184**Diagnostic text:**
3185
3186+-----------------------------------------------------------------------------------------------------------------------------------+
3187|:warning:`warning:` |nbsp| :diagtext:`multiple declarations of method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found and ignored`|
3188+-----------------------------------------------------------------------------------------------------------------------------------+
3189
3190
Richard Smithcf9f4222017-01-20 19:27:09 +00003191-Wduplicate-protocol
3192--------------------
3193This diagnostic is enabled by default.
3194
3195**Diagnostic text:**
3196
3197+-----------------------------------------------------------------------------------------------------------------------------+
3198|:warning:`warning:` |nbsp| :diagtext:`duplicate protocol definition of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is ignored`|
3199+-----------------------------------------------------------------------------------------------------------------------------+
3200
3201
Richard Smithb6a3b4b2016-09-12 05:58:29 +00003202-Wdynamic-class-memaccess
3203-------------------------
3204This diagnostic is enabled by default.
3205
3206**Diagnostic text:**
3207
3208+---------------------------+-------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+
3209|:warning:`warning:` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a pointer to` |nbsp| |+--------------------------------------+|:diagtext:`dynamic class` |nbsp| :placeholder:`D`:diagtext:`; vtable pointer will be` |nbsp| |+-----------------------+|
3210| ||:diagtext:`destination for` || || || ||:diagtext:`overwritten`||
3211| |+-----------------------------+| |+--------------------------------------+| |+-----------------------+|
3212| ||:diagtext:`source of` || ||:diagtext:`class containing a` |nbsp| || ||:diagtext:`copied` ||
3213| |+-----------------------------+| |+--------------------------------------+| |+-----------------------+|
3214| ||:diagtext:`first operand of` || | | ||:diagtext:`moved` ||
3215| |+-----------------------------+| | | |+-----------------------+|
3216| ||:diagtext:`second operand of`|| | | ||:diagtext:`compared` ||
3217| |+-----------------------------+| | | |+-----------------------+|
3218+---------------------------+-------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+
3219
3220
Richard Smithcf9f4222017-01-20 19:27:09 +00003221-Wdynamic-exception-spec
3222------------------------
3223Some of the diagnostics controlled by this flag are enabled by default.
3224
3225Also controls `-Wdeprecated-dynamic-exception-spec`_.
3226
3227**Diagnostic text:**
3228
3229+--------------------------------------------------------------------------------------------+
3230|:error:`error:` |nbsp| :diagtext:`ISO C++1z does not allow dynamic exception specifications`|
3231+--------------------------------------------------------------------------------------------+
3232
3233
Richard Smithb6a3b4b2016-09-12 05:58:29 +00003234-Weffc++
3235--------
Richard Smithce9d5862016-09-14 01:51:10 +00003236Synonym for `-Wnon-virtual-dtor`_.
3237
Richard Smithb6a3b4b2016-09-12 05:58:29 +00003238
3239-Wembedded-directive
3240--------------------
3241**Diagnostic text:**
3242
3243+----------------------------------------------------------------------------------------------------------+
3244|:warning:`warning:` |nbsp| :diagtext:`embedding a directive within macro arguments has undefined behavior`|
3245+----------------------------------------------------------------------------------------------------------+
3246
3247
3248-Wempty-body
3249------------
3250This diagnostic is enabled by default.
3251
3252**Diagnostic text:**
3253
3254+--------------------------------------------------------------+
3255|:warning:`warning:` |nbsp| :diagtext:`for loop has empty body`|
3256+--------------------------------------------------------------+
3257
3258+------------------------------------------------------------------+
3259|:warning:`warning:` |nbsp| :diagtext:`if statement has empty body`|
3260+------------------------------------------------------------------+
3261
3262+--------------------------------------------------------------------------+
3263|:warning:`warning:` |nbsp| :diagtext:`range-based for loop has empty body`|
3264+--------------------------------------------------------------------------+
3265
3266+----------------------------------------------------------------------+
3267|:warning:`warning:` |nbsp| :diagtext:`switch statement has empty body`|
3268+----------------------------------------------------------------------+
3269
3270+----------------------------------------------------------------+
3271|:warning:`warning:` |nbsp| :diagtext:`while loop has empty body`|
3272+----------------------------------------------------------------+
3273
3274
3275-Wempty-decomposition
3276---------------------
3277This diagnostic is enabled by default.
3278
3279**Diagnostic text:**
3280
3281+-------------------------------------------------------------------------------------------------+
3282|:warning:`warning:` |nbsp| :diagtext:`ISO C++1z does not allow a decomposition group to be empty`|
3283+-------------------------------------------------------------------------------------------------+
3284
3285
3286-Wempty-translation-unit
3287------------------------
3288**Diagnostic text:**
3289
3290+------------------------------------------------------------------------------------------------------------+
3291|:warning:`warning:` |nbsp| :diagtext:`ISO C requires a translation unit to contain at least one declaration`|
3292+------------------------------------------------------------------------------------------------------------+
3293
3294
3295-Wencode-type
3296-------------
3297This diagnostic is enabled by default.
3298
3299**Diagnostic text:**
3300
3301+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3302|:warning:`warning:` |nbsp| :diagtext:`encoding of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`type is incomplete because` |nbsp| :placeholder:`B` |nbsp| :diagtext:`component has unknown encoding`|
3303+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3304
3305
3306-Wendif-labels
3307--------------
3308Synonym for `-Wextra-tokens`_.
3309
3310
3311-Wenum-compare
3312--------------
3313This diagnostic is enabled by default.
3314
3315**Diagnostic text:**
3316
3317+------------------------------------------------------------------------------------------------+
3318|:warning:`warning:` |nbsp| :diagtext:`comparison of two values with different enumeration types`|
3319+------------------------------------------------------------------------------------------------+
3320
3321
3322-Wenum-conversion
3323-----------------
3324This diagnostic is enabled by default.
3325
3326**Diagnostic text:**
3327
3328+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3329|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from enumeration type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to different enumeration type` |nbsp| :placeholder:`B`|
3330+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3331
3332
3333-Wenum-too-large
3334----------------
3335This diagnostic is enabled by default.
3336
3337**Diagnostic text:**
3338
3339+-----------------------------------------------------------------------------------------+
3340|:warning:`warning:` |nbsp| :diagtext:`enumeration values exceed range of largest integer`|
3341+-----------------------------------------------------------------------------------------+
3342
3343+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
3344|:warning:`warning:` |nbsp| :diagtext:`incremented enumerator value` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not representable in the largest integer type`|
3345+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
3346
3347
3348-Wexceptions
3349------------
3350This diagnostic is enabled by default.
3351
3352**Diagnostic text:**
3353
3354+--------------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------+
3355|:warning:`warning:` |nbsp| :diagtext:`cannot refer to a non-static member from the handler of a` |nbsp| |+-----------------------+| |nbsp| :diagtext:`function try block`|
3356| ||:diagtext:`constructor`|| |
3357| |+-----------------------+| |
3358| ||:diagtext:`destructor` || |
3359| |+-----------------------+| |
3360+--------------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------+
3361
3362+-------------------------------------------------------------------------------------------------------------------------------------+
3363|:warning:`warning:` |nbsp| :diagtext:`exception of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will be caught by earlier handler`|
3364+-------------------------------------------------------------------------------------------------------------------------------------+
3365
3366
3367-Wexit-time-destructors
3368-----------------------
3369**Diagnostic text:**
3370
3371+-----------------------------------------------------------------------------------+
3372|:warning:`warning:` |nbsp| :diagtext:`declaration requires an exit-time destructor`|
3373+-----------------------------------------------------------------------------------+
3374
3375
3376-Wexpansion-to-defined
3377----------------------
3378Some of the diagnostics controlled by this flag are enabled by default.
3379
3380**Diagnostic text:**
3381
3382+-------------------------------------------------------------------------------------------------+
3383|:warning:`warning:` |nbsp| :diagtext:`macro expansion producing 'defined' has undefined behavior`|
3384+-------------------------------------------------------------------------------------------------+
3385
3386+-------------------------------------------------------------------------------------------------+
3387|:warning:`warning:` |nbsp| :diagtext:`macro expansion producing 'defined' has undefined behavior`|
3388+-------------------------------------------------------------------------------------------------+
3389
3390
3391-Wexplicit-initialize-call
3392--------------------------
3393This diagnostic is enabled by default.
3394
3395**Diagnostic text:**
3396
3397+------------------------------------------------------------------------------------------------------------+
3398|:warning:`warning:` |nbsp| :diagtext:`explicit call to +initialize results in duplicate call to +initialize`|
3399+------------------------------------------------------------------------------------------------------------+
3400
3401+----------------------------------------------------------------------------------------------------------------------------+
3402|:warning:`warning:` |nbsp| :diagtext:`explicit call to \[super initialize\] should only be in implementation of +initialize`|
3403+----------------------------------------------------------------------------------------------------------------------------+
3404
3405
3406-Wexplicit-ownership-type
3407-------------------------
3408**Diagnostic text:**
3409
3410+-------------------------------------------------------------------------------------------------------------------------------------+
3411|:warning:`warning:` |nbsp| :diagtext:`method parameter of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with no explicit ownership`|
3412+-------------------------------------------------------------------------------------------------------------------------------------+
3413
3414
3415-Wextended-offsetof
3416-------------------
3417**Diagnostic text:**
3418
3419+--------------------------------------------------------------------------------------+
3420|:warning:`warning:` |nbsp| :diagtext:`using extended field designator is an extension`|
3421+--------------------------------------------------------------------------------------+
3422
3423
3424-Wextern-c-compat
3425-----------------
3426This diagnostic is enabled by default.
3427
3428**Diagnostic text:**
3429
3430+---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+
3431|:warning:`warning:` |nbsp| |+-------------------------+|+------------------+| |nbsp| :diagtext:`has size 0 in C,` |nbsp| |+-------------------------+| |nbsp| :diagtext:`in C++`|
3432| || |||:diagtext:`struct`|| ||:diagtext:`size 1` || |
3433| |+-------------------------+|+------------------+| |+-------------------------+| |
3434| ||:diagtext:`empty` |nbsp| |||:diagtext:`union` || ||:diagtext:`non-zero size`|| |
3435| |+-------------------------+|+------------------+| |+-------------------------+| |
3436+---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+
3437
3438
3439-Wextern-initializer
3440--------------------
3441This diagnostic is enabled by default.
3442
3443**Diagnostic text:**
3444
3445+---------------------------------------------------------------------------+
3446|:warning:`warning:` |nbsp| :diagtext:`'extern' variable has an initializer`|
3447+---------------------------------------------------------------------------+
3448
3449
3450-Wextra
3451-------
3452Some of the diagnostics controlled by this flag are enabled by default.
3453
Richard Smithcf9f4222017-01-20 19:27:09 +00003454Also controls `-Wignored-qualifiers`_, `-Winitializer-overrides`_, `-Wmissing-field-initializers`_, `-Wmissing-method-return-type`_, `-Wsemicolon-before-method-body`_, `-Wsign-compare`_, `-Wunused-parameter`_.
3455
3456**Diagnostic text:**
3457
3458+-----------------------------------------------------------------------------------------------------------------------------+
3459|:warning:`warning:` |nbsp| :diagtext:`call to function without interrupt attribute could clobber interruptee's VFP registers`|
3460+-----------------------------------------------------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00003461
3462
3463-Wextra-qualification
3464---------------------
3465This diagnostic is enabled by default.
3466
3467**Diagnostic text:**
3468
3469+--------------------------------------------------------------------------------------------+
3470|:warning:`warning:` |nbsp| :diagtext:`extra qualification on member` |nbsp| :placeholder:`A`|
3471+--------------------------------------------------------------------------------------------+
3472
3473
3474-Wextra-semi
3475------------
3476Also controls `-Wc++11-extra-semi`_.
3477
3478**Diagnostic text:**
3479
3480+--------------------------------------------------------+------------------------------------------------+
3481|:warning:`warning:` |nbsp| :diagtext:`extra ';'` |nbsp| |+----------------------------------------------+|
3482| ||:diagtext:`outside of a function` ||
3483| |+----------------------------------------------+|
3484| ||+--------------------------------------------+||
3485| |||:diagtext:`inside a` |nbsp| :placeholder:`B`|||
3486| ||+--------------------------------------------+||
3487| |+----------------------------------------------+|
3488| ||:diagtext:`inside instance variable list` ||
3489| |+----------------------------------------------+|
3490| ||:diagtext:`after member function definition` ||
3491| |+----------------------------------------------+|
3492+--------------------------------------------------------+------------------------------------------------+
3493
3494+---------------------------------------------------------------------------------+
3495|:warning:`warning:` |nbsp| :diagtext:`extra ';' after member function definition`|
3496+---------------------------------------------------------------------------------+
3497
3498
3499-Wextra-tokens
3500--------------
3501This diagnostic is enabled by default.
3502
3503**Diagnostic text:**
3504
3505+------------------------------------------------------------------------------------------------------------+
3506|:warning:`warning:` |nbsp| :diagtext:`extra tokens at end of #`:placeholder:`A` |nbsp| :diagtext:`directive`|
3507+------------------------------------------------------------------------------------------------------------+
3508
3509+-------------------------------------------------------------------------------------------------------------------------------+
3510|:warning:`warning:` |nbsp| :diagtext:`extra tokens at the end of '#pragma omp` |nbsp| :placeholder:`A`:diagtext:`' are ignored`|
3511+-------------------------------------------------------------------------------------------------------------------------------+
3512
3513
3514-Wfallback
3515----------
3516This diagnostic is enabled by default.
3517
3518**Diagnostic text:**
3519
3520+------------------------------------------------------------------------------+
3521|:warning:`warning:` |nbsp| :diagtext:`falling back to` |nbsp| :placeholder:`A`|
3522+------------------------------------------------------------------------------+
3523
3524
3525-Wflag-enum
3526-----------
3527This diagnostic is enabled by default.
3528
3529**Diagnostic text:**
3530
3531+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3532|:warning:`warning:` |nbsp| :diagtext:`enumeration value` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is out of range of flags in enumeration type` |nbsp| :placeholder:`B`|
3533+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3534
3535
3536-Wflexible-array-extensions
3537---------------------------
3538**Diagnostic text:**
3539
3540+-------------------------------------------------------------------------------------------------------------------------------+
3541|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may not be used as an array element due to flexible array member`|
3542+-------------------------------------------------------------------------------------------------------------------------------+
3543
3544+-------------------------------------------------------------------------------------------------------------------------+
3545|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may not be nested in a struct due to flexible array member`|
3546+-------------------------------------------------------------------------------------------------------------------------+
3547
3548
3549-Wfloat-conversion
3550------------------
3551Also controls `-Wfloat-overflow-conversion`_, `-Wfloat-zero-conversion`_.
3552
3553**Diagnostic text:**
3554
3555+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3556|:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns floating-point number into integer:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
3557+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3558
3559
3560-Wfloat-equal
3561-------------
3562**Diagnostic text:**
3563
3564+---------------------------------------------------------------------------------------+
3565|:warning:`warning:` |nbsp| :diagtext:`comparing floating point with == or != is unsafe`|
3566+---------------------------------------------------------------------------------------+
3567
3568
3569-Wfloat-overflow-conversion
3570---------------------------
3571**Diagnostic text:**
3572
3573+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3574|:warning:`warning:` |nbsp| :diagtext:`implicit conversion of out of range value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`|
3575+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3576
3577
3578-Wfloat-zero-conversion
3579-----------------------
3580**Diagnostic text:**
3581
3582+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3583|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`changes non-zero value from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`|
3584+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3585
3586
3587-Wfor-loop-analysis
3588-------------------
3589**Diagnostic text:**
3590
3591+-----------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------+
3592|:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is` |nbsp| |+-----------------------+| |nbsp| :diagtext:`both in the loop header and in the loop body`|
3593| ||:diagtext:`decremented`|| |
3594| |+-----------------------+| |
3595| ||:diagtext:`incremented`|| |
3596| |+-----------------------+| |
3597+-----------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------+
3598
3599+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
3600|:warning:`warning:` |nbsp| :diagtext:`variable`|+----------------------------------------------------------------------------------------------------------------------------------------------------------+| |nbsp| :diagtext:`used in loop condition not modified in loop body`|
3601| ||:diagtext:`s` || |
3602| |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| |
3603| ||+------------------------+ || |
3604| ||| |nbsp| :placeholder:`B`| || |
3605| ||+------------------------+ || |
3606| |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| |
3607| ||+------------------------------------------------------------------------------------+ || |
3608| |||:diagtext:`s` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C`| || |
3609| ||+------------------------------------------------------------------------------------+ || |
3610| |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| |
3611| ||+-------------------------------------------------------------------------------------------------------------------+ || |
3612| |||:diagtext:`s` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and` |nbsp| :placeholder:`D`| || |
3613| ||+-------------------------------------------------------------------------------------------------------------------+ || |
3614| |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| |
3615| ||+--------------------------------------------------------------------------------------------------------------------------------------------------------+|| |
3616| |||:diagtext:`s` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp| :placeholder:`D`:diagtext:`, and` |nbsp| :placeholder:`E`||| |
3617| ||+--------------------------------------------------------------------------------------------------------------------------------------------------------+|| |
3618| |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| |
3619+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
3620
3621
3622-Wformat
3623--------
3624This diagnostic is enabled by default.
3625
Richard Smith8cba2912016-09-14 01:55:42 +00003626Also controls `-Wformat-extra-args`_, `-Wformat-invalid-specifier`_, `-Wformat-security`_, `-Wformat-y2k`_, `-Wformat-zero-length`_, `-Wnonnull`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00003627
3628**Diagnostic text:**
3629
Richard Smithcf9f4222017-01-20 19:27:09 +00003630+-------------------------------------------------------------------------------------+
3631|:warning:`warning:` |nbsp| :diagtext:`using '%%P' format specifier without precision`|
3632+-------------------------------------------------------------------------------------+
3633
Richard Smithb6a3b4b2016-09-12 05:58:29 +00003634+---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3635|:warning:`warning:` |nbsp| |+--------------------------------------------+| |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' should not be used as format arguments; add an explicit cast to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`instead`|
3636| ||:diagtext:`values of type` || |
3637| |+--------------------------------------------+| |
3638| ||:diagtext:`enum values with underlying type`|| |
3639| |+--------------------------------------------+| |
3640+---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3641
3642+------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+
3643|:warning:`warning:` |nbsp| :diagtext:`format specifies type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`but the argument has` |nbsp| |+---------------------------+| |nbsp| :placeholder:`B`|
3644| ||:diagtext:`type` || |
3645| |+---------------------------+| |
3646| ||:diagtext:`underlying type`|| |
3647| |+---------------------------+| |
3648+------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+
3649
Richard Smithcf9f4222017-01-20 19:27:09 +00003650+----------------------------------------------------------------------------------------------------------------------------------------+
3651|:warning:`warning:` |nbsp| :diagtext:`using '`:placeholder:`A`:diagtext:`' format specifier annotation outside of os\_log()/os\_trace()`|
3652+----------------------------------------------------------------------------------------------------------------------------------------+
3653
Richard Smithb6a3b4b2016-09-12 05:58:29 +00003654+-----------------------------------------------------------------------------+-----------------------------+
3655|:warning:`warning:` |nbsp| :diagtext:`invalid position specified for` |nbsp| |+---------------------------+|
3656| ||:diagtext:`field width` ||
3657| |+---------------------------+|
3658| ||:diagtext:`field precision`||
3659| |+---------------------------+|
3660+-----------------------------------------------------------------------------+-----------------------------+
3661
3662+----------------------------------------------------------------------------------------------------------+
3663|:warning:`warning:` |nbsp| :diagtext:`cannot mix positional and non-positional arguments in format string`|
3664+----------------------------------------------------------------------------------------------------------+
3665
3666+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3667|:warning:`warning:` |nbsp| :diagtext:`length modifier '`:placeholder:`A`:diagtext:`' results in undefined behavior or no effect with '`:placeholder:`B`:diagtext:`' conversion specifier`|
3668+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3669
3670+--------------------------------------------------------------------------------+
3671|:warning:`warning:` |nbsp| :diagtext:`format string should not be a wide string`|
3672+--------------------------------------------------------------------------------+
3673
3674+-------------------------------------------------------------------------------------------------------+
3675|:warning:`warning:` |nbsp| :diagtext:`position arguments in format strings start counting at 1 (not 0)`|
3676+-------------------------------------------------------------------------------------------------------+
3677
3678+------------------------------------------------------------+
3679|:warning:`warning:` |nbsp| :diagtext:`format string missing`|
3680+------------------------------------------------------------+
3681
3682+----------------------------------------------------------------------------------------------------------------------------------+
3683|:warning:`warning:` |nbsp| :diagtext:`object format flags cannot be used with '`:placeholder:`A`:diagtext:`' conversion specifier`|
3684+----------------------------------------------------------------------------------------------------------------------------------+
3685
3686+----------------------------------------+-----------------+-------------------------------------+-----------------------+--------------------------------------------------------+
3687|:warning:`warning:` |nbsp| :diagtext:`'`|+---------------+|:diagtext:`' specified field` |nbsp| |+---------------------+| |nbsp| :diagtext:`is missing a matching 'int' argument`|
3688| ||:diagtext:`\*` || ||:diagtext:`width` || |
3689| |+---------------+| |+---------------------+| |
3690| ||:diagtext:`.\*`|| ||:diagtext:`precision`|| |
3691| |+---------------+| |+---------------------+| |
3692+----------------------------------------+-----------------+-------------------------------------+-----------------------+--------------------------------------------------------+
3693
3694+----------------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------+
3695|:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| |+---------------------+| |nbsp| :diagtext:`should have type` |nbsp| :placeholder:`B`:diagtext:`, but argument has type` |nbsp| :placeholder:`C`|
3696| ||:diagtext:`width` || |
3697| |+---------------------+| |
3698| ||:diagtext:`precision`|| |
3699| |+---------------------+| |
3700+----------------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------+
3701
3702+-----------------------------------------------------------------+
3703|:warning:`warning:` |nbsp| :diagtext:`missing object format flag`|
3704+-----------------------------------------------------------------+
3705
3706+------------------------------------------------------------------------------------------+
3707|:warning:`warning:` |nbsp| :diagtext:`format string contains '\\0' within the string body`|
3708+------------------------------------------------------------------------------------------+
3709
3710+---------------------------------------------------------------------------+
3711|:warning:`warning:` |nbsp| :diagtext:`format string is not null-terminated`|
3712+---------------------------------------------------------------------------+
3713
3714+-----------------------------------------------------------------------------------------------------------------------------------------+
3715|:warning:`warning:` |nbsp| :diagtext:`flag '`:placeholder:`A`:diagtext:`' is ignored when flag '`:placeholder:`B`:diagtext:`' is present`|
3716+-----------------------------------------------------------------------------------------------------------------------------------------+
3717
3718+------------------------------------------------------------------+
3719|:warning:`warning:` |nbsp| :diagtext:`incomplete format specifier`|
3720+------------------------------------------------------------------+
3721
3722+--------------------------------------------------------------------------------+
3723|:warning:`warning:` |nbsp| :diagtext:`more '%%' conversions than data arguments`|
3724+--------------------------------------------------------------------------------+
3725
3726+-------------------------------------------------------------------------------------------------------+
3727|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is not a valid object format flag`|
3728+-------------------------------------------------------------------------------------------------------+
3729
3730+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
3731|:warning:`warning:` |nbsp| :diagtext:`flag '`:placeholder:`A`:diagtext:`' results in undefined behavior with '`:placeholder:`B`:diagtext:`' conversion specifier`|
3732+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
3733
3734+---------------------------+-------------------------+------------------------------------------------------------------------------------------------------------------+
3735|:warning:`warning:` |nbsp| |+-----------------------+| |nbsp| :diagtext:`used with '`:placeholder:`B`:diagtext:`' conversion specifier, resulting in undefined behavior`|
3736| ||:diagtext:`field width`|| |
3737| |+-----------------------+| |
3738| ||:diagtext:`precision` || |
3739| |+-----------------------+| |
3740+---------------------------+-------------------------+------------------------------------------------------------------------------------------------------------------+
3741
3742+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
3743|:warning:`warning:` |nbsp| :diagtext:`data argument position '`:placeholder:`A`:diagtext:`' exceeds the number of data arguments (`:placeholder:`B`:diagtext:`)`|
3744+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
3745
3746+----------------------------------------------------------------------------------------+
3747|:warning:`warning:` |nbsp| :diagtext:`zero field width in scanf format string is unused`|
3748+----------------------------------------------------------------------------------------+
3749
3750+----------------------------------------------------------------------------------------+
3751|:warning:`warning:` |nbsp| :diagtext:`no closing '\]' for '%%\[' in scanf format string`|
3752+----------------------------------------------------------------------------------------+
3753
3754
3755-Wformat-extra-args
3756-------------------
3757This diagnostic is enabled by default.
3758
3759**Diagnostic text:**
3760
3761+------------------------------------------------------------------------------+
3762|:warning:`warning:` |nbsp| :diagtext:`data argument not used by format string`|
3763+------------------------------------------------------------------------------+
3764
3765
3766-Wformat-invalid-specifier
3767--------------------------
3768This diagnostic is enabled by default.
3769
3770**Diagnostic text:**
3771
3772+--------------------------------------------------------------------------------------------------+
3773|:warning:`warning:` |nbsp| :diagtext:`invalid conversion specifier '`:placeholder:`A`:diagtext:`'`|
3774+--------------------------------------------------------------------------------------------------+
3775
3776
3777-Wformat-non-iso
3778----------------
3779**Diagnostic text:**
3780
3781+-----------------------------------------------------------------------------+----------------------------------+---------------------------------------------+
3782|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'` |nbsp| |+--------------------------------+| |nbsp| :diagtext:`is not supported by ISO C`|
3783| ||:diagtext:`length modifier` || |
3784| |+--------------------------------+| |
3785| ||:diagtext:`conversion specifier`|| |
3786| |+--------------------------------+| |
3787+-----------------------------------------------------------------------------+----------------------------------+---------------------------------------------+
3788
3789+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3790|:warning:`warning:` |nbsp| :diagtext:`using length modifier '`:placeholder:`A`:diagtext:`' with conversion specifier '`:placeholder:`B`:diagtext:`' is not supported by ISO C`|
3791+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3792
3793+--------------------------------------------------------------------------------------+
3794|:warning:`warning:` |nbsp| :diagtext:`positional arguments are not supported by ISO C`|
3795+--------------------------------------------------------------------------------------+
3796
3797
3798-Wformat-nonliteral
3799-------------------
3800**Diagnostic text:**
3801
3802+----------------------------------------------------------------------------+
3803|:warning:`warning:` |nbsp| :diagtext:`format string is not a string literal`|
3804+----------------------------------------------------------------------------+
3805
3806
3807-Wformat-pedantic
3808-----------------
3809**Diagnostic text:**
3810
3811+------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+
3812|:warning:`warning:` |nbsp| :diagtext:`format specifies type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`but the argument has` |nbsp| |+---------------------------+| |nbsp| :placeholder:`B`|
3813| ||:diagtext:`type` || |
3814| |+---------------------------+| |
3815| ||:diagtext:`underlying type`|| |
3816| |+---------------------------+| |
3817+------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+
3818
3819
3820-Wformat-security
3821-----------------
3822This diagnostic is enabled by default.
3823
3824**Diagnostic text:**
3825
3826+---------------------------------------------------------------------------------------------------+
3827|:warning:`warning:` |nbsp| :diagtext:`format string is not a string literal (potentially insecure)`|
3828+---------------------------------------------------------------------------------------------------+
3829
3830
3831-Wformat-y2k
3832------------
3833This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
3834
3835-Wformat-zero-length
3836--------------------
3837This diagnostic is enabled by default.
3838
3839**Diagnostic text:**
3840
3841+-------------------------------------------------------------+
3842|:warning:`warning:` |nbsp| :diagtext:`format string is empty`|
3843+-------------------------------------------------------------+
3844
3845
3846-Wformat=2
3847----------
3848Some of the diagnostics controlled by this flag are enabled by default.
3849
3850Controls `-Wformat-nonliteral`_, `-Wformat-security`_, `-Wformat-y2k`_.
3851
3852
3853-Wfour-char-constants
3854---------------------
3855**Diagnostic text:**
3856
3857+-------------------------------------------------------------------------+
3858|:warning:`warning:` |nbsp| :diagtext:`multi-character character constant`|
3859+-------------------------------------------------------------------------+
3860
3861
3862-Wframe-larger-than=
3863--------------------
3864This diagnostic is enabled by default.
3865
3866**Diagnostic text:**
3867
3868The text of this diagnostic is not controlled by Clang.
3869
3870+--------------------------------------------------------------------------------------------------------------------------------------+
3871|:warning:`warning:` |nbsp| :diagtext:`stack frame size of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`bytes in` |nbsp| :placeholder:`B`|
3872+--------------------------------------------------------------------------------------------------------------------------------------+
3873
3874
3875-Wfunction-def-in-objc-container
3876--------------------------------
3877This diagnostic is enabled by default.
3878
3879**Diagnostic text:**
3880
3881+--------------------------------------------------------------------------------------------------------+
3882|:warning:`warning:` |nbsp| :diagtext:`function definition inside an Objective-C container is deprecated`|
3883+--------------------------------------------------------------------------------------------------------+
3884
3885
3886-Wfuture-compat
3887---------------
3888This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
3889
3890-Wgcc-compat
3891------------
3892Some of the diagnostics controlled by this flag are enabled by default.
3893
3894**Diagnostic text:**
3895
Richard Smithcf9f4222017-01-20 19:27:09 +00003896+--------------------------------------------------------------------------+
3897|:warning:`warning:` |nbsp| :diagtext:`'diagnose\_if' is a clang extension`|
3898+--------------------------------------------------------------------------+
3899
Richard Smithb6a3b4b2016-09-12 05:58:29 +00003900+------------------------------------------------------------------------+
3901|:warning:`warning:` |nbsp| :diagtext:`'enable\_if' is a clang extension`|
3902+------------------------------------------------------------------------+
3903
3904+-----------------------------------------------------------------------------------------------+
3905|:warning:`warning:` |nbsp| :diagtext:`\_\_final is a GNU extension, consider using C++11 final`|
3906+-----------------------------------------------------------------------------------------------+
3907
3908+--------------------------------------------------------------------------------------------------------------------------------------------------------+
3909|:warning:`warning:` |nbsp| :diagtext:`GCC does not allow` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute in this position on a function definition`|
3910+--------------------------------------------------------------------------------------------------------------------------------------------------------+
3911
3912+---------------------------------------------------------------------------------------+
3913|:warning:`warning:` |nbsp| :diagtext:`'break' is bound to loop, GCC binds it to switch`|
3914+---------------------------------------------------------------------------------------+
3915
3916+----------------------------------------------------------------------------------------------------------------------------------------+
3917|:warning:`warning:` |nbsp| :diagtext:`GCC does not allow the 'cleanup' attribute argument to be anything other than a simple identifier`|
3918+----------------------------------------------------------------------------------------------------------------------------------------+
3919
3920+-----------------------------------------------------------------------------------------------------------------+
3921|:warning:`warning:` |nbsp| :diagtext:`GCC does not allow an attribute in this position on a function declaration`|
3922+-----------------------------------------------------------------------------------------------------------------+
3923
3924+----------------------------------------------------------------------------------------------------------------------------------+
3925|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is bound to current loop, GCC binds it to the enclosing loop`|
3926+----------------------------------------------------------------------------------------------------------------------------------+
3927
3928
3929-Wglobal-constructors
3930---------------------
3931**Diagnostic text:**
3932
3933+--------------------------------------------------------------------------------+
3934|:warning:`warning:` |nbsp| :diagtext:`declaration requires a global constructor`|
3935+--------------------------------------------------------------------------------+
3936
3937+-------------------------------------------------------------------------------+
3938|:warning:`warning:` |nbsp| :diagtext:`declaration requires a global destructor`|
3939+-------------------------------------------------------------------------------+
3940
3941
3942-Wgnu
3943-----
3944Some of the diagnostics controlled by this flag are enabled by default.
3945
Richard Smith8cba2912016-09-14 01:55:42 +00003946Controls `-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`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00003947
3948
3949-Wgnu-alignof-expression
3950------------------------
3951This diagnostic is enabled by default.
3952
3953**Diagnostic text:**
3954
3955+----------------------------------------------------------------------------------------------------------+
3956|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`applied to an expression is a GNU extension`|
3957+----------------------------------------------------------------------------------------------------------+
3958
3959
3960-Wgnu-anonymous-struct
3961----------------------
3962**Diagnostic text:**
3963
3964+----------------------------------------------------------------------------+
3965|:warning:`warning:` |nbsp| :diagtext:`anonymous structs are a GNU extension`|
3966+----------------------------------------------------------------------------+
3967
3968
3969-Wgnu-array-member-paren-init
3970-----------------------------
3971This diagnostic is an error by default, but the flag ``-Wno-gnu-array-member-paren-init`` can be used to disable the error.
3972
3973**Diagnostic text:**
3974
3975+----------------------------------------------------------------------------------------------------+
3976|:error:`error:` |nbsp| :diagtext:`parenthesized initialization of a member array is a GNU extension`|
3977+----------------------------------------------------------------------------------------------------+
3978
3979
3980-Wgnu-auto-type
3981---------------
3982**Diagnostic text:**
3983
3984+--------------------------------------------------------------------------+
3985|:warning:`warning:` |nbsp| :diagtext:`'\_\_auto\_type' is a GNU extension`|
3986+--------------------------------------------------------------------------+
3987
3988
3989-Wgnu-binary-literal
3990--------------------
3991**Diagnostic text:**
3992
3993+----------------------------------------------------------------------------------+
3994|:warning:`warning:` |nbsp| :diagtext:`binary integer literals are a GNU extension`|
3995+----------------------------------------------------------------------------------+
3996
3997
3998-Wgnu-case-range
3999----------------
4000**Diagnostic text:**
4001
4002+----------------------------------------------------------------------+
4003|:warning:`warning:` |nbsp| :diagtext:`use of GNU case range extension`|
4004+----------------------------------------------------------------------+
4005
4006
4007-Wgnu-complex-integer
4008---------------------
4009**Diagnostic text:**
4010
4011+--------------------------------------------------------------------------------+
4012|:warning:`warning:` |nbsp| :diagtext:`complex integer types are a GNU extension`|
4013+--------------------------------------------------------------------------------+
4014
4015
4016-Wgnu-compound-literal-initializer
4017----------------------------------
4018**Diagnostic text:**
4019
4020+--------------------------------------------------------------------------------------------------------------------------------------------------+
4021|:warning:`warning:` |nbsp| :diagtext:`initialization of an array` |nbsp| :diagtext:`from a compound literal` |nbsp| :diagtext:`is a GNU extension`|
4022+--------------------------------------------------------------------------------------------------------------------------------------------------+
4023
4024
4025-Wgnu-conditional-omitted-operand
4026---------------------------------
4027**Diagnostic text:**
4028
4029+--------------------------------------------------------------------------------------------------------------+
4030|:warning:`warning:` |nbsp| :diagtext:`use of GNU ?: conditional expression extension, omitting middle operand`|
4031+--------------------------------------------------------------------------------------------------------------+
4032
4033
4034-Wgnu-designator
4035----------------
4036Some of the diagnostics controlled by this flag are enabled by default.
4037
4038**Diagnostic text:**
4039
4040+-----------------------------------------------------------------------+
4041|:warning:`warning:` |nbsp| :diagtext:`use of GNU array range extension`|
4042+-----------------------------------------------------------------------+
4043
4044+-------------------------------------------------------------------------------------+
4045|:warning:`warning:` |nbsp| :diagtext:`use of GNU 'missing =' extension in designator`|
4046+-------------------------------------------------------------------------------------+
4047
4048+--------------------------------------------------------------------------------------+
4049|:warning:`warning:` |nbsp| :diagtext:`use of GNU old-style field designator extension`|
4050+--------------------------------------------------------------------------------------+
4051
4052
4053-Wgnu-empty-initializer
4054-----------------------
4055**Diagnostic text:**
4056
4057+-----------------------------------------------------------------------------+
4058|:warning:`warning:` |nbsp| :diagtext:`use of GNU empty initializer extension`|
4059+-----------------------------------------------------------------------------+
4060
4061
4062-Wgnu-empty-struct
4063------------------
4064**Diagnostic text:**
4065
4066+----------------------------------------------------+--------------------+--------------------------------------+
4067|:warning:`warning:` |nbsp| :diagtext:`empty` |nbsp| |+------------------+| |nbsp| :diagtext:`is a GNU extension`|
4068| ||:diagtext:`struct`|| |
4069| |+------------------+| |
4070| ||:diagtext:`union` || |
4071| |+------------------+| |
4072+----------------------------------------------------+--------------------+--------------------------------------+
4073
4074+----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------+
4075|:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in otherwise empty` |nbsp| |+---------------------+| |nbsp| :diagtext:`is a GNU extension`|
4076| ||:diagtext:`struct` || |
4077| |+---------------------+| |
4078| ||:diagtext:`interface`|| |
4079| |+---------------------+| |
4080| ||:diagtext:`union` || |
4081| |+---------------------+| |
4082| ||:diagtext:`class` || |
4083| |+---------------------+| |
4084| ||:diagtext:`enum` || |
4085| |+---------------------+| |
4086+----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------+
4087
4088+---------------------------+--------------------+------------------------------------------------------------+
4089|:warning:`warning:` |nbsp| |+------------------+| |nbsp| :diagtext:`without named members is a GNU extension`|
4090| ||:diagtext:`struct`|| |
4091| |+------------------+| |
4092| ||:diagtext:`union` || |
4093| |+------------------+| |
4094+---------------------------+--------------------+------------------------------------------------------------+
4095
4096
4097-Wgnu-flexible-array-initializer
4098--------------------------------
4099**Diagnostic text:**
4100
4101+---------------------------------------------------------------------------------------+
4102|:warning:`warning:` |nbsp| :diagtext:`flexible array initialization is a GNU extension`|
4103+---------------------------------------------------------------------------------------+
4104
4105
4106-Wgnu-flexible-array-union-member
4107---------------------------------
4108**Diagnostic text:**
4109
4110+-------------------------------------------------------------------------------------------------------------------------------------+
4111|:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in a union is a GNU extension`|
4112+-------------------------------------------------------------------------------------------------------------------------------------+
4113
4114
4115-Wgnu-folding-constant
4116----------------------
4117**Diagnostic text:**
4118
4119+-------------------------------------------------------------------+----------------------+------------------------------------------------------------------------------------+
4120|:warning:`warning:` |nbsp| :diagtext:`expression is not an` |nbsp| |+--------------------+| |nbsp| :diagtext:`constant expression; folding it to a constant is a GNU extension`|
4121| ||:diagtext:`integer` || |
4122| |+--------------------+| |
4123| ||:diagtext:`integral`|| |
4124| |+--------------------+| |
4125+-------------------------------------------------------------------+----------------------+------------------------------------------------------------------------------------+
4126
4127+------------------------------------------------------------------------------------------------------------------------------------------------------------+
4128|:warning:`warning:` |nbsp| :diagtext:`in-class initializer for static data member is not a constant expression; folding it to a constant is a GNU extension`|
4129+------------------------------------------------------------------------------------------------------------------------------------------------------------+
4130
4131+-----------------------------------------------------------------------------------------------------+
4132|:warning:`warning:` |nbsp| :diagtext:`variable length array folded to constant array as an extension`|
4133+-----------------------------------------------------------------------------------------------------+
4134
4135
4136-Wgnu-imaginary-constant
4137------------------------
4138**Diagnostic text:**
4139
4140+------------------------------------------------------------------------------+
4141|:warning:`warning:` |nbsp| :diagtext:`imaginary constants are a GNU extension`|
4142+------------------------------------------------------------------------------+
4143
4144
4145-Wgnu-include-next
4146------------------
4147**Diagnostic text:**
4148
4149+-----------------------------------------------------------------------------+
4150|:warning:`warning:` |nbsp| :diagtext:`#include\_next is a language extension`|
4151+-----------------------------------------------------------------------------+
4152
4153
4154-Wgnu-label-as-value
4155--------------------
4156**Diagnostic text:**
4157
4158+----------------------------------------------------------------------------+
4159|:warning:`warning:` |nbsp| :diagtext:`use of GNU address-of-label extension`|
4160+----------------------------------------------------------------------------+
4161
4162+-------------------------------------------------------------------------+
4163|:warning:`warning:` |nbsp| :diagtext:`use of GNU indirect-goto extension`|
4164+-------------------------------------------------------------------------+
4165
4166
4167-Wgnu-redeclared-enum
4168---------------------
4169**Diagnostic text:**
4170
4171+------------------------------------------------------------------------------------------------------------------------------------------+
4172|:warning:`warning:` |nbsp| :diagtext:`redeclaration of already-defined enum` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a GNU extension`|
4173+------------------------------------------------------------------------------------------------------------------------------------------+
4174
4175
4176-Wgnu-statement-expression
4177--------------------------
4178**Diagnostic text:**
4179
4180+--------------------------------------------------------------------------------+
4181|:warning:`warning:` |nbsp| :diagtext:`use of GNU statement expression extension`|
4182+--------------------------------------------------------------------------------+
4183
4184
4185-Wgnu-static-float-init
4186-----------------------
4187This diagnostic is enabled by default.
4188
4189**Diagnostic text:**
4190
4191+--------------------------------------------------------------------------------------------------------------------------------------------------------+
4192|:warning:`warning:` |nbsp| :diagtext:`in-class initializer for static data member of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a GNU extension`|
4193+--------------------------------------------------------------------------------------------------------------------------------------------------------+
4194
4195
4196-Wgnu-string-literal-operator-template
4197--------------------------------------
4198This diagnostic is enabled by default.
4199
4200**Diagnostic text:**
4201
4202+--------------------------------------------------------------------------------------------+
4203|:warning:`warning:` |nbsp| :diagtext:`string literal operator templates are a GNU extension`|
4204+--------------------------------------------------------------------------------------------+
4205
4206
4207-Wgnu-union-cast
4208----------------
4209**Diagnostic text:**
4210
4211+----------------------------------------------------------------------------+
4212|:warning:`warning:` |nbsp| :diagtext:`cast to union type is a GNU extension`|
4213+----------------------------------------------------------------------------+
4214
4215
4216-Wgnu-variable-sized-type-not-at-end
4217------------------------------------
4218This diagnostic is enabled by default.
4219
4220**Diagnostic text:**
4221
4222+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4223|:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with variable sized type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not at the end of a struct or class is a GNU extension`|
4224+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4225
4226
4227-Wgnu-zero-line-directive
4228-------------------------
4229**Diagnostic text:**
4230
4231+--------------------------------------------------------------------------------------------+
4232|:warning:`warning:` |nbsp| :diagtext:`#line directive with zero argument is a GNU extension`|
4233+--------------------------------------------------------------------------------------------+
4234
4235
4236-Wgnu-zero-variadic-macro-arguments
4237-----------------------------------
4238**Diagnostic text:**
4239
4240+---------------------------------------------------------------------------------------------------------------+
4241|:warning:`warning:` |nbsp| :diagtext:`must specify at least one argument for '...' parameter of variadic macro`|
4242+---------------------------------------------------------------------------------------------------------------+
4243
4244+---------------------------------------------------------------------------------------------------+
4245|:warning:`warning:` |nbsp| :diagtext:`token pasting of ',' and \_\_VA\_ARGS\_\_ is a GNU extension`|
4246+---------------------------------------------------------------------------------------------------+
4247
4248
4249-Wheader-guard
4250--------------
4251This diagnostic is enabled by default.
4252
4253**Diagnostic text:**
4254
4255+---------------------------------------------------------------------------------------------------------------------------------------+
4256|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is used as a header guard here, followed by #define of a different macro`|
4257+---------------------------------------------------------------------------------------------------------------------------------------+
4258
4259
4260-Wheader-hygiene
4261----------------
4262**Diagnostic text:**
4263
4264+--------------------------------------------------------------------------------------------+
4265|:warning:`warning:` |nbsp| :diagtext:`using namespace directive in global context in header`|
4266+--------------------------------------------------------------------------------------------+
4267
4268
4269-Widiomatic-parentheses
4270-----------------------
4271**Diagnostic text:**
4272
4273+-----------------------------------------------------------------------------------------------------------+
4274|:warning:`warning:` |nbsp| :diagtext:`using the result of an assignment as a condition without parentheses`|
4275+-----------------------------------------------------------------------------------------------------------+
4276
4277
4278-Wignored-attributes
4279--------------------
4280This diagnostic is enabled by default.
4281
4282**Diagnostic text:**
4283
4284+---------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4285|:warning:`warning:` |nbsp| |+-----------------+| |nbsp| :diagtext:`will always resolve to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`even if weak definition of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is overridden`|
4286| ||:diagtext:`alias`|| |
4287| |+-----------------+| |
4288| ||:diagtext:`ifunc`|| |
4289| |+-----------------+| |
4290+---------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4291
4292+---------------------------+-------------------+----------------------------------------------------------------------------------------------------------------+----------------------+
4293|:warning:`warning:` |nbsp| |+-----------------+| |nbsp| :diagtext:`will not be in section '`:placeholder:`A`:diagtext:`' but in the same section as the` |nbsp| |+--------------------+|
4294| ||:diagtext:`alias`|| ||:diagtext:`aliasee` ||
4295| |+-----------------+| |+--------------------+|
4296| ||:diagtext:`ifunc`|| ||:diagtext:`resolver`||
4297| |+-----------------+| |+--------------------+|
4298+---------------------------+-------------------+----------------------------------------------------------------------------------------------------------------+----------------------+
4299
4300+----------------------------------------------------------------------+------------------------+-------------------------------------+
4301|:warning:`warning:` |nbsp| :diagtext:`'abi\_tag' attribute on` |nbsp| |+----------------------+| |nbsp| :diagtext:`namespace ignored`|
4302| ||:diagtext:`non-inline`|| |
4303| |+----------------------+| |
4304| ||:diagtext:`anonymous` || |
4305| |+----------------------+| |
4306+----------------------------------------------------------------------+------------------------+-------------------------------------+
4307
4308+-----------------------------------------------------------------------------------------------------------------------+
4309|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`after definition is ignored`|
4310+-----------------------------------------------------------------------------------------------------------------------+
4311
4312+--------------------------------------------------------------------------------------------------------------------------------+
4313|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute can only be applied to instance variables or properties`|
4314+--------------------------------------------------------------------------------------------------------------------------------+
4315
4316+--------------------------------------------------------------------------------+
4317|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute ignored`|
4318+--------------------------------------------------------------------------------+
4319
4320+---------------------------------------------------------------------------------------------------+
4321|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute ignored on inline function`|
4322+---------------------------------------------------------------------------------------------------+
4323
4324+-------------------------------------------------------------------------------------------------------------------+
4325|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' attribute cannot be specified on a definition`|
4326+-------------------------------------------------------------------------------------------------------------------+
4327
4328+------------------------------------------------------------------------------------------------------------------------------------------------+
4329|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored, because it is not attached to a declaration`|
4330+------------------------------------------------------------------------------------------------------------------------------------------------+
4331
4332+--------------------------------------------------------------------------------------------------------+
4333|:warning:`warning:` |nbsp| :diagtext:`'nonnull' attribute applied to function with no pointer arguments`|
4334+--------------------------------------------------------------------------------------------------------+
4335
4336+-----------------------------------------------------------------------------------------------------+
4337|:warning:`warning:` |nbsp| :diagtext:`'nonnull' attribute when used on parameters takes no arguments`|
4338+-----------------------------------------------------------------------------------------------------+
4339
4340+--------------------------------------------------------------------------------------------------+
4341|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute ignored when parsing type`|
4342+--------------------------------------------------------------------------------------------------+
4343
4344+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
4345|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to a pointer or reference (`:placeholder:`B` |nbsp| :diagtext:`is invalid)`|
4346+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
4347
4348+----------------------------------------------------------------------------------------+------------------------------+-------------------------------------+
4349|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to`|+----------------------------+| |nbsp| :diagtext:`pointer arguments`|
4350| || || |
4351| |+----------------------------+| |
4352| || |nbsp| :diagtext:`constant`|| |
4353| |+----------------------------+| |
4354+----------------------------------------------------------------------------------------+------------------------------+-------------------------------------+
4355
4356+------------------------------------------------------------------------------------+
4357|:warning:`warning:` |nbsp| :diagtext:`attribute declaration must precede definition`|
4358+------------------------------------------------------------------------------------+
4359
4360+------------------------------------------------------------------------------------------------------------------------+
4361|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to return values that are pointers`|
4362+------------------------------------------------------------------------------------------------------------------------+
4363
4364+--------------------------------------------------------------------------------------------------------------------------------------+
4365|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to return values that are pointers or references`|
4366+--------------------------------------------------------------------------------------------------------------------------------------+
4367
4368+------------------------------------------------------------------------------------+
4369|:warning:`warning:` |nbsp| :diagtext:`'sentinel' attribute requires named arguments`|
4370+------------------------------------------------------------------------------------+
4371
4372+-----------------------------------------------------------------------------------------------+-----------------------+
4373|:warning:`warning:` |nbsp| :diagtext:`'sentinel' attribute only supported for variadic` |nbsp| |+---------------------+|
4374| ||:diagtext:`functions`||
4375| |+---------------------+|
4376| ||:diagtext:`blocks` ||
4377| |+---------------------+|
4378+-----------------------------------------------------------------------------------------------+-----------------------+
4379
4380+------------------------------------------------------------------------------------------------------------------------+
4381|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute argument not supported:` |nbsp| :placeholder:`B`|
4382+------------------------------------------------------------------------------------------------------------------------+
4383
4384+---------------------------------------------------------------------------------+
4385|:warning:`warning:` |nbsp| :diagtext:`unknown visibility` |nbsp| :placeholder:`A`|
4386+---------------------------------------------------------------------------------+
4387
4388+------------------------------------------------------------------------------------------------------------------------+--------------------------------+----------------------------------------+
4389|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be applied to` |nbsp| |+------------------------------+| |nbsp| :diagtext:`without return value`|
4390| ||:diagtext:`functions` || |
4391| |+------------------------------+| |
4392| ||:diagtext:`Objective-C method`|| |
4393| |+------------------------------+| |
4394+------------------------------------------------------------------------------------------------------------------------+--------------------------------+----------------------------------------+
4395
4396+----------------------------------------------------------------------------------------------------+
4397|:warning:`warning:` |nbsp| :diagtext:`\_\_weak attribute cannot be specified on a field declaration`|
4398+----------------------------------------------------------------------------------------------------+
4399
4400+------------------------------------------------------------------------------------------------------------------------------+
4401|:warning:`warning:` |nbsp| :diagtext:`\_\_weak attribute cannot be specified on an automatic variable when ARC is not enabled`|
4402+------------------------------------------------------------------------------------------------------------------------------+
4403
4404+------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+
4405|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| |+----------------------------------------------------------------------------------------------------------------+|
4406| ||:diagtext:`functions` ||
4407| |+----------------------------------------------------------------------------------------------------------------+|
4408| ||:diagtext:`unions` ||
4409| |+----------------------------------------------------------------------------------------------------------------+|
4410| ||:diagtext:`variables and functions` ||
4411| |+----------------------------------------------------------------------------------------------------------------+|
Richard Smithcf9f4222017-01-20 19:27:09 +00004412| ||:diagtext:`functions and global variables` ||
4413| |+----------------------------------------------------------------------------------------------------------------+|
Richard Smithb6a3b4b2016-09-12 05:58:29 +00004414| ||:diagtext:`functions, variables, and Objective-C interfaces` ||
4415| |+----------------------------------------------------------------------------------------------------------------+|
4416| ||:diagtext:`functions and methods` ||
4417| |+----------------------------------------------------------------------------------------------------------------+|
4418| ||:diagtext:`parameters` ||
4419| |+----------------------------------------------------------------------------------------------------------------+|
4420| ||:diagtext:`functions, methods and blocks` ||
4421| |+----------------------------------------------------------------------------------------------------------------+|
4422| ||:diagtext:`functions, methods, and classes` ||
4423| |+----------------------------------------------------------------------------------------------------------------+|
4424| ||:diagtext:`functions, methods, and parameters` ||
4425| |+----------------------------------------------------------------------------------------------------------------+|
Richard Smithcf9f4222017-01-20 19:27:09 +00004426| ||:diagtext:`functions, methods, and global variables` ||
4427| |+----------------------------------------------------------------------------------------------------------------+|
Richard Smithb6a3b4b2016-09-12 05:58:29 +00004428| ||:diagtext:`classes` ||
4429| |+----------------------------------------------------------------------------------------------------------------+|
4430| ||:diagtext:`enums` ||
4431| |+----------------------------------------------------------------------------------------------------------------+|
4432| ||:diagtext:`variables` ||
4433| |+----------------------------------------------------------------------------------------------------------------+|
4434| ||:diagtext:`methods` ||
4435| |+----------------------------------------------------------------------------------------------------------------+|
4436| ||:diagtext:`fields and global variables` ||
4437| |+----------------------------------------------------------------------------------------------------------------+|
4438| ||:diagtext:`structs` ||
4439| |+----------------------------------------------------------------------------------------------------------------+|
4440| ||:diagtext:`parameters and typedefs` ||
4441| |+----------------------------------------------------------------------------------------------------------------+|
4442| ||:diagtext:`variables and typedefs` ||
4443| |+----------------------------------------------------------------------------------------------------------------+|
4444| ||:diagtext:`thread-local variables` ||
4445| |+----------------------------------------------------------------------------------------------------------------+|
4446| ||:diagtext:`variables and fields` ||
4447| |+----------------------------------------------------------------------------------------------------------------+|
4448| ||:diagtext:`variables, data members and tag types` ||
4449| |+----------------------------------------------------------------------------------------------------------------+|
4450| ||:diagtext:`types and namespaces` ||
4451| |+----------------------------------------------------------------------------------------------------------------+|
4452| ||:diagtext:`Objective-C interfaces` ||
4453| |+----------------------------------------------------------------------------------------------------------------+|
4454| ||:diagtext:`methods and properties` ||
4455| |+----------------------------------------------------------------------------------------------------------------+|
4456| ||:diagtext:`struct or union` ||
4457| |+----------------------------------------------------------------------------------------------------------------+|
4458| ||:diagtext:`struct, union or class` ||
4459| |+----------------------------------------------------------------------------------------------------------------+|
4460| ||:diagtext:`types` ||
4461| |+----------------------------------------------------------------------------------------------------------------+|
4462| ||:diagtext:`Objective-C instance methods` ||
4463| |+----------------------------------------------------------------------------------------------------------------+|
4464| ||:diagtext:`init methods of interface or class extension declarations` ||
4465| |+----------------------------------------------------------------------------------------------------------------+|
4466| ||:diagtext:`variables, functions and classes` ||
4467| |+----------------------------------------------------------------------------------------------------------------+|
4468| ||:diagtext:`functions, variables, classes, and Objective-C interfaces` ||
4469| |+----------------------------------------------------------------------------------------------------------------+|
4470| ||:diagtext:`Objective-C protocols` ||
4471| |+----------------------------------------------------------------------------------------------------------------+|
Richard Smithce9d5862016-09-14 01:51:10 +00004472| ||:diagtext:`variables with static or thread storage duration` ||
4473| |+----------------------------------------------------------------------------------------------------------------+|
Richard Smithcf9f4222017-01-20 19:27:09 +00004474| ||:diagtext:`functions, methods, properties, and global variables` ||
Richard Smithb6a3b4b2016-09-12 05:58:29 +00004475| |+----------------------------------------------------------------------------------------------------------------+|
4476| ||:diagtext:`structs, unions, and typedefs` ||
4477| |+----------------------------------------------------------------------------------------------------------------+|
4478| ||:diagtext:`structs and typedefs` ||
4479| |+----------------------------------------------------------------------------------------------------------------+|
4480| ||:diagtext:`interface or protocol declarations` ||
4481| |+----------------------------------------------------------------------------------------------------------------+|
4482| ||:diagtext:`kernel functions` ||
4483| |+----------------------------------------------------------------------------------------------------------------+|
4484| ||:diagtext:`non-K&R-style functions` ||
4485| |+----------------------------------------------------------------------------------------------------------------+|
4486| ||:diagtext:`variables, enums, fields and typedefs` ||
4487| |+----------------------------------------------------------------------------------------------------------------+|
4488| ||:diagtext:`functions, methods, enums, and classes` ||
4489| |+----------------------------------------------------------------------------------------------------------------+|
4490| ||:diagtext:`structs, classes, variables, functions, and inline namespaces` ||
4491| |+----------------------------------------------------------------------------------------------------------------+|
4492| ||:diagtext:`variables, functions, methods, types, enumerations, enumerators, labels, and non-static data members`||
4493| |+----------------------------------------------------------------------------------------------------------------+|
Richard Smithcf9f4222017-01-20 19:27:09 +00004494| ||:diagtext:`classes and enumerations` ||
4495| |+----------------------------------------------------------------------------------------------------------------+|
Richard Smith9a016602017-04-13 22:44:22 +00004496| ||:diagtext:`named declarations` ||
4497| |+----------------------------------------------------------------------------------------------------------------+|
Richard Smithb6a3b4b2016-09-12 05:58:29 +00004498+------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+
4499
4500+--------------------------------------------------------------------------------------------------------------------------------------------------------+
4501|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored, because it cannot be applied to omitted return type`|
4502+--------------------------------------------------------------------------------------------------------------------------------------------------------+
4503
4504+----------------------------------------------------------------------------------------------------------------------------+
4505|:warning:`warning:` |nbsp| :diagtext:`calling convention` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored for this target`|
4506+----------------------------------------------------------------------------------------------------------------------------+
4507
4508+-------------------------------------------------------------------------------------------------------------------+
4509|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`calling convention ignored on constructor/destructor`|
4510+-------------------------------------------------------------------------------------------------------------------+
4511
4512+--------------------------------------------------------------------------------------------------------------+
4513|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`calling convention ignored on variadic function`|
4514+--------------------------------------------------------------------------------------------------------------+
4515
4516+-------------------------------------------------------------------------------------------------------------------------------------------+
4517|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored, because it cannot be applied to a type`|
4518+-------------------------------------------------------------------------------------------------------------------------------------------+
4519
4520+------------------------------------------------------------------------------------------------------------------------+-----------------------+----------------------------------------------------+
4521|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is ignored, place it after "`|+---------------------+|:diagtext:`" to apply attribute to type declaration`|
4522| ||:diagtext:`class` || |
4523| |+---------------------+| |
4524| ||:diagtext:`struct` || |
4525| |+---------------------+| |
4526| ||:diagtext:`interface`|| |
4527| |+---------------------+| |
4528| ||:diagtext:`union` || |
4529| |+---------------------+| |
4530| ||:diagtext:`enum` || |
4531| |+---------------------+| |
4532+------------------------------------------------------------------------------------------------------------------------+-----------------------+----------------------------------------------------+
4533
4534+--------------------------------------------------------------------------------------------+
4535|:warning:`warning:` |nbsp| :diagtext:`'deprecated' attribute on anonymous namespace ignored`|
4536+--------------------------------------------------------------------------------------------+
4537
4538+----------------------------------------------------------------------------------------------------------------------------------------------+
4539|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`redeclared inline;` |nbsp| :placeholder:`B` |nbsp| :diagtext:`attribute ignored`|
4540+----------------------------------------------------------------------------------------------------------------------------------------------+
4541
4542+----------------------------------------------------------------------------------------------------------------------------------------+
4543|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is already applied with different parameters`|
4544+----------------------------------------------------------------------------------------------------------------------------------------+
4545
4546+--------------------------------------------------------------------------------------------------------------+
4547|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is already applied`|
4548+--------------------------------------------------------------------------------------------------------------+
4549
4550+------------------------------------------------------------------------------------------------+
4551|:warning:`warning:` |nbsp| :diagtext:`Objective-C GC does not allow weak variables on the stack`|
4552+------------------------------------------------------------------------------------------------+
4553
4554+-------------------------------------------------------------------------------------------------------------------------+
4555|:warning:`warning:` |nbsp| :diagtext:`'gnu\_inline' attribute requires function to be marked 'inline', attribute ignored`|
4556+-------------------------------------------------------------------------------------------------------------------------+
4557
4558+---------------------------------------------------------------------------+------------------------------------+
4559|:warning:`warning:` |nbsp| :diagtext:`inheritance model ignored on` |nbsp| |+----------------------------------+|
4560| ||:diagtext:`primary template` ||
4561| |+----------------------------------+|
4562| ||:diagtext:`partial specialization`||
4563| |+----------------------------------+|
4564+---------------------------------------------------------------------------+------------------------------------+
4565
4566+--------------------------------------------------------------------------------------------------------------+
4567|:warning:`warning:` |nbsp| :diagtext:`'internal\_linkage' attribute on a non-static local variable is ignored`|
4568+--------------------------------------------------------------------------------------------------------------+
4569
4570+--------------------------------------------------------------------------------------------+
4571|:warning:`warning:` |nbsp| :diagtext:`qualifiers after comma in declarator list are ignored`|
4572+--------------------------------------------------------------------------------------------+
4573
4574+-------------------------------------------------------------------------------------------------------------+----------------------------------+
4575|:warning:`warning:` |nbsp| :diagtext:`MIPS 'interrupt' attribute only applies to functions that have` |nbsp| |+--------------------------------+|
4576| ||:diagtext:`no parameters` ||
4577| |+--------------------------------+|
4578| ||:diagtext:`a 'void' return type`||
4579| |+--------------------------------+|
4580+-------------------------------------------------------------------------------------------------------------+----------------------------------+
4581
4582+---------------------------------------------------------------------------------------+
4583|:warning:`warning:` |nbsp| :diagtext:`unknown attribute '`:placeholder:`A`:diagtext:`'`|
4584+---------------------------------------------------------------------------------------+
4585
4586+------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------+
4587|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`parameters`|
4588| ||:diagtext:`Objective-C object` || |
4589| |+---------------------------------+| |
4590| ||:diagtext:`pointer` || |
4591| |+---------------------------------+| |
4592| ||:diagtext:`pointer-to-CF-pointer`|| |
4593| |+---------------------------------+| |
4594+------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------+
4595
4596+------------------------------------------------------------------------------------------------+------------------------+---------------------------------------+--------------------------------------+
4597|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| |+----------------------+| |nbsp| :diagtext:`that return` |nbsp| |+------------------------------------+|
4598| ||:diagtext:`functions` || ||:diagtext:`an Objective-C object` ||
4599| |+----------------------+| |+------------------------------------+|
4600| ||:diagtext:`methods` || ||:diagtext:`a pointer` ||
4601| |+----------------------+| |+------------------------------------+|
4602| ||:diagtext:`properties`|| ||:diagtext:`a non-retainable pointer`||
4603| |+----------------------+| |+------------------------------------+|
4604+------------------------------------------------------------------------------------------------+------------------------+---------------------------------------+--------------------------------------+
4605
4606+--------------------------------------------------------------------------------------------------------------------------------------------+
4607|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is deprecated and ignored in OpenCL version` |nbsp| :placeholder:`B`|
4608+--------------------------------------------------------------------------------------------------------------------------------------------+
4609
4610+---------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------------------------------------------------------+
4611|:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`of field` |nbsp| :placeholder:`B` |nbsp| :diagtext:`(`:placeholder:`C` |nbsp| :diagtext:`bits) does not match the` |nbsp| |+---------------------+| |nbsp| :diagtext:`of the first field in transparent union; transparent\_union attribute ignored`|
4612| ||:diagtext:`alignment`|| ||:diagtext:`alignment`|| |
4613| |+---------------------+| |+---------------------+| |
4614| ||:diagtext:`size` || ||:diagtext:`size` || |
4615| |+---------------------+| |+---------------------+| |
4616+---------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------------------------------------------------------+
4617
4618+---------------------------------------------------------------------------------------------+----------------------------+--------------------------------------------------------------------------------------------------+
4619|:warning:`warning:` |nbsp| :diagtext:`first field of a transparent union cannot have` |nbsp| |+--------------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`B`:diagtext:`; transparent\_union attribute ignored`|
4620| ||:diagtext:`floating point`|| |
4621| |+--------------------------+| |
4622| ||:diagtext:`vector` || |
4623| |+--------------------------+| |
4624+---------------------------------------------------------------------------------------------+----------------------------+--------------------------------------------------------------------------------------------------+
4625
4626+--------------------------------------------------------------------------------------------------------------------------------+
4627|:warning:`warning:` |nbsp| :diagtext:`transparent\_union attribute can only be applied to a union definition; attribute ignored`|
4628+--------------------------------------------------------------------------------------------------------------------------------+
4629
4630+-----------------------------------------------------------------------------------------------------------------------------------------+
4631|:warning:`warning:` |nbsp| :diagtext:`transparent union definition must contain at least one field; transparent\_union attribute ignored`|
4632+-----------------------------------------------------------------------------------------------------------------------------------------+
4633
4634+---------------------------------------------------------------------------------------------+-------------------------------------------------+---------------------------------------------------------------+
4635|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' only applies to` |nbsp| |+-----------------------------------------------+| |nbsp| :diagtext:`types; type here is` |nbsp| :placeholder:`C`|
4636| ||:diagtext:`function` || |
4637| |+-----------------------------------------------+| |
4638| ||:diagtext:`pointer` || |
4639| |+-----------------------------------------------+| |
4640| ||:diagtext:`Objective-C object or block pointer`|| |
4641| |+-----------------------------------------------+| |
4642+---------------------------------------------------------------------------------------------+-------------------------------------------------+---------------------------------------------------------------+
4643
4644+-------------------------------------------------------------------------------------------------------------------------+
4645|:warning:`warning:` |nbsp| :diagtext:`\_\_declspec attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not supported`|
4646+-------------------------------------------------------------------------------------------------------------------------+
4647
4648+-------------------------------------------------------------------------------------------------------------------------+
4649|:warning:`warning:` |nbsp| :diagtext:`Ignoring unsupported '`:placeholder:`A`:diagtext:`' in the target attribute string`|
4650+-------------------------------------------------------------------------------------------------------------------------+
4651
4652
4653-Wignored-optimization-argument
4654-------------------------------
4655This diagnostic is enabled by default.
4656
4657**Diagnostic text:**
4658
4659+--------------------------------------------------------------------------------------------------------------------------------------------------+
4660|:warning:`warning:` |nbsp| :diagtext:`optimization flag '`:placeholder:`A`:diagtext:`' is not supported for target '`:placeholder:`B`:diagtext:`'`|
4661+--------------------------------------------------------------------------------------------------------------------------------------------------+
4662
4663+--------------------------------------------------------------------------------------------------------+
4664|:warning:`warning:` |nbsp| :diagtext:`optimization flag '`:placeholder:`A`:diagtext:`' is not supported`|
4665+--------------------------------------------------------------------------------------------------------+
4666
4667
Richard Smithcf9f4222017-01-20 19:27:09 +00004668-Wignored-pragma-intrinsic
4669--------------------------
4670This diagnostic is enabled by default.
4671
4672**Diagnostic text:**
4673
4674+------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
4675|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not a recognized builtin`|+----------------------------------------------------------------------------+|
4676| || ||
4677| |+----------------------------------------------------------------------------+|
4678| ||:diagtext:`; consider including <intrin.h> to access non-builtin intrinsics`||
4679| |+----------------------------------------------------------------------------+|
4680+------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
4681
4682
Richard Smithb6a3b4b2016-09-12 05:58:29 +00004683-Wignored-pragmas
4684-----------------
4685This diagnostic is enabled by default.
4686
Richard Smithcf9f4222017-01-20 19:27:09 +00004687Also controls `-Wignored-pragma-intrinsic`_.
4688
Richard Smithb6a3b4b2016-09-12 05:58:29 +00004689**Diagnostic text:**
4690
4691+------------------------------------------------------------------------------+---------------------------+-----------------------+
4692|:warning:`warning:` |nbsp| :diagtext:`expected '=' following '#pragma` |nbsp| |+-------------------------+|:diagtext:`' - ignored`|
4693| ||:diagtext:`align` || |
4694| |+-------------------------+| |
4695| ||:diagtext:`options align`|| |
4696| |+-------------------------+| |
4697+------------------------------------------------------------------------------+---------------------------+-----------------------+
4698
4699+-----------------------------------------------------------------------------------+---------------------------+-----------------------+
4700|:warning:`warning:` |nbsp| :diagtext:`invalid alignment option in '#pragma` |nbsp| |+-------------------------+|:diagtext:`' - ignored`|
4701| ||:diagtext:`align` || |
4702| |+-------------------------+| |
4703| ||:diagtext:`options align`|| |
4704| |+-------------------------+| |
4705+-----------------------------------------------------------------------------------+---------------------------+-----------------------+
4706
Richard Smithcf9f4222017-01-20 19:27:09 +00004707+-----------------------------------------------------------------------------------------------------------+
4708|:warning:`warning:` |nbsp| :diagtext:`OpenCL extension end directive mismatches begin directive - ignoring`|
4709+-----------------------------------------------------------------------------------------------------------+
4710
Richard Smithb6a3b4b2016-09-12 05:58:29 +00004711+----------------------------------------------------------------------------------------------------+
4712|:warning:`warning:` |nbsp| :diagtext:`'#pragma comment` |nbsp| :placeholder:`A`:diagtext:`' ignored`|
4713+----------------------------------------------------------------------------------------------------+
4714
4715+-------------------------------------------------------------------------------------------------------+
4716|:warning:`warning:` |nbsp| :diagtext:`missing argument to debug command '`:placeholder:`A`:diagtext:`'`|
4717+-------------------------------------------------------------------------------------------------------+
4718
4719+----------------------------------------------------------------------------------------------+
4720|:warning:`warning:` |nbsp| :diagtext:`unexpected debug command '`:placeholder:`A`:diagtext:`'`|
4721+----------------------------------------------------------------------------------------------+
4722
4723+------------------------------------------------------------------------------------------------------------------------+
4724|:warning:`warning:` |nbsp| :diagtext:`expected action or ')' in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
4725+------------------------------------------------------------------------------------------------------------------------+
4726
4727+--------------------------------------------------------------------------------------------------------------+
4728|:warning:`warning:` |nbsp| :diagtext:`missing ':' after` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`|
4729+--------------------------------------------------------------------------------------------------------------+
4730
4731+---------------------------------------------------------------------------------------------------------------------+
4732|:warning:`warning:` |nbsp| :diagtext:`missing ':' or ')' after` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`|
4733+---------------------------------------------------------------------------------------------------------------------+
4734
Richard Smithb6a3b4b2016-09-12 05:58:29 +00004735+---------------------------------------------------------------------------------------------------------------------+
4736|:warning:`warning:` |nbsp| :diagtext:`expected identifier in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
4737+---------------------------------------------------------------------------------------------------------------------+
4738
4739+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4740|:warning:`warning:` |nbsp| :diagtext:`expected 'compiler', 'lib', 'user', or a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
4741+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4742
4743+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4744|:warning:`warning:` |nbsp| :diagtext:`expected integer between` |nbsp| :placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B` |nbsp| :diagtext:`inclusive in '#pragma` |nbsp| :placeholder:`C`:diagtext:`' - ignored`|
4745+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4746
4747+-----------------------------------------------------------------------------------------------------------------+
4748|:warning:`warning:` |nbsp| :diagtext:`missing '(' after '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignoring`|
4749+-----------------------------------------------------------------------------------------------------------------+
4750
4751+------------------------------------------------------------------------------------------------------------------------+
4752|:warning:`warning:` |nbsp| :diagtext:`expected non-wide string literal in '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`|
4753+------------------------------------------------------------------------------------------------------------------------+
4754
Richard Smithcf9f4222017-01-20 19:27:09 +00004755+-------------------------------------------------------+---------------------------------------------------+------------------------------+
4756|:warning:`warning:` |nbsp| :diagtext:`expected` |nbsp| |+-------------------------------------------------+| |nbsp| :diagtext:`- ignoring`|
4757| ||:diagtext:`'enable', 'disable', 'begin' or 'end'`|| |
4758| |+-------------------------------------------------+| |
4759| ||:diagtext:`'disable'` || |
4760| |+-------------------------------------------------+| |
4761+-------------------------------------------------------+---------------------------------------------------+------------------------------+
4762
Richard Smithb6a3b4b2016-09-12 05:58:29 +00004763+-----------------------------------------------------------------------------------------------------------+
4764|:warning:`warning:` |nbsp| :diagtext:`expected ')' or ',' in '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`|
4765+-----------------------------------------------------------------------------------------------------------+
4766
4767+-----------------------------------------------------------------------------------------------------------------+
4768|:warning:`warning:` |nbsp| :diagtext:`missing ')' after '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignoring`|
4769+-----------------------------------------------------------------------------------------------------------------+
4770
4771+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
4772|:warning:`warning:` |nbsp| :diagtext:`expected a stack label or a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
4773+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
4774
4775+------------------------------------------------------------------------------------------------------------------------------------------------+
4776|:warning:`warning:` |nbsp| :diagtext:`expected a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
4777+------------------------------------------------------------------------------------------------------------------------------------------------+
4778
4779+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
4780|:warning:`warning:` |nbsp| :diagtext:`expected push, pop or a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
4781+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
4782
4783+---------------------------------------------------------------------------------------------------------------------+
4784|:warning:`warning:` |nbsp| :diagtext:`extra tokens at end of '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
4785+---------------------------------------------------------------------------------------------------------------------+
4786
Richard Smithcf9f4222017-01-20 19:27:09 +00004787+----------------------------------------------------------------------------------------------------------+
4788|:warning:`warning:` |nbsp| :diagtext:`incorrect use of #pragma clang force\_cuda\_host\_device begin\|end`|
4789+----------------------------------------------------------------------------------------------------------+
4790
Richard Smithb6a3b4b2016-09-12 05:58:29 +00004791+-------------------------------------------------------------------------------------------------------------------+
4792|:warning:`warning:` |nbsp| :diagtext:`'#pragma init\_seg' is only supported when targeting a Microsoft environment`|
4793+-------------------------------------------------------------------------------------------------------------------+
4794
4795+-----------------------------------------------------------------------------------------------------------------+
4796|:warning:`warning:` |nbsp| :diagtext:`unknown action for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
4797+-----------------------------------------------------------------------------------------------------------------+
4798
4799+------------------------------------------------------------------------------------------------------------------------------------------------+
4800|:warning:`warning:` |nbsp| :diagtext:`unknown action '`:placeholder:`B`:diagtext:`' for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
4801+------------------------------------------------------------------------------------------------------------------------------------------------+
4802
4803+----------------------------------------------------------------------------------------------+
4804|:warning:`warning:` |nbsp| :diagtext:`incorrect use of '#pragma ms\_struct on\|off' - ignored`|
4805+----------------------------------------------------------------------------------------------+
4806
4807+--------------------------------------------------------------------------------------------------+
4808|:warning:`warning:` |nbsp| :diagtext:`#pragma options align=reset failed:` |nbsp| :placeholder:`A`|
4809+--------------------------------------------------------------------------------------------------+
4810
4811+---------------------------------------------------------------------------------------------+
4812|:warning:`warning:` |nbsp| :diagtext:`expected 'align' following '#pragma options' - ignored`|
4813+---------------------------------------------------------------------------------------------+
4814
4815+--------------------------------------------------------------------------------------------------------+
4816|:warning:`warning:` |nbsp| :diagtext:`expected #pragma pack parameter to be '1', '2', '4', '8', or '16'`|
4817+--------------------------------------------------------------------------------------------------------+
4818
4819+-------------------------------------------------------------------------------------------------+
4820|:warning:`warning:` |nbsp| :diagtext:`expected integer or identifier in '#pragma pack' - ignored`|
4821+-------------------------------------------------------------------------------------------------+
4822
4823+----------------------------------------------------------------------------------------------------------------------------+
4824|:warning:`warning:` |nbsp| :diagtext:`#pragma` |nbsp| :placeholder:`A`:diagtext:`(pop, ...) failed:` |nbsp| :placeholder:`B`|
4825+----------------------------------------------------------------------------------------------------------------------------+
4826
4827+------------------------------------------------------------------------------------------------------------------------------+
4828|:warning:`warning:` |nbsp| :diagtext:`pragma pop\_macro could not pop '`:placeholder:`A`:diagtext:`', no matching push\_macro`|
4829+------------------------------------------------------------------------------------------------------------------------------+
4830
4831+---------------------------------------------------------------------------------------------------------------------+
4832|:warning:`warning:` |nbsp| :diagtext:`unknown OpenCL extension` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`|
4833+---------------------------------------------------------------------------------------------------------------------+
4834
4835+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
4836|:warning:`warning:` |nbsp| :diagtext:`known but unsupported action '`:placeholder:`B`:diagtext:`' for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
4837+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
4838
4839+-------------------------------------------------------------------------------------------------------------------------+
4840|:warning:`warning:` |nbsp| :diagtext:`unsupported OpenCL extension` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`|
4841+-------------------------------------------------------------------------------------------------------------------------+
4842
4843+-----------------------------------------------------------------------------------------------+
4844|:warning:`warning:` |nbsp| :diagtext:`expected '#pragma unused' argument to be a variable name`|
4845+-----------------------------------------------------------------------------------------------+
4846
4847+------------------------------------------------------------------------------------------+
4848|:warning:`warning:` |nbsp| :diagtext:`only variables can be arguments to '#pragma unused'`|
4849+------------------------------------------------------------------------------------------+
4850
4851+----------------------------------------------------------------------------------------------------------------------------------------------+
4852|:warning:`warning:` |nbsp| :diagtext:`undeclared variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`used as an argument for '#pragma unused'`|
4853+----------------------------------------------------------------------------------------------------------------------------------------------+
4854
4855
4856-Wignored-qualifiers
4857--------------------
4858Some of the diagnostics controlled by this flag are enabled by default.
4859
4860**Diagnostic text:**
4861
4862+--------------------------------------------------+------------------------------------+----------------------------------------------------------------+
4863|:warning:`warning:` |nbsp| :diagtext:`ARC` |nbsp| |+----------------------------------+| |nbsp| :diagtext:`lifetime qualifier on return type is ignored`|
4864| ||:diagtext:`unused` || |
4865| |+----------------------------------+| |
4866| ||:diagtext:`\_\_unsafe\_unretained`|| |
4867| |+----------------------------------+| |
4868| ||:diagtext:`\_\_strong` || |
4869| |+----------------------------------+| |
4870| ||:diagtext:`\_\_weak` || |
4871| |+----------------------------------+| |
4872| ||:diagtext:`\_\_autoreleasing` || |
4873| |+----------------------------------+| |
4874+--------------------------------------------------+------------------------------------+----------------------------------------------------------------+
4875
4876+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
4877|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' qualifier on omitted return type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has no effect`|
4878+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
4879
4880+------------------------------------------------------------------------------------+---------------+------------------------------------------+-------------------+-----------------------------+
4881|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' type qualifier`|+-------------+| |nbsp| :diagtext:`on return type` |nbsp| |+-----------------+| |nbsp| :diagtext:`no effect`|
4882| || || ||:diagtext:`:has` || |
4883| |+-------------+| |+-----------------+| |
4884| ||:diagtext:`s`|| ||:diagtext:`:have`|| |
4885| |+-------------+| |+-----------------+| |
4886+------------------------------------------------------------------------------------+---------------+------------------------------------------+-------------------+-----------------------------+
4887
4888+---------------------------------------------------------------------------------------------------------------------------------------------------------+
4889|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' qualifier on function type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has no effect`|
4890+---------------------------------------------------------------------------------------------------------------------------------------------------------+
4891
4892+----------------------------------------------------------------------------------------------------------------------------------------------------------+
4893|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' qualifier on reference type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has no effect`|
4894+----------------------------------------------------------------------------------------------------------------------------------------------------------+
4895
4896
4897-Wimplicit
4898----------
4899Some of the diagnostics controlled by this flag are enabled by default.
4900
4901Controls `-Wimplicit-function-declaration`_, `-Wimplicit-int`_.
4902
4903
4904-Wimplicit-atomic-properties
4905----------------------------
4906**Diagnostic text:**
4907
4908+-----------------------------------------------------------------------------------------------------+
4909|:warning:`warning:` |nbsp| :diagtext:`property is assumed atomic when auto-synthesizing the property`|
4910+-----------------------------------------------------------------------------------------------------+
4911
4912+----------------------------------------------------------------------------+
4913|:warning:`warning:` |nbsp| :diagtext:`property is assumed atomic by default`|
4914+----------------------------------------------------------------------------+
4915
4916
4917-Wimplicit-conversion-floating-point-to-bool
4918--------------------------------------------
4919This diagnostic is enabled by default.
4920
4921**Diagnostic text:**
4922
4923+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4924|:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns floating-point number into bool:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
4925+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4926
4927
4928-Wimplicit-exception-spec-mismatch
4929----------------------------------
4930This diagnostic is enabled by default.
4931
4932**Diagnostic text:**
4933
4934+-----------------------------------------------------------------------------------+----------------------+----------------------------------------------------------------------+----------------------+-------------------------------------------+
4935|:warning:`warning:` |nbsp| :diagtext:`function previously declared with an` |nbsp| |+--------------------+| |nbsp| :diagtext:`exception specification redeclared with an` |nbsp| |+--------------------+| |nbsp| :diagtext:`exception specification`|
4936| ||:diagtext:`explicit`|| ||:diagtext:`implicit`|| |
4937| |+--------------------+| |+--------------------+| |
4938| ||:diagtext:`implicit`|| ||:diagtext:`explicit`|| |
4939| |+--------------------+| |+--------------------+| |
4940+-----------------------------------------------------------------------------------+----------------------+----------------------------------------------------------------------+----------------------+-------------------------------------------+
4941
4942
4943-Wimplicit-fallthrough
4944----------------------
4945Also controls `-Wimplicit-fallthrough-per-function`_.
4946
4947**Diagnostic text:**
4948
4949+---------------------------------------------------------------------------------+
4950|:warning:`warning:` |nbsp| :diagtext:`fallthrough annotation in unreachable code`|
4951+---------------------------------------------------------------------------------+
4952
4953+-------------------------------------------------------------------------------------+
4954|:warning:`warning:` |nbsp| :diagtext:`unannotated fall-through between switch labels`|
4955+-------------------------------------------------------------------------------------+
4956
4957
4958-Wimplicit-fallthrough-per-function
4959-----------------------------------
4960**Diagnostic text:**
4961
4962+------------------------------------------------------------------------------------------------------------------+
4963|:warning:`warning:` |nbsp| :diagtext:`unannotated fall-through between switch labels in partly-annotated function`|
4964+------------------------------------------------------------------------------------------------------------------+
4965
4966
4967-Wimplicit-function-declaration
4968-------------------------------
4969Some of the diagnostics controlled by this flag are enabled by default.
4970
4971**Diagnostic text:**
4972
4973+------------------------------------------------------------------------------------------------------------------------------------+
4974|:warning:`warning:` |nbsp| :diagtext:`implicit declaration of function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is invalid in C99`|
4975+------------------------------------------------------------------------------------------------------------------------------------+
4976
4977+---------------------------------------------------------------------------------------------------------------------------------------------+
4978|:warning:`warning:` |nbsp| :diagtext:`implicitly declaring library function '`:placeholder:`A`:diagtext:`' with type` |nbsp| :placeholder:`B`|
4979+---------------------------------------------------------------------------------------------------------------------------------------------+
4980
4981+---------------------------------------------------------------------------------+
4982|:error:`error:` |nbsp| :diagtext:`use of unknown builtin` |nbsp| :placeholder:`A`|
4983+---------------------------------------------------------------------------------+
4984
4985+-----------------------------------------------------------------------------------------------+
4986|:warning:`warning:` |nbsp| :diagtext:`implicit declaration of function` |nbsp| :placeholder:`A`|
4987+-----------------------------------------------------------------------------------------------+
4988
4989
4990-Wimplicit-int
4991--------------
4992This diagnostic is enabled by default.
4993
4994**Diagnostic text:**
4995
4996+--------------------------------------------------------------------------------+
4997|:warning:`warning:` |nbsp| :diagtext:`type specifier missing, defaults to 'int'`|
4998+--------------------------------------------------------------------------------+
4999
5000
5001-Wimplicit-retain-self
5002----------------------
5003**Diagnostic text:**
5004
5005+---------------------------------------------------------------------------------------------------------------------------------------+
5006|:warning:`warning:` |nbsp| :diagtext:`block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior`|
5007+---------------------------------------------------------------------------------------------------------------------------------------+
5008
5009
5010-Wimplicitly-unsigned-literal
5011-----------------------------
5012This diagnostic is enabled by default.
5013
5014**Diagnostic text:**
5015
5016+----------------------------------------------------------------------------------------------------------------------------------------+
5017|:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in a signed integer type, interpreting as unsigned`|
5018+----------------------------------------------------------------------------------------------------------------------------------------+
5019
5020
5021-Wimport
5022--------
5023This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
5024
5025-Wimport-preprocessor-directive-pedantic
5026----------------------------------------
5027**Diagnostic text:**
5028
5029+----------------------------------------------------------------------+
5030|:warning:`warning:` |nbsp| :diagtext:`#import is a language extension`|
5031+----------------------------------------------------------------------+
5032
5033
5034-Winaccessible-base
5035-------------------
5036This diagnostic is enabled by default.
5037
5038**Diagnostic text:**
5039
5040+-----------------------------------------------------------------------------------------------------------------------------------------------+
5041|:warning:`warning:` |nbsp| :diagtext:`direct base` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is inaccessible due to ambiguity:`:placeholder:`B`|
5042+-----------------------------------------------------------------------------------------------------------------------------------------------+
5043
5044
5045-Winclude-next-absolute-path
5046----------------------------
5047This diagnostic is enabled by default.
5048
5049**Diagnostic text:**
5050
5051+------------------------------------------------------------------------+
5052|:warning:`warning:` |nbsp| :diagtext:`#include\_next with absolute path`|
5053+------------------------------------------------------------------------+
5054
5055
5056-Winclude-next-outside-header
5057-----------------------------
5058This diagnostic is enabled by default.
5059
5060**Diagnostic text:**
5061
5062+----------------------------------------------------------------------------+
5063|:warning:`warning:` |nbsp| :diagtext:`#include\_next in primary source file`|
5064+----------------------------------------------------------------------------+
5065
5066
Richard Smithcf9f4222017-01-20 19:27:09 +00005067-Wincompatible-exception-spec
5068-----------------------------
5069This diagnostic is enabled by default.
5070
5071**Diagnostic text:**
5072
5073+--------------------------------------------------------------------------+----------------------+--------------------------------+
5074|:warning:`warning:` |nbsp| :diagtext:`exception specifications of` |nbsp| |+--------------------+| |nbsp| :diagtext:`types differ`|
5075| ||:diagtext:`return` || |
5076| |+--------------------+| |
5077| ||:diagtext:`argument`|| |
5078| |+--------------------+| |
5079+--------------------------------------------------------------------------+----------------------+--------------------------------+
5080
5081+-----------------------------------------------------------------------------------------------+
5082|:warning:`warning:` |nbsp| :diagtext:`target exception specification is not superset of source`|
5083+-----------------------------------------------------------------------------------------------+
5084
5085
Richard Smithb6a3b4b2016-09-12 05:58:29 +00005086-Wincompatible-function-pointer-types
5087-------------------------------------
5088This diagnostic is enabled by default.
5089
5090**Diagnostic text:**
5091
5092+----------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+
5093|:warning:`warning:` |nbsp| :diagtext:`incompatible function pointer types` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+|
5094| ||:diagtext:`assigning to different types` ||| ||
5095| |+--------------------------------------------------------------+|+-------------------------------------+|
5096| ||:diagtext:`passing to parameter of different type` |||:diagtext:`; dereference with \*` ||
5097| |+--------------------------------------------------------------+|+-------------------------------------+|
5098| ||:diagtext:`returning from function with different return type`|||:diagtext:`; take the address with &`||
5099| |+--------------------------------------------------------------+|+-------------------------------------+|
5100| ||:diagtext:`converting between types` |||:diagtext:`; remove \*` ||
5101| |+--------------------------------------------------------------+|+-------------------------------------+|
5102| ||:diagtext:`initializing with expression of different type` |||:diagtext:`; remove &` ||
5103| |+--------------------------------------------------------------+|+-------------------------------------+|
5104| ||:diagtext:`sending to parameter of different type` || |
5105| |+--------------------------------------------------------------+| |
5106| ||:diagtext:`casting between types` || |
5107| |+--------------------------------------------------------------+| |
5108+----------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+
5109
5110
5111-Wincompatible-library-redeclaration
5112------------------------------------
5113This diagnostic is enabled by default.
5114
5115**Diagnostic text:**
5116
5117+-------------------------------------------------------------------------------------------------------------+
5118|:warning:`warning:` |nbsp| :diagtext:`incompatible redeclaration of library function` |nbsp| :placeholder:`A`|
5119+-------------------------------------------------------------------------------------------------------------+
5120
5121
5122-Wincompatible-ms-struct
5123------------------------
5124This diagnostic is an error by default, but the flag ``-Wno-incompatible-ms-struct`` can be used to disable the error.
5125
5126**Diagnostic text:**
5127
5128+---------------------------------------------------------------------------------------------------------------------------------------------+
5129|:error:`error:` |nbsp| :diagtext:`ms\_struct may not produce Microsoft-compatible layouts for classes with base classes or virtual functions`|
5130+---------------------------------------------------------------------------------------------------------------------------------------------+
5131
5132
5133-Wincompatible-pointer-types
5134----------------------------
5135This diagnostic is enabled by default.
5136
Richard Smith8cba2912016-09-14 01:55:42 +00005137Also controls `-Wincompatible-function-pointer-types`_, `-Wincompatible-pointer-types-discards-qualifiers`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00005138
5139**Diagnostic text:**
5140
5141+-------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+
5142|:warning:`warning:` |nbsp| :diagtext:`incompatible pointer types` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+|
5143| ||:diagtext:`assigning to different types` ||| ||
5144| |+--------------------------------------------------------------+|+-------------------------------------+|
5145| ||:diagtext:`passing to parameter of different type` |||:diagtext:`; dereference with \*` ||
5146| |+--------------------------------------------------------------+|+-------------------------------------+|
5147| ||:diagtext:`returning from function with different return type`|||:diagtext:`; take the address with &`||
5148| |+--------------------------------------------------------------+|+-------------------------------------+|
5149| ||:diagtext:`converting between types` |||:diagtext:`; remove \*` ||
5150| |+--------------------------------------------------------------+|+-------------------------------------+|
5151| ||:diagtext:`initializing with expression of different type` |||:diagtext:`; remove &` ||
5152| |+--------------------------------------------------------------+|+-------------------------------------+|
5153| ||:diagtext:`sending to parameter of different type` || |
5154| |+--------------------------------------------------------------+| |
5155| ||:diagtext:`casting between types` || |
5156| |+--------------------------------------------------------------+| |
5157+-------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+
5158
5159
5160-Wincompatible-pointer-types-discards-qualifiers
5161------------------------------------------------
5162This diagnostic is enabled by default.
5163
5164**Diagnostic text:**
5165
5166+---------------------------+----------------------------------------------------------------+---------------------------------------------------------------+
5167|:warning:`warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`discards qualifiers in nested pointer types`|
5168| ||:diagtext:`assigning to different types` || |
5169| |+--------------------------------------------------------------+| |
5170| ||:diagtext:`passing to parameter of different type` || |
5171| |+--------------------------------------------------------------+| |
5172| ||:diagtext:`returning from function with different return type`|| |
5173| |+--------------------------------------------------------------+| |
5174| ||:diagtext:`converting between types` || |
5175| |+--------------------------------------------------------------+| |
5176| ||:diagtext:`initializing with expression of different type` || |
5177| |+--------------------------------------------------------------+| |
5178| ||:diagtext:`sending to parameter of different type` || |
5179| |+--------------------------------------------------------------+| |
5180| ||:diagtext:`casting between types` || |
5181| |+--------------------------------------------------------------+| |
5182+---------------------------+----------------------------------------------------------------+---------------------------------------------------------------+
5183
5184+---------------------------+----------------------------------------------------------------+---------------------------------------+
5185|:warning:`warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`discards qualifiers`|
5186| ||:diagtext:`assigning to different types` || |
5187| |+--------------------------------------------------------------+| |
5188| ||:diagtext:`passing to parameter of different type` || |
5189| |+--------------------------------------------------------------+| |
5190| ||:diagtext:`returning from function with different return type`|| |
5191| |+--------------------------------------------------------------+| |
5192| ||:diagtext:`converting between types` || |
5193| |+--------------------------------------------------------------+| |
5194| ||:diagtext:`initializing with expression of different type` || |
5195| |+--------------------------------------------------------------+| |
5196| ||:diagtext:`sending to parameter of different type` || |
5197| |+--------------------------------------------------------------+| |
5198| ||:diagtext:`casting between types` || |
5199| |+--------------------------------------------------------------+| |
5200+---------------------------+----------------------------------------------------------------+---------------------------------------+
5201
5202
5203-Wincompatible-property-type
5204----------------------------
5205This diagnostic is enabled by default.
5206
5207**Diagnostic text:**
5208
5209+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5210|:warning:`warning:` |nbsp| :diagtext:`property type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`inherited from` |nbsp| :placeholder:`C`|
5211+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5212
5213
5214-Wincompatible-sysroot
5215----------------------
5216This diagnostic is enabled by default.
5217
5218**Diagnostic text:**
5219
5220+------------------------------------------------------------------------------------------------------------------------------------+
5221|:warning:`warning:` |nbsp| :diagtext:`using sysroot for '`:placeholder:`A`:diagtext:`' but targeting '`:placeholder:`B`:diagtext:`'`|
5222+------------------------------------------------------------------------------------------------------------------------------------+
5223
5224
5225-Wincomplete-implementation
5226---------------------------
5227This diagnostic is enabled by default.
5228
5229**Diagnostic text:**
5230
5231+-----------------------------------------------------------------------------------------------------------------+
5232|:warning:`warning:` |nbsp| :diagtext:`method definition for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found`|
5233+-----------------------------------------------------------------------------------------------------------------+
5234
5235
5236-Wincomplete-module
5237-------------------
5238Some of the diagnostics controlled by this flag are enabled by default.
5239
5240Controls `-Wincomplete-umbrella`_, `-Wnon-modular-include-in-module`_.
5241
5242
5243-Wincomplete-umbrella
5244---------------------
5245This diagnostic is enabled by default.
5246
5247**Diagnostic text:**
5248
5249+---------------------------------------------------------------------------------------+
5250|:warning:`warning:` |nbsp| :diagtext:`missing submodule '`:placeholder:`A`:diagtext:`'`|
5251+---------------------------------------------------------------------------------------+
5252
5253+-------------------------------------------------------------------------------------------------------------------------------------------------------+
5254|:warning:`warning:` |nbsp| :diagtext:`umbrella header for module '`:placeholder:`A`:diagtext:`' does not include header '`:placeholder:`B`:diagtext:`'`|
5255+-------------------------------------------------------------------------------------------------------------------------------------------------------+
5256
5257
5258-Winconsistent-dllimport
5259------------------------
5260This diagnostic is enabled by default.
5261
5262**Diagnostic text:**
5263
5264+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5265|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`redeclared without` |nbsp| :placeholder:`B` |nbsp| :diagtext:`attribute: previous` |nbsp| :placeholder:`B` |nbsp| :diagtext:`ignored`|
5266+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5267
5268+------------------------------------------------------------------------------------------------------------------------------------+
5269|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`redeclared without 'dllimport' attribute: 'dllexport' attribute added`|
5270+------------------------------------------------------------------------------------------------------------------------------------+
5271
5272
Richard Smith9a016602017-04-13 22:44:22 +00005273-Winconsistent-missing-destructor-override
5274------------------------------------------
5275**Diagnostic text:**
5276
5277+------------------------------------------------------------------------------------------------------------------+
5278|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`overrides a destructor but is not marked 'override'`|
5279+------------------------------------------------------------------------------------------------------------------+
5280
5281
Richard Smithb6a3b4b2016-09-12 05:58:29 +00005282-Winconsistent-missing-override
5283-------------------------------
5284This diagnostic is enabled by default.
5285
5286**Diagnostic text:**
5287
5288+-----------------------------------------------------------------------------------------------------------------------+
5289|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`overrides a member function but is not marked 'override'`|
5290+-----------------------------------------------------------------------------------------------------------------------+
5291
5292
5293-Wincrement-bool
5294----------------
5295This diagnostic is enabled by default.
5296
5297Also controls `-Wdeprecated-increment-bool`_.
5298
5299**Diagnostic text:**
5300
5301+------------------------------------------------------------------------------------------------+
5302|:error:`error:` |nbsp| :diagtext:`ISO C++1z does not allow incrementing expression of type bool`|
5303+------------------------------------------------------------------------------------------------+
5304
5305
5306-Winfinite-recursion
5307--------------------
5308**Diagnostic text:**
5309
5310+---------------------------------------------------------------------------------------+
5311|:warning:`warning:` |nbsp| :diagtext:`all paths through this function will call itself`|
5312+---------------------------------------------------------------------------------------+
5313
5314
5315-Winit-self
5316-----------
5317This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
5318
5319-Winitializer-overrides
5320-----------------------
5321This diagnostic is enabled by default.
5322
5323**Diagnostic text:**
5324
5325+---------------------------------------------------------------------------------------------------+
5326|:warning:`warning:` |nbsp| :diagtext:`initializer overrides prior initialization of this subobject`|
5327+---------------------------------------------------------------------------------------------------+
5328
5329+---------------------------------------------------------------------------------------------------------------------------------------+
5330|:warning:`warning:` |nbsp| :diagtext:`subobject initialization overrides initialization of other fields within its enclosing subobject`|
5331+---------------------------------------------------------------------------------------------------------------------------------------+
5332
5333
Richard Smithcf9f4222017-01-20 19:27:09 +00005334-Winjected-class-name
5335---------------------
5336This diagnostic is enabled by default.
5337
5338**Diagnostic text:**
5339
5340+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+------------------------+---------------------------+
5341|:warning:`warning:` |nbsp| :diagtext:`ISO C++ specifies that qualified reference to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a constructor name rather than a` |nbsp| |+-------------------------+| |nbsp| :diagtext:`in this context, despite preceding` |nbsp| |+----------------------+| |nbsp| :diagtext:`keyword`|
5342| ||:diagtext:`template name`|| ||:diagtext:`'typename'`|| |
5343| |+-------------------------+| |+----------------------+| |
5344| ||:diagtext:`type` || ||:diagtext:`'template'`|| |
5345| |+-------------------------+| |+----------------------+| |
5346+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+------------------------+---------------------------+
5347
5348
Richard Smithb6a3b4b2016-09-12 05:58:29 +00005349-Winline
5350--------
5351This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
5352
5353-Winline-asm
5354------------
5355This diagnostic is enabled by default.
5356
5357**Diagnostic text:**
5358
5359The text of this diagnostic is not controlled by Clang.
5360
5361
5362-Winline-new-delete
5363-------------------
5364This diagnostic is enabled by default.
5365
5366**Diagnostic text:**
5367
5368+----------------------------------------------------------------------------------------------------------------------------------+
5369|:warning:`warning:` |nbsp| :diagtext:`replacement function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be declared 'inline'`|
5370+----------------------------------------------------------------------------------------------------------------------------------+
5371
5372
5373-Winstantiation-after-specialization
5374------------------------------------
5375This diagnostic is enabled by default.
5376
5377**Diagnostic text:**
5378
5379+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5380|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`that occurs after an explicit specialization has no effect`|
5381+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5382
5383
5384-Wint-conversion
5385----------------
5386This diagnostic is enabled by default.
5387
5388**Diagnostic text:**
5389
5390+-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+
5391|:warning:`warning:` |nbsp| :diagtext:`incompatible integer to pointer conversion` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+|
5392| ||:diagtext:`assigning to different types` ||| ||
5393| |+--------------------------------------------------------------+|+-------------------------------------+|
5394| ||:diagtext:`passing to parameter of different type` |||:diagtext:`; dereference with \*` ||
5395| |+--------------------------------------------------------------+|+-------------------------------------+|
5396| ||:diagtext:`returning from function with different return type`|||:diagtext:`; take the address with &`||
5397| |+--------------------------------------------------------------+|+-------------------------------------+|
5398| ||:diagtext:`converting between types` |||:diagtext:`; remove \*` ||
5399| |+--------------------------------------------------------------+|+-------------------------------------+|
5400| ||:diagtext:`initializing with expression of different type` |||:diagtext:`; remove &` ||
5401| |+--------------------------------------------------------------+|+-------------------------------------+|
5402| ||:diagtext:`sending to parameter of different type` || |
5403| |+--------------------------------------------------------------+| |
5404| ||:diagtext:`casting between types` || |
5405| |+--------------------------------------------------------------+| |
5406+-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+
5407
5408+-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+
5409|:warning:`warning:` |nbsp| :diagtext:`incompatible pointer to integer conversion` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+|
5410| ||:diagtext:`assigning to different types` ||| ||
5411| |+--------------------------------------------------------------+|+-------------------------------------+|
5412| ||:diagtext:`passing to parameter of different type` |||:diagtext:`; dereference with \*` ||
5413| |+--------------------------------------------------------------+|+-------------------------------------+|
5414| ||:diagtext:`returning from function with different return type`|||:diagtext:`; take the address with &`||
5415| |+--------------------------------------------------------------+|+-------------------------------------+|
5416| ||:diagtext:`converting between types` |||:diagtext:`; remove \*` ||
5417| |+--------------------------------------------------------------+|+-------------------------------------+|
5418| ||:diagtext:`initializing with expression of different type` |||:diagtext:`; remove &` ||
5419| |+--------------------------------------------------------------+|+-------------------------------------+|
5420| ||:diagtext:`sending to parameter of different type` || |
5421| |+--------------------------------------------------------------+| |
5422| ||:diagtext:`casting between types` || |
5423| |+--------------------------------------------------------------+| |
5424+-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+
5425
5426
5427-Wint-conversions
5428-----------------
5429Synonym for `-Wint-conversion`_.
5430
5431
5432-Wint-to-pointer-cast
5433---------------------
5434This diagnostic is enabled by default.
5435
5436Also controls `-Wint-to-void-pointer-cast`_.
5437
5438**Diagnostic text:**
5439
5440+-------------------------------------------------------------------------------------------------------------------------------------------+
5441|:warning:`warning:` |nbsp| :diagtext:`cast to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from smaller integer type` |nbsp| :placeholder:`A`|
5442+-------------------------------------------------------------------------------------------------------------------------------------------+
5443
5444
5445-Wint-to-void-pointer-cast
5446--------------------------
5447This diagnostic is enabled by default.
5448
5449**Diagnostic text:**
5450
5451+-------------------------------------------------------------------------------------------------------------------------------------------+
5452|:warning:`warning:` |nbsp| :diagtext:`cast to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from smaller integer type` |nbsp| :placeholder:`A`|
5453+-------------------------------------------------------------------------------------------------------------------------------------------+
5454
5455
5456-Winteger-overflow
5457------------------
5458This diagnostic is enabled by default.
5459
5460**Diagnostic text:**
5461
5462+-----------------------------------------------------------------------------------------------------------------------------------------------------+
5463|:warning:`warning:` |nbsp| :diagtext:`overflow in expression; result is` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with type` |nbsp| :placeholder:`B`|
5464+-----------------------------------------------------------------------------------------------------------------------------------------------------+
5465
5466
5467-Winvalid-command-line-argument
5468-------------------------------
5469This diagnostic is enabled by default.
5470
5471Also controls `-Wignored-optimization-argument`_.
5472
5473**Diagnostic text:**
5474
5475+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5476|:warning:`warning:` |nbsp| :diagtext:`optimization level '`:placeholder:`A`:diagtext:`' is not supported; using '`:placeholder:`B`:placeholder:`C`:diagtext:`' instead`|
5477+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5478
5479
5480-Winvalid-constexpr
5481-------------------
5482This diagnostic is an error by default, but the flag ``-Wno-invalid-constexpr`` can be used to disable the error.
5483
5484**Diagnostic text:**
5485
5486+----------------------------------------------------+-------------------------+--------------------------------------------------------+
5487|:error:`error:` |nbsp| :diagtext:`constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`never produces a constant expression`|
5488| ||:diagtext:`function` || |
5489| |+-----------------------+| |
5490| ||:diagtext:`constructor`|| |
5491| |+-----------------------+| |
5492+----------------------------------------------------+-------------------------+--------------------------------------------------------+
5493
5494
5495-Winvalid-iboutlet
5496------------------
5497This diagnostic is enabled by default.
5498
5499**Diagnostic text:**
5500
5501+---------------------------+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
5502|:warning:`warning:` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute must be an object type (invalid` |nbsp| :placeholder:`B`:diagtext:`)`|
5503| ||:diagtext:`instance variable`|| |
5504| |+-----------------------------+| |
5505| ||:diagtext:`property` || |
5506| |+-----------------------------+| |
5507+---------------------------+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
5508
5509+---------------------------------------------------------------------------------------------------------+
5510|:warning:`warning:` |nbsp| :diagtext:`IBOutletCollection properties should be copy/strong and not assign`|
5511+---------------------------------------------------------------------------------------------------------+
5512
5513
5514-Winvalid-initializer-from-system-header
5515----------------------------------------
5516This diagnostic is enabled by default.
5517
5518**Diagnostic text:**
5519
5520+--------------------------------------------------------------------------------------------------------------+
5521|:warning:`warning:` |nbsp| :diagtext:`invalid constructor form class in system header, should not be explicit`|
5522+--------------------------------------------------------------------------------------------------------------+
5523
5524
5525-Winvalid-noreturn
5526------------------
5527This diagnostic is enabled by default.
5528
5529**Diagnostic text:**
5530
5531+-------------------------------------------------------------------------------------+
5532|:warning:`warning:` |nbsp| :diagtext:`function declared 'noreturn' should not return`|
5533+-------------------------------------------------------------------------------------+
5534
5535+--------------------------------------------------------------------------------------------------------------------------------+
5536|:warning:`warning:` |nbsp| :diagtext:`function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared 'noreturn' should not return`|
5537+--------------------------------------------------------------------------------------------------------------------------------+
5538
5539
5540-Winvalid-offsetof
5541------------------
5542This diagnostic is enabled by default.
5543
5544**Diagnostic text:**
5545
5546+----------------------------------------------------------------------------------------+
5547|:warning:`warning:` |nbsp| :diagtext:`offset of on non-POD type` |nbsp| :placeholder:`A`|
5548+----------------------------------------------------------------------------------------+
5549
5550+----------------------------------------------------------------------------------------------------+
5551|:warning:`warning:` |nbsp| :diagtext:`offset of on non-standard-layout type` |nbsp| :placeholder:`A`|
5552+----------------------------------------------------------------------------------------------------+
5553
5554
5555-Winvalid-or-nonexistent-directory
5556----------------------------------
5557Some of the diagnostics controlled by this flag are enabled by default.
5558
5559**Diagnostic text:**
5560
5561+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5562|:warning:`warning:` |nbsp| :diagtext:`environment variable SCE\_ORBIS\_SDK\_DIR is set, but points to invalid or nonexistent directory '`:placeholder:`A`:diagtext:`'`|
5563+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5564
5565+------------------------------------------------------------------------------------------------------------------------------------------------------------+
5566|:warning:`warning:` |nbsp| :diagtext:`unable to find` |nbsp| :placeholder:`A` |nbsp| :diagtext:`directory, expected to be in '`:placeholder:`B`:diagtext:`'`|
5567+------------------------------------------------------------------------------------------------------------------------------------------------------------+
5568
5569
Richard Smithcf9f4222017-01-20 19:27:09 +00005570-Winvalid-partial-specialization
5571--------------------------------
5572This diagnostic is an error by default, but the flag ``-Wno-invalid-partial-specialization`` can be used to disable the error.
5573
5574**Diagnostic text:**
5575
5576+-----------------------+----------------------+-----------------------------------------------------------------------------------------------------+
5577|:error:`error:` |nbsp| |+--------------------+| |nbsp| :diagtext:`template partial specialization is not more specialized than the primary template`|
5578| ||:diagtext:`class` || |
5579| |+--------------------+| |
5580| ||:diagtext:`variable`|| |
5581| |+--------------------+| |
5582+-----------------------+----------------------+-----------------------------------------------------------------------------------------------------+
5583
5584
Richard Smithb6a3b4b2016-09-12 05:58:29 +00005585-Winvalid-pch
5586-------------
5587This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
5588
5589-Winvalid-pp-token
5590------------------
5591This diagnostic is enabled by default.
5592
5593**Diagnostic text:**
5594
5595+---------------------------------------------------------------+
5596|:warning:`warning:` |nbsp| :diagtext:`empty character constant`|
5597+---------------------------------------------------------------+
5598
5599+------------------------------------------------------------------+-----------------+-----------------------------+
5600|:warning:`warning:` |nbsp| :diagtext:`missing terminating` |nbsp| |+---------------+| |nbsp| :diagtext:`character`|
5601| ||:diagtext:`'` || |
5602| |+---------------+| |
5603| ||:diagtext:`'"'`|| |
5604| |+---------------+| |
5605+------------------------------------------------------------------+-----------------+-----------------------------+
5606
5607
5608-Winvalid-source-encoding
5609-------------------------
5610This diagnostic is enabled by default.
5611
5612**Diagnostic text:**
5613
5614+--------------------------------------------------------------------------------------+
5615|:warning:`warning:` |nbsp| :diagtext:`illegal character encoding in character literal`|
5616+--------------------------------------------------------------------------------------+
5617
5618+-----------------------------------------------------------------------------------+
5619|:warning:`warning:` |nbsp| :diagtext:`illegal character encoding in string literal`|
5620+-----------------------------------------------------------------------------------+
5621
5622
5623-Winvalid-token-paste
5624---------------------
5625This diagnostic is an error by default, but the flag ``-Wno-invalid-token-paste`` can be used to disable the error.
5626
5627**Diagnostic text:**
5628
5629+----------------------------------------------------------------------------------------------------------------+
5630|:error:`error:` |nbsp| :diagtext:`pasting formed '`:placeholder:`A`:diagtext:`', an invalid preprocessing token`|
5631+----------------------------------------------------------------------------------------------------------------+
5632
5633
5634-Wjump-seh-finally
5635------------------
5636This diagnostic is enabled by default.
5637
5638**Diagnostic text:**
5639
5640+-------------------------------------------------------------------------------------------+
5641|:warning:`warning:` |nbsp| :diagtext:`jump out of \_\_finally block has undefined behavior`|
5642+-------------------------------------------------------------------------------------------+
5643
5644
5645-Wkeyword-compat
5646----------------
5647This diagnostic is enabled by default.
5648
5649**Diagnostic text:**
5650
5651+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------+
5652|:warning:`warning:` |nbsp| :diagtext:`keyword '`:placeholder:`A`:diagtext:`' will be made available as an identifier` |nbsp| |+-----------------------------------------------------+|
5653| ||:diagtext:`here` ||
5654| |+-----------------------------------------------------+|
5655| ||:diagtext:`for the remainder of the translation unit`||
5656| |+-----------------------------------------------------+|
5657+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------+
5658
5659
5660-Wkeyword-macro
5661---------------
5662**Diagnostic text:**
5663
5664+----------------------------------------------------------------------------+
5665|:warning:`warning:` |nbsp| :diagtext:`keyword is hidden by macro definition`|
5666+----------------------------------------------------------------------------+
5667
5668
5669-Wknr-promoted-parameter
5670------------------------
5671This diagnostic is enabled by default.
5672
5673**Diagnostic text:**
5674
5675+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5676|:warning:`warning:` |nbsp| :diagtext:`promoted type of K&R function parameter is not compatible with parameter type` |nbsp| :diagtext:`declared in a previous prototype`|
5677+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5678
5679
5680-Wlanguage-extension-token
5681--------------------------
5682**Diagnostic text:**
5683
5684+-----------------------------------------------------+
5685|:warning:`warning:` |nbsp| :diagtext:`extension used`|
5686+-----------------------------------------------------+
5687
5688
5689-Wlarge-by-value-copy
5690---------------------
5691This diagnostic is enabled by default.
5692
5693**Diagnostic text:**
5694
5695+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5696|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a large (`:placeholder:`B` |nbsp| :diagtext:`bytes) pass-by-value argument; pass it by reference instead ?`|
5697+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5698
5699+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5700|:warning:`warning:` |nbsp| :diagtext:`return value of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a large (`:placeholder:`B` |nbsp| :diagtext:`bytes) pass-by-value object; pass it by reference instead ?`|
5701+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5702
5703
5704-Wliblto
5705--------
Richard Smithcf9f4222017-01-20 19:27:09 +00005706This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00005707
5708-Wliteral-conversion
5709--------------------
5710This diagnostic is enabled by default.
5711
5712**Diagnostic text:**
5713
5714+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5715|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`|
5716+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5717
5718
5719-Wliteral-range
5720---------------
5721This diagnostic is enabled by default.
5722
5723**Diagnostic text:**
5724
5725+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5726|:warning:`warning:` |nbsp| :diagtext:`magnitude of floating-point constant too large for type` |nbsp| :placeholder:`A`:diagtext:`; maximum is` |nbsp| :placeholder:`B`|
5727+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5728
5729+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5730|:warning:`warning:` |nbsp| :diagtext:`magnitude of floating-point constant too small for type` |nbsp| :placeholder:`A`:diagtext:`; minimum is` |nbsp| :placeholder:`B`|
5731+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5732
5733
5734-Wlocal-type-template-args
5735--------------------------
5736Some of the diagnostics controlled by this flag are enabled by default.
5737
5738Also controls `-Wc++98-compat-local-type-template-args`_.
5739
5740**Diagnostic text:**
5741
5742+------------------------------------------------------------------------------------------------+
5743|:warning:`warning:` |nbsp| :diagtext:`template argument uses local type` |nbsp| :placeholder:`A`|
5744+------------------------------------------------------------------------------------------------+
5745
5746
5747-Wlogical-not-parentheses
5748-------------------------
5749This diagnostic is enabled by default.
5750
5751**Diagnostic text:**
5752
Richard Smithcf9f4222017-01-20 19:27:09 +00005753+--------------------------------------------------------------------------------------------------------+------------------------------+
5754|:warning:`warning:` |nbsp| :diagtext:`logical not is only applied to the left hand side of this` |nbsp| |+----------------------------+|
5755| ||:diagtext:`comparison` ||
5756| |+----------------------------+|
5757| ||:diagtext:`bitwise operator`||
5758| |+----------------------------+|
5759+--------------------------------------------------------------------------------------------------------+------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00005760
5761
5762-Wlogical-op-parentheses
5763------------------------
5764This diagnostic is enabled by default.
5765
5766**Diagnostic text:**
5767
5768+---------------------------------------------------------+
5769|:warning:`warning:` |nbsp| :diagtext:`'&&' within '\|\|'`|
5770+---------------------------------------------------------+
5771
5772
5773-Wlong-long
5774-----------
5775Also controls `-Wc++11-long-long`_.
5776
5777**Diagnostic text:**
5778
5779+-----------------------------------------------------------------------------------------------+
5780|:warning:`warning:` |nbsp| :diagtext:`'long long' is an extension when C99 mode is not enabled`|
5781+-----------------------------------------------------------------------------------------------+
5782
5783
5784-Wloop-analysis
5785---------------
5786Controls `-Wfor-loop-analysis`_, `-Wrange-loop-analysis`_.
5787
5788
5789-Wmacro-redefined
5790-----------------
5791This diagnostic is enabled by default.
5792
5793**Diagnostic text:**
5794
5795+------------------------------------------------------------------------------+
5796|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`macro redefined`|
5797+------------------------------------------------------------------------------+
5798
5799
5800-Wmain
5801------
5802Some of the diagnostics controlled by this flag are enabled by default.
5803
5804**Diagnostic text:**
5805
5806+--------------------------------------------------------------------------------------------+
5807|:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow 'main' to be used by a program`|
5808+--------------------------------------------------------------------------------------------+
5809
5810+--------------------------------------------------------------------------------------+
5811|:warning:`warning:` |nbsp| :diagtext:`'main' is not allowed to be declared \_Noreturn`|
5812+--------------------------------------------------------------------------------------+
5813
5814+------------------------------------------------------------------------------------+
5815|:warning:`warning:` |nbsp| :diagtext:`'main' is not allowed to be declared variadic`|
5816+------------------------------------------------------------------------------------+
5817
5818+-------------------------------------------------------------------------------+
5819|:warning:`warning:` |nbsp| :diagtext:`only one parameter on 'main' declaration`|
5820+-------------------------------------------------------------------------------+
5821
5822+---------------------------------------------------------------------------------------------------------+
5823|:warning:`warning:` |nbsp| :diagtext:`variable named 'main' with external linkage has undefined behavior`|
5824+---------------------------------------------------------------------------------------------------------+
5825
Richard Smithcf9f4222017-01-20 19:27:09 +00005826+------------------------------------------------------------------------+
5827|:warning:`warning:` |nbsp| :diagtext:`bool literal returned from 'main'`|
5828+------------------------------------------------------------------------+
5829
Richard Smithb6a3b4b2016-09-12 05:58:29 +00005830+---------------------------------------------------------------------------+
5831|:warning:`warning:` |nbsp| :diagtext:`'main' should not be declared static`|
5832+---------------------------------------------------------------------------+
5833
5834
5835-Wmain-return-type
5836------------------
5837This diagnostic is enabled by default.
5838
5839**Diagnostic text:**
5840
5841+-------------------------------------------------------------------------+
5842|:warning:`warning:` |nbsp| :diagtext:`return type of 'main' is not 'int'`|
5843+-------------------------------------------------------------------------+
5844
5845
5846-Wmalformed-warning-check
5847-------------------------
5848This diagnostic is enabled by default.
5849
5850**Diagnostic text:**
5851
5852+---------------------------------------------------------------------------------------------+
5853|:warning:`warning:` |nbsp| :diagtext:`\_\_has\_warning expected option name (e.g. "-Wundef")`|
5854+---------------------------------------------------------------------------------------------+
5855
5856
5857-Wmany-braces-around-scalar-init
5858--------------------------------
5859This diagnostic is enabled by default.
5860
5861**Diagnostic text:**
5862
5863+--------------------------------------------------------------------------------+
5864|:warning:`warning:` |nbsp| :diagtext:`too many braces around scalar initializer`|
5865+--------------------------------------------------------------------------------+
5866
5867
Richard Smithcf9f4222017-01-20 19:27:09 +00005868-Wmax-unsigned-zero
5869-------------------
5870This diagnostic is enabled by default.
5871
5872**Diagnostic text:**
5873
5874+----------------------------------------------------------------+---------------------------------------+------------------------------------------------------+
5875|:warning:`warning:` |nbsp| :diagtext:`taking the max of` |nbsp| |+-------------------------------------+| |nbsp| :diagtext:`is always equal to the other value`|
5876| ||:diagtext:`a value and unsigned zero`|| |
5877| |+-------------------------------------+| |
5878| ||:diagtext:`unsigned zero and a value`|| |
5879| |+-------------------------------------+| |
5880+----------------------------------------------------------------+---------------------------------------+------------------------------------------------------+
5881
5882
Richard Smithb6a3b4b2016-09-12 05:58:29 +00005883-Wmemsize-comparison
5884--------------------
5885This diagnostic is enabled by default.
5886
5887**Diagnostic text:**
5888
5889+-----------------------------------------------------------------------------------------------------------------------+
5890|:warning:`warning:` |nbsp| :diagtext:`size argument in` |nbsp| :placeholder:`A` |nbsp| :diagtext:`call is a comparison`|
5891+-----------------------------------------------------------------------------------------------------------------------+
5892
5893
5894-Wmethod-signatures
5895-------------------
5896**Diagnostic text:**
5897
5898+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5899|:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in implementation of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp| :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`|
5900+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5901
5902+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5903|:warning:`warning:` |nbsp| :diagtext:`conflicting return type in implementation of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp| :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`|
5904+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5905
5906
5907-Wmicrosoft
5908-----------
5909Some of the diagnostics controlled by this flag are enabled by default.
5910
Richard Smith8cba2912016-09-14 01:55:42 +00005911Controls `-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`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00005912
5913
5914-Wmicrosoft-anon-tag
5915--------------------
5916Some of the diagnostics controlled by this flag are enabled by default.
5917
5918**Diagnostic text:**
5919
5920+-----------------------------------------------------------------------------+--------------------+---------------------------------------------+
5921|:warning:`warning:` |nbsp| :diagtext:`types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`are a Microsoft extension`|
5922| ||:diagtext:`struct`|| |
5923| |+------------------+| |
5924| ||:diagtext:`union` || |
5925| |+------------------+| |
5926+-----------------------------------------------------------------------------+--------------------+---------------------------------------------+
5927
5928+--------------------------------------------------------+---------------------+---------------------------------------------+
5929|:warning:`warning:` |nbsp| :diagtext:`anonymous` |nbsp| |+-------------------+| |nbsp| :diagtext:`are a Microsoft extension`|
5930| ||:diagtext:`structs`|| |
5931| |+-------------------+| |
5932| ||:diagtext:`unions` || |
5933| |+-------------------+| |
5934+--------------------------------------------------------+---------------------+---------------------------------------------+
5935
5936
5937-Wmicrosoft-cast
5938----------------
5939This diagnostic is enabled by default.
5940
5941**Diagnostic text:**
5942
5943+------------------------------------------------------------------------------------------------------------------------------+
5944|:warning:`warning:` |nbsp| :diagtext:`static\_cast between pointer-to-function and pointer-to-object is a Microsoft extension`|
5945+------------------------------------------------------------------------------------------------------------------------------+
5946
5947+-------------------------------------------------------------------------------------------------------------------------------------+
5948|:warning:`warning:` |nbsp| :diagtext:`implicit conversion between pointer-to-function and pointer-to-object is a Microsoft extension`|
5949+-------------------------------------------------------------------------------------------------------------------------------------+
5950
5951
5952-Wmicrosoft-charize
5953-------------------
5954**Diagnostic text:**
5955
5956+-------------------------------------------------------------------------------------+
5957|:warning:`warning:` |nbsp| :diagtext:`charizing operator #@ is a Microsoft extension`|
5958+-------------------------------------------------------------------------------------+
5959
5960
5961-Wmicrosoft-comment-paste
5962-------------------------
5963**Diagnostic text:**
5964
5965+----------------------------------------------------------------------------------------------------------+
5966|:warning:`warning:` |nbsp| :diagtext:`pasting two '/' tokens into a '//' comment is a Microsoft extension`|
5967+----------------------------------------------------------------------------------------------------------+
5968
5969
5970-Wmicrosoft-const-init
5971----------------------
5972This diagnostic is enabled by default.
5973
5974**Diagnostic text:**
5975
5976+----------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+--------------------------------------------+
5977|:warning:`warning:` |nbsp| :diagtext:`default initialization of an object of const type` |nbsp| :placeholder:`A`|+---------------------------------------------------------------+| |nbsp| :diagtext:`is a Microsoft extension`|
5978| || || |
5979| |+---------------------------------------------------------------+| |
5980| || |nbsp| :diagtext:`without a user-provided default constructor`|| |
5981| |+---------------------------------------------------------------+| |
5982+----------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+--------------------------------------------+
5983
5984
5985-Wmicrosoft-cpp-macro
5986---------------------
5987**Diagnostic text:**
5988
5989+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
5990|:warning:`warning:` |nbsp| :diagtext:`C++ operator` |nbsp| :placeholder:`A` |nbsp| :diagtext:`(aka` |nbsp| :placeholder:`B`:diagtext:`) used as a macro name`|
5991+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
5992
5993
5994-Wmicrosoft-default-arg-redefinition
5995------------------------------------
5996This diagnostic is enabled by default.
5997
5998**Diagnostic text:**
5999
6000+-----------------------------------------------------------------------+
6001|:warning:`warning:` |nbsp| :diagtext:`redefinition of default argument`|
6002+-----------------------------------------------------------------------+
6003
6004
6005-Wmicrosoft-end-of-file
6006-----------------------
6007**Diagnostic text:**
6008
6009+----------------------------------------------------------------------------------------------+
6010|:warning:`warning:` |nbsp| :diagtext:`treating Ctrl-Z as end-of-file is a Microsoft extension`|
6011+----------------------------------------------------------------------------------------------+
6012
6013
6014-Wmicrosoft-enum-forward-reference
6015----------------------------------
6016**Diagnostic text:**
6017
6018+---------------------------------------------------------------------------------------------------+
6019|:warning:`warning:` |nbsp| :diagtext:`forward references to 'enum' types are a Microsoft extension`|
6020+---------------------------------------------------------------------------------------------------+
6021
6022
6023-Wmicrosoft-enum-value
6024----------------------
6025This diagnostic is enabled by default.
6026
6027**Diagnostic text:**
6028
6029+---------------------------------------------------------------------------------------------------------------------------+
6030|:warning:`warning:` |nbsp| :diagtext:`enumerator value is not representable in the underlying type` |nbsp| :placeholder:`A`|
6031+---------------------------------------------------------------------------------------------------------------------------+
6032
6033
6034-Wmicrosoft-exception-spec
6035--------------------------
6036Some of the diagnostics controlled by this flag are enabled by default.
6037
6038**Diagnostic text:**
6039
6040+------------------------------------------------------------------------------------------------+
6041|:warning:`warning:` |nbsp| :diagtext:`exception specification of '...' is a Microsoft extension`|
6042+------------------------------------------------------------------------------------------------+
6043
6044+---------------------------+----------------------------------+----------------------------------------------------------------------------------------------------------------+
6045|:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`incomplete type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is not allowed in exception specification`|
6046| || || |
6047| |+--------------------------------+| |
6048| ||:diagtext:`pointer to` |nbsp| || |
6049| |+--------------------------------+| |
6050| ||:diagtext:`reference to` |nbsp| || |
6051| |+--------------------------------+| |
6052+---------------------------+----------------------------------+----------------------------------------------------------------------------------------------------------------+
6053
6054+-----------------------------------------------------------------------------------------------------------------+
6055|:warning:`warning:` |nbsp| :diagtext:`exception specification in declaration does not match previous declaration`|
6056+-----------------------------------------------------------------------------------------------------------------+
6057
6058+------------------------------------------------------------------------------------------------------------------------+
6059|:warning:`warning:` |nbsp| :diagtext:`exception specification in explicit instantiation does not match instantiated one`|
6060+------------------------------------------------------------------------------------------------------------------------+
6061
6062+--------------------------------------------------------------------------------------------------------------------------------+
6063|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is missing exception specification '`:placeholder:`B`:diagtext:`'`|
6064+--------------------------------------------------------------------------------------------------------------------------------+
6065
6066+-------------------------------------------------------------------------------------------------------------------+
6067|:warning:`warning:` |nbsp| :diagtext:`exception specification of overriding function is more lax than base version`|
6068+-------------------------------------------------------------------------------------------------------------------+
6069
6070
6071-Wmicrosoft-exists
6072------------------
6073This diagnostic is enabled by default.
6074
6075**Diagnostic text:**
6076
6077+--------------------------------------------------------+---------------------------------+--------------------------------------------+
6078|:warning:`warning:` |nbsp| :diagtext:`dependent` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`declarations are ignored`|
6079| ||:diagtext:`\_\_if\_not\_exists`|| |
6080| |+-------------------------------+| |
6081| ||:diagtext:`\_\_if\_exists` || |
6082| |+-------------------------------+| |
6083+--------------------------------------------------------+---------------------------------+--------------------------------------------+
6084
6085
6086-Wmicrosoft-explicit-constructor-call
6087-------------------------------------
6088This diagnostic is enabled by default.
6089
6090**Diagnostic text:**
6091
6092+-------------------------------------------------------------------------------------------+
6093|:warning:`warning:` |nbsp| :diagtext:`explicit constructor calls are a Microsoft extension`|
6094+-------------------------------------------------------------------------------------------+
6095
6096
6097-Wmicrosoft-extra-qualification
6098-------------------------------
6099This diagnostic is enabled by default.
6100
6101**Diagnostic text:**
6102
6103+--------------------------------------------------------------------------------------------+
6104|:warning:`warning:` |nbsp| :diagtext:`extra qualification on member` |nbsp| :placeholder:`A`|
6105+--------------------------------------------------------------------------------------------+
6106
6107
6108-Wmicrosoft-fixed-enum
6109----------------------
6110**Diagnostic text:**
6111
6112+---------------------------------------------------------------------------------------------------------------+
6113|:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a Microsoft extension`|
6114+---------------------------------------------------------------------------------------------------------------+
6115
6116
6117-Wmicrosoft-flexible-array
6118--------------------------
6119**Diagnostic text:**
6120
6121+----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+
6122|:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in otherwise empty` |nbsp| |+---------------------+| |nbsp| :diagtext:`is a Microsoft extension`|
6123| ||:diagtext:`struct` || |
6124| |+---------------------+| |
6125| ||:diagtext:`interface`|| |
6126| |+---------------------+| |
6127| ||:diagtext:`union` || |
6128| |+---------------------+| |
6129| ||:diagtext:`class` || |
6130| |+---------------------+| |
6131| ||:diagtext:`enum` || |
6132| |+---------------------+| |
6133+----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+
6134
6135+-------------------------------------------------------------------------------------------------------------------------------------------+
6136|:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in a union is a Microsoft extension`|
6137+-------------------------------------------------------------------------------------------------------------------------------------------+
6138
6139
6140-Wmicrosoft-goto
6141----------------
6142This diagnostic is enabled by default.
6143
6144**Diagnostic text:**
6145
6146+----------------------------------------------------------------------------------------------------------+
6147|:warning:`warning:` |nbsp| :diagtext:`jump from this goto statement to its label is a Microsoft extension`|
6148+----------------------------------------------------------------------------------------------------------+
6149
6150
6151-Wmicrosoft-include
6152-------------------
6153This diagnostic is enabled by default.
6154
6155**Diagnostic text:**
6156
6157+------------------------------------------------------------------------------------------------------------------------------+
6158|:warning:`warning:` |nbsp| :diagtext:`#include resolved using non-portable Microsoft search rules as:` |nbsp| :placeholder:`A`|
6159+------------------------------------------------------------------------------------------------------------------------------+
6160
6161
6162-Wmicrosoft-mutable-reference
6163-----------------------------
6164This diagnostic is enabled by default.
6165
6166**Diagnostic text:**
6167
6168+---------------------------------------------------------------------------------------------+
6169|:warning:`warning:` |nbsp| :diagtext:`'mutable' on a reference type is a Microsoft extension`|
6170+---------------------------------------------------------------------------------------------+
6171
6172
6173-Wmicrosoft-pure-definition
6174---------------------------
6175This diagnostic is enabled by default.
6176
6177**Diagnostic text:**
6178
6179+-------------------------------------------------------------------------------------------------------+
6180|:warning:`warning:` |nbsp| :diagtext:`function definition with pure-specifier is a Microsoft extension`|
6181+-------------------------------------------------------------------------------------------------------+
6182
6183
6184-Wmicrosoft-redeclare-static
6185----------------------------
6186**Diagnostic text:**
6187
6188+-------------------------------------------------------------------------------------------------------------------------------------------+
6189|:warning:`warning:` |nbsp| :diagtext:`redeclaring non-static` |nbsp| :placeholder:`A` |nbsp| :diagtext:`as static is a Microsoft extension`|
6190+-------------------------------------------------------------------------------------------------------------------------------------------+
6191
6192
6193-Wmicrosoft-sealed
6194------------------
6195This diagnostic is enabled by default.
6196
6197**Diagnostic text:**
6198
6199+--------------------------------------------------------------------------------+
6200|:warning:`warning:` |nbsp| :diagtext:`'sealed' keyword is a Microsoft extension`|
6201+--------------------------------------------------------------------------------+
6202
6203
6204-Wmicrosoft-template
6205--------------------
6206This diagnostic is enabled by default.
6207
6208**Diagnostic text:**
6209
6210+------------------------------------------------------------------------------------------------------------------------------------------------------+
6211|:warning:`warning:` |nbsp| :diagtext:`duplicate explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored as a Microsoft extension`|
6212+------------------------------------------------------------------------------------------------------------------------------------------------------+
6213
6214+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6215|:warning:`warning:` |nbsp| :diagtext:`use of identifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found via unqualified lookup into dependent bases of class templates is a Microsoft extension`|
6216+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6217
6218+--------------------------------------------------------------------------------------------------------------------------------------------------------+
6219|:warning:`warning:` |nbsp| :diagtext:`explicit specialization of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`within class scope is a Microsoft extension`|
6220+--------------------------------------------------------------------------------------------------------------------------------------------------------+
6221
6222+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6223|:warning:`warning:` |nbsp| :diagtext:`using the undeclared type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`as a default template argument is a Microsoft extension`|
6224+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6225
6226+-----------------------------------------------------------------------------------------------------------------------------+
6227|:warning:`warning:` |nbsp| :diagtext:`non-type template argument containing a dereference operation is a Microsoft extension`|
6228+-----------------------------------------------------------------------------------------------------------------------------+
6229
6230+---------------------------+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6231|:warning:`warning:` |nbsp| |+-------------------------------------+| |nbsp| :diagtext:`specialization of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`outside namespace enclosing` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a Microsoft extension`|
6232| ||:diagtext:`class template` || |
6233| |+-------------------------------------+| |
6234| ||:diagtext:`class template partial` || |
6235| |+-------------------------------------+| |
6236| ||:diagtext:`variable template` || |
6237| |+-------------------------------------+| |
6238| ||:diagtext:`variable template partial`|| |
6239| |+-------------------------------------+| |
6240| ||:diagtext:`function template` || |
6241| |+-------------------------------------+| |
6242| ||:diagtext:`member function` || |
6243| |+-------------------------------------+| |
6244| ||:diagtext:`static data member` || |
6245| |+-------------------------------------+| |
6246| ||:diagtext:`member class` || |
6247| |+-------------------------------------+| |
6248| ||:diagtext:`member enumeration` || |
6249| |+-------------------------------------+| |
6250+---------------------------+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6251
6252+------------------------------------------------------------------------------------------------------------------------------------------------+
6253|:warning:`warning:` |nbsp| :diagtext:`template argument for template type parameter must be a type; omitted 'typename' is a Microsoft extension`|
6254+------------------------------------------------------------------------------------------------------------------------------------------------+
6255
6256+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6257|:warning:`warning:` |nbsp| :diagtext:`use of undeclared identifier` |nbsp| :placeholder:`A`:diagtext:`; unqualified lookup into dependent bases of class template` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is a Microsoft extension`|
6258+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6259
6260
6261-Wmicrosoft-union-member-reference
6262----------------------------------
6263This diagnostic is enabled by default.
6264
6265**Diagnostic text:**
6266
6267+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6268|:warning:`warning:` |nbsp| :diagtext:`union member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has reference type` |nbsp| :placeholder:`B`:diagtext:`, which is a Microsoft extension`|
6269+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6270
6271
6272-Wmicrosoft-unqualified-friend
6273------------------------------
6274This diagnostic is enabled by default.
6275
6276**Diagnostic text:**
6277
6278+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6279|:warning:`warning:` |nbsp| :diagtext:`unqualified friend declaration referring to type outside of the nearest enclosing namespace is a Microsoft extension; add a nested name specifier`|
6280+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6281
6282
6283-Wmicrosoft-using-decl
6284----------------------
6285This diagnostic is enabled by default.
6286
6287**Diagnostic text:**
6288
6289+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6290|:warning:`warning:` |nbsp| :diagtext:`using declaration referring to inaccessible member '`:placeholder:`A`:diagtext:`' (which refers to accessible member '`:placeholder:`B`:diagtext:`') is a Microsoft compatibility extension`|
6291+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6292
6293
6294-Wmicrosoft-void-pseudo-dtor
6295----------------------------
6296This diagnostic is enabled by default.
6297
6298**Diagnostic text:**
6299
6300+------------------------------------------------------------------------------------------------+
6301|:warning:`warning:` |nbsp| :diagtext:`pseudo-destructors on type void are a Microsoft extension`|
6302+------------------------------------------------------------------------------------------------+
6303
6304
6305-Wmismatched-new-delete
6306-----------------------
6307This diagnostic is enabled by default.
6308
6309**Diagnostic text:**
6310
6311+----------------------------------------------+------------------+---------------------------------------------------------------+------------------+-----------------------------------+------------------+--------------+
6312|:warning:`warning:` |nbsp| :diagtext:`'delete`|+----------------+|:diagtext:`' applied to a pointer that was allocated with 'new`|+----------------+|:diagtext:`'; did you mean 'delete`|+----------------+|:diagtext:`'?`|
6313| || || ||:diagtext:`\[\]`|| ||:diagtext:`\[\]`|| |
6314| |+----------------+| |+----------------+| |+----------------+| |
6315| ||:diagtext:`\[\]`|| || || || || |
6316| |+----------------+| |+----------------+| |+----------------+| |
6317+----------------------------------------------+------------------+---------------------------------------------------------------+------------------+-----------------------------------+------------------+--------------+
6318
6319
6320-Wmismatched-parameter-types
6321----------------------------
6322This diagnostic is enabled by default.
6323
6324**Diagnostic text:**
6325
6326+---------------------------------------------------------------------------------------------------------------+
6327|:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in implementation of` |nbsp| :placeholder:`A`|
6328+---------------------------------------------------------------------------------------------------------------+
6329
6330
6331-Wmismatched-return-types
6332-------------------------
6333This diagnostic is enabled by default.
6334
6335**Diagnostic text:**
6336
6337+-----------------------------------------------------------------------------------------------------------+
6338|:warning:`warning:` |nbsp| :diagtext:`conflicting return type in implementation of` |nbsp| :placeholder:`A`|
6339+-----------------------------------------------------------------------------------------------------------+
6340
6341
6342-Wmismatched-tags
6343-----------------
6344**Diagnostic text:**
6345
6346+---------------------------------------------------------------------------------+--------------------------+------------------------------+-----------------------------------------------------------+--------------------------+------------------------------+
6347|:warning:`warning:` |nbsp| :placeholder:`C` |nbsp| :diagtext:`defined as` |nbsp| |+------------------------+|+----------------------------+| |nbsp| :diagtext:`here but previously declared as` |nbsp| |+------------------------+|+----------------------------+|
6348| ||:diagtext:`a struct` ||| || ||:diagtext:`a struct` ||| ||
6349| |+------------------------+|+----------------------------+| |+------------------------+|+----------------------------+|
6350| ||:diagtext:`an interface`||| |nbsp| :diagtext:`template`|| ||:diagtext:`an interface`||| |nbsp| :diagtext:`template`||
6351| |+------------------------+|+----------------------------+| |+------------------------+|+----------------------------+|
6352| ||:diagtext:`a class` || | ||:diagtext:`a class` || |
6353| |+------------------------+| | |+------------------------+| |
6354+---------------------------------------------------------------------------------+--------------------------+------------------------------+-----------------------------------------------------------+--------------------------+------------------------------+
6355
6356+---------------------------+-----------------------+------------------------------+--------------------------------------------------------------------------------+-----------------------+------------------------------+
6357|:warning:`warning:` |nbsp| |+---------------------+|+----------------------------+| |nbsp| :placeholder:`C` |nbsp| :diagtext:`was previously declared as a` |nbsp| |+---------------------+|+----------------------------+|
6358| ||:diagtext:`struct` ||| || ||:diagtext:`struct` ||| ||
6359| |+---------------------+|+----------------------------+| |+---------------------+|+----------------------------+|
6360| ||:diagtext:`interface`||| |nbsp| :diagtext:`template`|| ||:diagtext:`interface`||| |nbsp| :diagtext:`template`||
6361| |+---------------------+|+----------------------------+| |+---------------------+|+----------------------------+|
6362| ||:diagtext:`class` || | ||:diagtext:`class` || |
6363| |+---------------------+| | |+---------------------+| |
6364+---------------------------+-----------------------+------------------------------+--------------------------------------------------------------------------------+-----------------------+------------------------------+
6365
6366
6367-Wmissing-braces
6368----------------
6369**Diagnostic text:**
6370
6371+----------------------------------------------------------------------------------------+
6372|:warning:`warning:` |nbsp| :diagtext:`suggest braces around initialization of subobject`|
6373+----------------------------------------------------------------------------------------+
6374
6375
6376-Wmissing-declarations
6377----------------------
6378This diagnostic is enabled by default.
6379
6380**Diagnostic text:**
6381
6382+----------------------------------------------------------------------------+
6383|:warning:`warning:` |nbsp| :diagtext:`declaration does not declare anything`|
6384+----------------------------------------------------------------------------+
6385
6386+-----------------------------------------------------------------------------------------------------------------+
6387|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is not permitted on a declaration of a type`|
6388+-----------------------------------------------------------------------------------------------------------------+
6389
6390+--------------------------------------------------------------+
6391|:warning:`warning:` |nbsp| :diagtext:`typedef requires a name`|
6392+--------------------------------------------------------------+
6393
6394+-------------------------------------------------------------------------------------------------+
6395|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' ignored on this declaration`|
6396+-------------------------------------------------------------------------------------------------+
6397
6398
6399-Wmissing-exception-spec
6400------------------------
6401This diagnostic is enabled by default.
6402
6403**Diagnostic text:**
6404
6405+--------------------------------------------------------------------------------------------------------------------------------+
6406|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is missing exception specification '`:placeholder:`B`:diagtext:`'`|
6407+--------------------------------------------------------------------------------------------------------------------------------+
6408
6409
6410-Wmissing-field-initializers
6411----------------------------
6412**Diagnostic text:**
6413
6414+-----------------------------------------------------------------------------------------------------------+
6415|:warning:`warning:` |nbsp| :diagtext:`missing field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`initializer`|
6416+-----------------------------------------------------------------------------------------------------------+
6417
6418
6419-Wmissing-format-attribute
6420--------------------------
6421This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
6422
6423-Wmissing-include-dirs
6424----------------------
6425This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
6426
6427-Wmissing-method-return-type
6428----------------------------
6429**Diagnostic text:**
6430
6431+--------------------------------------------------------------------------------------------+
6432|:warning:`warning:` |nbsp| :diagtext:`method has no return type specified; defaults to 'id'`|
6433+--------------------------------------------------------------------------------------------+
6434
6435
6436-Wmissing-noreturn
6437------------------
6438**Diagnostic text:**
6439
6440+----------------------------------------------------------------------------------------+
6441|:warning:`warning:` |nbsp| :diagtext:`block could be declared with attribute 'noreturn'`|
6442+----------------------------------------------------------------------------------------+
6443
6444+---------------------------+----------------------+---------------------------------------------------------------------------------------+
6445|:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`could be declared with attribute 'noreturn'`|
6446| ||:diagtext:`function`|| |
6447| |+--------------------+| |
6448| ||:diagtext:`method` || |
6449| |+--------------------+| |
6450+---------------------------+----------------------+---------------------------------------------------------------------------------------+
6451
6452
6453-Wmissing-prototype-for-cc
6454--------------------------
6455This diagnostic is enabled by default.
6456
6457**Diagnostic text:**
6458
6459+----------------------------------------------------------------------------------------------------------------------------------------------+
6460|:warning:`warning:` |nbsp| :diagtext:`function with no prototype cannot use the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`calling convention`|
6461+----------------------------------------------------------------------------------------------------------------------------------------------+
6462
6463
6464-Wmissing-prototypes
6465--------------------
6466**Diagnostic text:**
6467
6468+-------------------------------------------------------------------------------------------------+
6469|:warning:`warning:` |nbsp| :diagtext:`no previous prototype for function` |nbsp| :placeholder:`A`|
6470+-------------------------------------------------------------------------------------------------+
6471
6472
6473-Wmissing-selector-name
6474-----------------------
6475This diagnostic is enabled by default.
6476
6477**Diagnostic text:**
6478
6479+---------------------------------------------------------------------------------------------------------------------------------------------+
6480|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`used as the name of the previous parameter rather than as part of the selector`|
6481+---------------------------------------------------------------------------------------------------------------------------------------------+
6482
6483
6484-Wmissing-sysroot
6485-----------------
6486This diagnostic is enabled by default.
6487
6488**Diagnostic text:**
6489
6490+------------------------------------------------------------------------------------------------+
6491|:warning:`warning:` |nbsp| :diagtext:`no such sysroot directory: '`:placeholder:`A`:diagtext:`'`|
6492+------------------------------------------------------------------------------------------------+
6493
6494
6495-Wmissing-variable-declarations
6496-------------------------------
6497**Diagnostic text:**
6498
6499+---------------------------------------------------------------------------------------------------------------------+
6500|:warning:`warning:` |nbsp| :diagtext:`no previous extern declaration for non-static variable` |nbsp| :placeholder:`A`|
6501+---------------------------------------------------------------------------------------------------------------------+
6502
6503
6504-Rmodule-build
6505--------------
6506**Diagnostic text:**
6507
6508+---------------------------------------------------------------------------------------------------------------------+
6509|:remark:`remark:` |nbsp| :diagtext:`building module '`:placeholder:`A`:diagtext:`' as '`:placeholder:`B`:diagtext:`'`|
6510+---------------------------------------------------------------------------------------------------------------------+
6511
6512+--------------------------------------------------------------------------------------------+
6513|:remark:`remark:` |nbsp| :diagtext:`finished building module '`:placeholder:`A`:diagtext:`'`|
6514+--------------------------------------------------------------------------------------------+
6515
Richard Smith9a016602017-04-13 22:44:22 +00006516+-----------------------------------------------------------------------------------------------------------------------------------+
6517|:remark:`remark:` |nbsp| :diagtext:`could not acquire lock file for module '`:placeholder:`A`:diagtext:`':` |nbsp| :placeholder:`B`|
6518+-----------------------------------------------------------------------------------------------------------------------------------+
6519
6520+---------------------------------------------------------------------------------------------------------------------+
6521|:remark:`remark:` |nbsp| :diagtext:`timed out waiting to acquire lock file for module '`:placeholder:`A`:diagtext:`'`|
6522+---------------------------------------------------------------------------------------------------------------------+
6523
Richard Smithb6a3b4b2016-09-12 05:58:29 +00006524
6525-Wmodule-conflict
6526-----------------
6527This diagnostic is enabled by default.
6528
6529**Diagnostic text:**
6530
6531+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6532|:warning:`warning:` |nbsp| :diagtext:`module '`:placeholder:`A`:diagtext:`' conflicts with already-imported module '`:placeholder:`B`:diagtext:`':` |nbsp| :placeholder:`C`|
6533+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6534
Richard Smith9a016602017-04-13 22:44:22 +00006535+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6536|:warning:`warning:` |nbsp| :diagtext:`module file '`:placeholder:`A`:diagtext:`' was validated as a system module and is now being imported as a non-system module; any difference in diagnostic options will be ignored`|
6537+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6538
Richard Smithb6a3b4b2016-09-12 05:58:29 +00006539
6540-Wmodule-file-config-mismatch
6541-----------------------------
6542This diagnostic is an error by default, but the flag ``-Wno-module-file-config-mismatch`` can be used to disable the error.
6543
6544**Diagnostic text:**
6545
6546+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6547|:error:`error:` |nbsp| :diagtext:`module file` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be loaded due to a configuration mismatch with the current compilation`|
6548+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6549
6550
6551-Wmodule-file-extension
6552-----------------------
6553This diagnostic is enabled by default.
6554
6555**Diagnostic text:**
6556
6557+----------------------------------------------------------------------------------------------------------------+
6558|:warning:`warning:` |nbsp| :diagtext:`duplicate module file extension block name '`:placeholder:`A`:diagtext:`'`|
6559+----------------------------------------------------------------------------------------------------------------+
6560
6561
6562-Wmodule-import-in-extern-c
6563---------------------------
6564This diagnostic is an error by default, but the flag ``-Wno-module-import-in-extern-c`` can be used to disable the error.
6565
6566**Diagnostic text:**
6567
6568+-----------------------------------------------------------------------------------------------------------------------------------------------+
6569|:error:`error:` |nbsp| :diagtext:`import of C++ module '`:placeholder:`A`:diagtext:`' appears within extern "C" language linkage specification`|
6570+-----------------------------------------------------------------------------------------------------------------------------------------------+
6571
6572
6573-Wmodules-ambiguous-internal-linkage
6574------------------------------------
6575This diagnostic is enabled by default.
6576
6577**Diagnostic text:**
6578
6579+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
6580|:warning:`warning:` |nbsp| :diagtext:`ambiguous use of internal linkage declaration` |nbsp| :placeholder:`A` |nbsp| :diagtext:`defined in multiple modules`|
6581+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
6582
6583
6584-Wmodules-import-nested-redundant
6585---------------------------------
6586This diagnostic is an error by default, but the flag ``-Wno-modules-import-nested-redundant`` can be used to disable the error.
6587
6588**Diagnostic text:**
6589
6590+-------------------------------------------------------------------------------------------------------------------------------------+
6591|:error:`error:` |nbsp| :diagtext:`redundant #include of module '`:placeholder:`A`:diagtext:`' appears within` |nbsp| :placeholder:`B`|
6592+-------------------------------------------------------------------------------------------------------------------------------------+
6593
6594
6595-Wmost
6596------
6597Some of the diagnostics controlled by this flag are enabled by default.
6598
Richard Smithcf9f4222017-01-20 19:27:09 +00006599Controls `-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`_, `-Wuser-defined-warnings`_, `-Wvolatile-register-var`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00006600
6601
6602-Wmove
6603------
6604Controls `-Wpessimizing-move`_, `-Wredundant-move`_, `-Wself-move`_.
6605
6606
6607-Wmsvc-include
6608--------------
6609Synonym for `-Wmicrosoft-include`_.
6610
6611
Richard Smith9a016602017-04-13 22:44:22 +00006612-Wmsvc-not-found
6613----------------
6614This diagnostic is enabled by default.
6615
6616**Diagnostic text:**
6617
6618+-------------------------------------------------------------------------------------------------------------------------------------+
6619|:warning:`warning:` |nbsp| :diagtext:`unable to find a Visual Studio installation; try running Clang from a developer command prompt`|
6620+-------------------------------------------------------------------------------------------------------------------------------------+
6621
6622
Richard Smithb6a3b4b2016-09-12 05:58:29 +00006623-Wmultichar
6624-----------
6625This diagnostic is enabled by default.
6626
6627**Diagnostic text:**
6628
6629+-------------------------------------------------------------------------+
6630|:warning:`warning:` |nbsp| :diagtext:`multi-character character constant`|
6631+-------------------------------------------------------------------------+
6632
6633
6634-Wmultiple-move-vbase
6635---------------------
6636This diagnostic is enabled by default.
6637
6638**Diagnostic text:**
6639
6640+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6641|:warning:`warning:` |nbsp| :diagtext:`defaulted move assignment operator of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will move assign virtual base class` |nbsp| :placeholder:`B` |nbsp| :diagtext:`multiple times`|
6642+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6643
6644
6645-Wnarrowing
6646-----------
6647Synonym for `-Wc++11-narrowing`_.
6648
6649
6650-Wnested-anon-types
6651-------------------
6652**Diagnostic text:**
6653
6654+---------------------------------------------------------------------------------------+--------------------+------------------------------------+
6655|:warning:`warning:` |nbsp| :diagtext:`anonymous types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`are an extension`|
6656| ||:diagtext:`struct`|| |
6657| |+------------------+| |
6658| ||:diagtext:`union` || |
6659| |+------------------+| |
6660+---------------------------------------------------------------------------------------+--------------------+------------------------------------+
6661
6662
6663-Wnested-externs
6664----------------
6665This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
6666
6667-Wnew-returns-null
6668------------------
6669This diagnostic is enabled by default.
6670
6671**Diagnostic text:**
6672
6673+-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
6674|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return a null pointer unless it is declared 'throw()'`|+---------------------------------+|
6675| || ||
6676| |+---------------------------------+|
6677| || |nbsp| :diagtext:`or 'noexcept'`||
6678| |+---------------------------------+|
6679+-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
6680
6681
6682-Wnewline-eof
6683-------------
6684**Diagnostic text:**
6685
6686+----------------------------------------------------------------+
6687|:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`|
6688+----------------------------------------------------------------+
6689
6690+----------------------------------------------------------------+
6691|:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`|
6692+----------------------------------------------------------------+
6693
6694
6695-Wnon-gcc
6696---------
6697Some of the diagnostics controlled by this flag are enabled by default.
6698
Richard Smith8cba2912016-09-14 01:55:42 +00006699Controls `-Wconversion`_, `-Wliteral-range`_, `-Wsign-compare`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00006700
6701
6702-Wnon-literal-null-conversion
6703-----------------------------
6704This diagnostic is enabled by default.
6705
6706**Diagnostic text:**
6707
6708+--------------------------------------------------------------------------------------------------------------------------------------------+
6709|:warning:`warning:` |nbsp| :diagtext:`expression which evaluates to zero treated as a null pointer constant of type` |nbsp| :placeholder:`A`|
6710+--------------------------------------------------------------------------------------------------------------------------------------------+
6711
6712
6713-Wnon-modular-include-in-framework-module
6714-----------------------------------------
6715**Diagnostic text:**
6716
Richard Smithcf9f4222017-01-20 19:27:09 +00006717+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
6718|:warning:`warning:` |nbsp| :diagtext:`include of non-modular header inside framework module '`:placeholder:`A`:diagtext:`': '`:placeholder:`B`:diagtext:`'`|
6719+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00006720
6721
6722-Wnon-modular-include-in-module
6723-------------------------------
6724Also controls `-Wnon-modular-include-in-framework-module`_.
6725
6726**Diagnostic text:**
6727
Richard Smithcf9f4222017-01-20 19:27:09 +00006728+-------------------------------------------------------------------------------------------------------------------------------------------------+
6729|:warning:`warning:` |nbsp| :diagtext:`include of non-modular header inside module '`:placeholder:`A`:diagtext:`': '`:placeholder:`B`:diagtext:`'`|
6730+-------------------------------------------------------------------------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00006731
6732
6733-Wnon-pod-varargs
6734-----------------
6735This diagnostic is an error by default, but the flag ``-Wno-non-pod-varargs`` can be used to disable the error.
6736
6737**Diagnostic text:**
6738
6739+----------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------------------------+-------------------------+----------------------------------------+
6740|:error:`error:` |nbsp| :diagtext:`cannot pass object of` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+|:diagtext:`; call will abort at runtime`|
6741| ||:diagtext:`non-POD` || ||:diagtext:`function` || |
6742| |+-----------------------+| |+-----------------------+| |
6743| ||:diagtext:`non-trivial`|| ||:diagtext:`block` || |
6744| |+-----------------------+| |+-----------------------+| |
6745| | | ||:diagtext:`method` || |
6746| | | |+-----------------------+| |
6747| | | ||:diagtext:`constructor`|| |
6748| | | |+-----------------------+| |
6749+----------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------------------------+-------------------------+----------------------------------------+
6750
6751+------------------------------------------------------+-------------------------+-------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------+
6752|:error:`error:` |nbsp| :diagtext:`cannot pass` |nbsp| |+-----------------------+| |nbsp| :diagtext:`object of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to variadic` |nbsp| |+-----------------------+|:diagtext:`; expected type from format string was` |nbsp| :placeholder:`D`|
6753| ||:diagtext:`non-POD` || ||:diagtext:`function` || |
6754| |+-----------------------+| |+-----------------------+| |
6755| ||:diagtext:`non-trivial`|| ||:diagtext:`block` || |
6756| |+-----------------------+| |+-----------------------+| |
6757| | | ||:diagtext:`method` || |
6758| | | |+-----------------------+| |
6759| | | ||:diagtext:`constructor`|| |
6760| | | |+-----------------------+| |
6761+------------------------------------------------------+-------------------------+-------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------+
6762
6763+----------------------------------------------------------------------------------------------------------+
6764|:error:`error:` |nbsp| :diagtext:`second argument to 'va\_arg' is of non-POD type` |nbsp| :placeholder:`A`|
6765+----------------------------------------------------------------------------------------------------------+
6766
6767+--------------------------------------------------------------------------------------------------------------------------+
6768|:error:`error:` |nbsp| :diagtext:`second argument to 'va\_arg' is of ARC ownership-qualified type` |nbsp| :placeholder:`A`|
6769+--------------------------------------------------------------------------------------------------------------------------+
6770
6771
6772-Wnon-virtual-dtor
6773------------------
6774**Diagnostic text:**
6775
6776+---------------------------------------------------------------------------------------------------------------+
6777|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has virtual functions but non-virtual destructor`|
6778+---------------------------------------------------------------------------------------------------------------+
6779
6780
6781-Wnonnull
6782---------
6783This diagnostic is enabled by default.
6784
6785**Diagnostic text:**
6786
6787+------------------------------------------------------------------------------------------------+
6788|:warning:`warning:` |nbsp| :diagtext:`null passed to a callee that requires a non-null argument`|
6789+------------------------------------------------------------------------------------------------+
6790
6791+-----------------------------------------------------------------+----------------------+---------------------------------------------------------+
6792|:warning:`warning:` |nbsp| :diagtext:`null returned from` |nbsp| |+--------------------+| |nbsp| :diagtext:`that requires a non-null return value`|
6793| ||:diagtext:`function`|| |
6794| |+--------------------+| |
6795| ||:diagtext:`method` || |
6796| |+--------------------+| |
6797+-----------------------------------------------------------------+----------------------+---------------------------------------------------------+
6798
6799
6800-Wnonportable-cfstrings
6801-----------------------
6802This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
6803
6804-Wnonportable-include-path
6805--------------------------
6806This diagnostic is enabled by default.
6807
6808**Diagnostic text:**
6809
6810+------------------------------------------------------------------------------------------------------------------------------------------------------+
6811|:warning:`warning:` |nbsp| :diagtext:`non-portable path to file '`:placeholder:`A`:diagtext:`'; specified path differs in case from file name on disk`|
6812+------------------------------------------------------------------------------------------------------------------------------------------------------+
6813
6814
6815-Wnonportable-system-include-path
6816---------------------------------
6817**Diagnostic text:**
6818
6819+------------------------------------------------------------------------------------------------------------------------------------------------------+
6820|:warning:`warning:` |nbsp| :diagtext:`non-portable path to file '`:placeholder:`A`:diagtext:`'; specified path differs in case from file name on disk`|
6821+------------------------------------------------------------------------------------------------------------------------------------------------------+
6822
6823
6824-Wnonportable-vector-initialization
6825-----------------------------------
6826This diagnostic is enabled by default.
6827
6828**Diagnostic text:**
6829
6830+---------------------------------------------------------------------------------------------------------------------+
6831|:warning:`warning:` |nbsp| :diagtext:`vector initializers are not compatible with NEON intrinsics in big endian mode`|
6832+---------------------------------------------------------------------------------------------------------------------+
6833
6834
6835-Wnull-arithmetic
6836-----------------
6837This diagnostic is enabled by default.
6838
6839**Diagnostic text:**
6840
6841+--------------------------------------------------------------------------+
6842|:warning:`warning:` |nbsp| :diagtext:`use of NULL in arithmetic operation`|
6843+--------------------------------------------------------------------------+
6844
6845+--------------------------------------------------------------------------------------+--------------------------------------------------------------+
6846|:warning:`warning:` |nbsp| :diagtext:`comparison between NULL and non-pointer` |nbsp| |+------------------------------------------------------------+|
6847| ||+----------------------------------------------------------+||
6848| |||:diagtext:`(`:placeholder:`B` |nbsp| :diagtext:`and NULL)`|||
6849| ||+----------------------------------------------------------+||
6850| |+------------------------------------------------------------+|
6851| ||+----------------------------------------------------------+||
6852| |||:diagtext:`(NULL and` |nbsp| :placeholder:`B`:diagtext:`)`|||
6853| ||+----------------------------------------------------------+||
6854| |+------------------------------------------------------------+|
6855+--------------------------------------------------------------------------------------+--------------------------------------------------------------+
6856
6857
6858-Wnull-character
6859----------------
6860This diagnostic is enabled by default.
6861
6862**Diagnostic text:**
6863
6864+-----------------------------------------------------------------------------+--------------------+---------------------------+
6865|:warning:`warning:` |nbsp| :diagtext:`null character(s) preserved in` |nbsp| |+------------------+| |nbsp| :diagtext:`literal`|
6866| ||:diagtext:`char` || |
6867| |+------------------+| |
6868| ||:diagtext:`string`|| |
6869| |+------------------+| |
6870+-----------------------------------------------------------------------------+--------------------+---------------------------+
6871
6872+-------------------------------------------------------------+
6873|:warning:`warning:` |nbsp| :diagtext:`null character ignored`|
6874+-------------------------------------------------------------+
6875
6876
6877-Wnull-conversion
6878-----------------
6879This diagnostic is enabled by default.
6880
6881**Diagnostic text:**
6882
6883+---------------------------------------------------------------------+---------------------+-------------------------------------------------------+
6884|:warning:`warning:` |nbsp| :diagtext:`implicit conversion of` |nbsp| |+-------------------+| |nbsp| :diagtext:`constant to` |nbsp| :placeholder:`B`|
6885| ||:diagtext:`NULL` || |
6886| |+-------------------+| |
6887| ||:diagtext:`nullptr`|| |
6888| |+-------------------+| |
6889+---------------------------------------------------------------------+---------------------+-------------------------------------------------------+
6890
6891
6892-Wnull-dereference
6893------------------
6894This diagnostic is enabled by default.
6895
6896**Diagnostic text:**
6897
6898+------------------------------------------------------------------------------------------------------------+
6899|:warning:`warning:` |nbsp| :diagtext:`binding dereferenced null pointer to reference has undefined behavior`|
6900+------------------------------------------------------------------------------------------------------------+
6901
6902+---------------------------------------------------------------------------------------------------------+
6903|:warning:`warning:` |nbsp| :diagtext:`indirection of non-volatile null pointer will be deleted, not trap`|
6904+---------------------------------------------------------------------------------------------------------+
6905
6906
6907-Wnullability
6908-------------
6909This diagnostic is enabled by default.
6910
6911**Diagnostic text:**
6912
6913+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6914|:warning:`warning:` |nbsp| :diagtext:`conflicting nullability specifier on parameter types,` |nbsp| :placeholder:`A` |nbsp| :diagtext:`conflicts with existing specifier` |nbsp| :placeholder:`B`|
6915+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6916
6917+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6918|:warning:`warning:` |nbsp| :diagtext:`conflicting nullability specifier on return types,` |nbsp| :placeholder:`A` |nbsp| :diagtext:`conflicts with existing specifier` |nbsp| :placeholder:`B`|
6919+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6920
6921+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
6922|:warning:`warning:` |nbsp| :diagtext:`nullability specifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`conflicts with existing specifier` |nbsp| :placeholder:`B`|
6923+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
6924
6925+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6926|:warning:`warning:` |nbsp| :diagtext:`synthesized setter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`for null\_resettable property` |nbsp| :placeholder:`B` |nbsp| :diagtext:`does not handle nil`|
6927+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
6928
6929+----------------------------------------------------------------------------------------------+
6930|:warning:`warning:` |nbsp| :diagtext:`duplicate nullability specifier` |nbsp| :placeholder:`A`|
6931+----------------------------------------------------------------------------------------------+
6932
6933
6934-Wnullability-completeness
6935--------------------------
6936This diagnostic is enabled by default.
6937
Richard Smithcf9f4222017-01-20 19:27:09 +00006938Also controls `-Wnullability-completeness-on-arrays`_.
6939
Richard Smithb6a3b4b2016-09-12 05:58:29 +00006940**Diagnostic text:**
6941
6942+---------------------------+----------------------------+-----------------------------------------------------------------------------------------------------------+
6943|:warning:`warning:` |nbsp| |+--------------------------+| |nbsp| :diagtext:`is missing a nullability type specifier (\_Nonnull, \_Nullable, or \_Null\_unspecified)`|
6944| ||:diagtext:`pointer` || |
6945| |+--------------------------+| |
6946| ||:diagtext:`block pointer` || |
6947| |+--------------------------+| |
6948| ||:diagtext:`member pointer`|| |
6949| |+--------------------------+| |
6950+---------------------------+----------------------------+-----------------------------------------------------------------------------------------------------------+
6951
6952
Richard Smithcf9f4222017-01-20 19:27:09 +00006953-Wnullability-completeness-on-arrays
6954------------------------------------
6955This diagnostic is enabled by default.
6956
6957**Diagnostic text:**
6958
6959+----------------------------------------------------------------------------------------------------------------------------------------------+
6960|:warning:`warning:` |nbsp| :diagtext:`array parameter is missing a nullability type specifier (\_Nonnull, \_Nullable, or \_Null\_unspecified)`|
6961+----------------------------------------------------------------------------------------------------------------------------------------------+
6962
6963
Richard Smithb6a3b4b2016-09-12 05:58:29 +00006964-Wnullability-declspec
6965----------------------
6966This diagnostic is an error by default, but the flag ``-Wno-nullability-declspec`` can be used to disable the error.
6967
6968**Diagnostic text:**
6969
6970+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------+-------------+
6971|:error:`error:` |nbsp| :diagtext:`nullability specifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be applied to non-pointer type` |nbsp| :placeholder:`B`:diagtext:`; did you mean to apply the specifier to the` |nbsp| |+-----------------------------------+|:diagtext:`?`|
6972| ||:diagtext:`pointer` || |
6973| |+-----------------------------------+| |
6974| ||:diagtext:`block pointer` || |
6975| |+-----------------------------------+| |
6976| ||:diagtext:`member pointer` || |
6977| |+-----------------------------------+| |
6978| ||:diagtext:`function pointer` || |
6979| |+-----------------------------------+| |
6980| ||:diagtext:`member function pointer`|| |
6981| |+-----------------------------------+| |
6982+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------+-------------+
6983
6984
6985-Wnullability-extension
6986-----------------------
6987**Diagnostic text:**
6988
6989+---------------------------------------------------------------------------------------------------------------------------------+
6990|:warning:`warning:` |nbsp| :diagtext:`type nullability specifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a Clang extension`|
6991+---------------------------------------------------------------------------------------------------------------------------------+
6992
6993
Richard Smithcf9f4222017-01-20 19:27:09 +00006994-Wnullability-inferred-on-nested-type
6995-------------------------------------
6996This diagnostic is enabled by default.
6997
6998**Diagnostic text:**
6999
7000+--------------------------------------------------------------------------------------------+-----------------------+---------------------------------+
7001|:warning:`warning:` |nbsp| :diagtext:`inferring '\_Nonnull' for pointer type within` |nbsp| |+---------------------+| |nbsp| :diagtext:`is deprecated`|
7002| ||:diagtext:`array` || |
7003| |+---------------------+| |
7004| ||:diagtext:`reference`|| |
7005| |+---------------------+| |
7006+--------------------------------------------------------------------------------------------+-----------------------+---------------------------------+
7007
7008
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007009-Wnullable-to-nonnull-conversion
7010--------------------------------
7011**Diagnostic text:**
7012
7013+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7014|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from nullable pointer` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to non-nullable pointer type` |nbsp| :placeholder:`B`|
7015+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7016
7017
7018-Wobjc-autosynthesis-property-ivar-name-match
7019---------------------------------------------
7020This diagnostic is enabled by default.
7021
7022**Diagnostic text:**
7023
7024+---------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------------------------------------------------+
7025|:warning:`warning:` |nbsp| :diagtext:`autosynthesized property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will use` |nbsp| |+-----------------------+| |nbsp| :diagtext:`instance variable` |nbsp| :placeholder:`C`:diagtext:`, not existing instance variable` |nbsp| :placeholder:`D`|
7026| || || |
7027| |+-----------------------+| |
7028| ||:diagtext:`synthesized`|| |
7029| |+-----------------------+| |
7030+---------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------------------------------------------------+
7031
7032
7033-Wobjc-circular-container
7034-------------------------
7035This diagnostic is enabled by default.
7036
7037**Diagnostic text:**
7038
7039+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
7040|:warning:`warning:` |nbsp| :diagtext:`adding '`:placeholder:`A`:diagtext:`' to '`:placeholder:`B`:diagtext:`' might cause circular dependency in container`|
7041+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
7042
7043
7044-Wobjc-cocoa-api
7045----------------
7046Synonym for `-Wobjc-redundant-api-use`_.
7047
7048
7049-Wobjc-designated-initializers
7050------------------------------
7051This diagnostic is enabled by default.
7052
7053**Diagnostic text:**
7054
7055+-----------------------------------------------------------------------------------------------------------------------------------+
7056|:warning:`warning:` |nbsp| :diagtext:`designated initializer missing a 'super' call to a designated initializer of the super class`|
7057+-----------------------------------------------------------------------------------------------------------------------------------+
7058
7059+--------------------------------------------------------------------------------------------------+
7060|:warning:`warning:` |nbsp| :diagtext:`designated initializer invoked a non-designated initializer`|
7061+--------------------------------------------------------------------------------------------------+
7062
7063+--------------------------------------------------------------------------------------------------------------------+
7064|:warning:`warning:` |nbsp| :diagtext:`designated initializer should only invoke a designated initializer on 'super'`|
7065+--------------------------------------------------------------------------------------------------------------------+
7066
7067+------------------------------------------------------------------------------------------------------------------------------------------------------------+
7068|:warning:`warning:` |nbsp| :diagtext:`method override for the designated initializer of the superclass` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found`|
7069+------------------------------------------------------------------------------------------------------------------------------------------------------------+
7070
7071+-----------------------------------------------------------------------------------------------------------+
7072|:warning:`warning:` |nbsp| :diagtext:`convenience initializer missing a 'self' call to another initializer`|
7073+-----------------------------------------------------------------------------------------------------------+
7074
7075+----------------------------------------------------------------------------------------------------------+
7076|:warning:`warning:` |nbsp| :diagtext:`convenience initializer should not invoke an initializer on 'super'`|
7077+----------------------------------------------------------------------------------------------------------+
7078
7079
7080-Wobjc-forward-class-redefinition
7081---------------------------------
7082This diagnostic is enabled by default.
7083
7084**Diagnostic text:**
7085
7086+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
7087|:warning:`warning:` |nbsp| :diagtext:`redefinition of forward class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of a typedef name of an object type is ignored`|
7088+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
7089
7090
7091-Wobjc-interface-ivars
7092----------------------
7093**Diagnostic text:**
7094
7095+-------------------------------------------------------------------------------------------------------+
7096|:warning:`warning:` |nbsp| :diagtext:`declaration of instance variables in the interface is deprecated`|
7097+-------------------------------------------------------------------------------------------------------+
7098
7099
7100-Wobjc-literal-compare
7101----------------------
7102This diagnostic is enabled by default.
7103
7104Also controls `-Wobjc-string-compare`_.
7105
7106**Diagnostic text:**
7107
7108+-------------------------------------------------------------------+----------------------------------+------------------------------------------+
7109|:warning:`warning:` |nbsp| :diagtext:`direct comparison of` |nbsp| |+--------------------------------+| |nbsp| :diagtext:`has undefined behavior`|
7110| ||:diagtext:`an array literal` || |
7111| |+--------------------------------+| |
7112| ||:diagtext:`a dictionary literal`|| |
7113| |+--------------------------------+| |
7114| ||:diagtext:`a numeric literal` || |
7115| |+--------------------------------+| |
7116| ||:diagtext:`a boxed expression` || |
7117| |+--------------------------------+| |
7118| || || |
7119| |+--------------------------------+| |
7120+-------------------------------------------------------------------+----------------------------------+------------------------------------------+
7121
7122
7123-Wobjc-literal-conversion
7124-------------------------
7125This diagnostic is enabled by default.
7126
7127**Diagnostic text:**
7128
7129+-------------------------------------------------------------------------------------------------------------------------+
7130|:warning:`warning:` |nbsp| :diagtext:`implicit boolean conversion of Objective-C object literal always evaluates to true`|
7131+-------------------------------------------------------------------------------------------------------------------------+
7132
7133+-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------+
7134|:warning:`warning:` |nbsp| :diagtext:`object of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not compatible with` |nbsp| |+---------------------------------+| |nbsp| :placeholder:`C`|
7135| ||:diagtext:`array element type` || |
7136| |+---------------------------------+| |
7137| ||:diagtext:`dictionary key type` || |
7138| |+---------------------------------+| |
7139| ||:diagtext:`dictionary value type`|| |
7140| |+---------------------------------+| |
7141+-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------+
7142
7143
7144-Wobjc-macro-redefinition
7145-------------------------
7146This diagnostic is enabled by default.
7147
7148**Diagnostic text:**
7149
7150+-------------------------------------------------------------------------------------------+
7151|:warning:`warning:` |nbsp| :diagtext:`ignoring redefinition of Objective-C qualifier macro`|
7152+-------------------------------------------------------------------------------------------+
7153
7154
7155-Wobjc-method-access
7156--------------------
7157This diagnostic is enabled by default.
7158
7159**Diagnostic text:**
7160
7161+---------------------------------------------------------------------------------------------------------------------------------------+
7162|:warning:`warning:` |nbsp| :diagtext:`class method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to 'id')`|
7163+---------------------------------------------------------------------------------------------------------------------------------------+
7164
7165+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7166|:warning:`warning:` |nbsp| :diagtext:`class method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to 'id'); did you mean` |nbsp| :placeholder:`C`:diagtext:`?`|
7167+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7168
7169+------------------------------------------------------------------------------------------------------------------------------------------+
7170|:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to 'id')`|
7171+------------------------------------------------------------------------------------------------------------------------------------------+
7172
7173+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7174|:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to 'id'); did you mean` |nbsp| :placeholder:`C`:diagtext:`?`|
7175+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7176
7177+-------------------------------------------------------------------------------------------------------------------------------------------------------+
7178|:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found instead of class method` |nbsp| :placeholder:`B`|
7179+-------------------------------------------------------------------------------------------------------------------------------------------------------+
7180
7181+---------------------------------------------------------------------------------------------------------------------------------------------------------+
7182|:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is being used on 'Class' which is not in the root class`|
7183+---------------------------------------------------------------------------------------------------------------------------------------------------------+
7184
7185
7186-Wobjc-missing-property-synthesis
7187---------------------------------
7188**Diagnostic text:**
7189
7190+------------------------------------------------------------------------------------------------------------------+
7191|:warning:`warning:` |nbsp| :diagtext:`auto property synthesis is synthesizing property not explicitly synthesized`|
7192+------------------------------------------------------------------------------------------------------------------+
7193
7194
7195-Wobjc-missing-super-calls
7196--------------------------
7197This diagnostic is enabled by default.
7198
7199**Diagnostic text:**
7200
7201+-------------------------------------------------------------------------------------------------------------------+
7202|:warning:`warning:` |nbsp| :diagtext:`method possibly missing a \[super` |nbsp| :placeholder:`A`:diagtext:`\] call`|
7203+-------------------------------------------------------------------------------------------------------------------+
7204
7205
7206-Wobjc-multiple-method-names
7207----------------------------
7208This diagnostic is enabled by default.
7209
7210**Diagnostic text:**
7211
7212+--------------------------------------------------------------------------------------------------------------+
7213|:warning:`warning:` |nbsp| :diagtext:`multiple methods named` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found`|
7214+--------------------------------------------------------------------------------------------------------------+
7215
7216
7217-Wobjc-noncopy-retain-block-property
7218------------------------------------
7219This diagnostic is enabled by default.
7220
7221**Diagnostic text:**
7222
7223+--------------------------------------------------------------------------------------------------------------------+
7224|:warning:`warning:` |nbsp| :diagtext:`retain'ed block property does not copy the block - use copy attribute instead`|
7225+--------------------------------------------------------------------------------------------------------------------+
7226
7227
7228-Wobjc-nonunified-exceptions
7229----------------------------
7230This diagnostic is enabled by default.
7231
7232**Diagnostic text:**
7233
7234+-----------------------------------------------------------------------------------------------------------------------------+
7235|:warning:`warning:` |nbsp| :diagtext:`cannot catch an exception thrown with @throw in C++ in the non-unified exception model`|
7236+-----------------------------------------------------------------------------------------------------------------------------+
7237
7238
7239-Wobjc-property-implementation
7240------------------------------
7241This diagnostic is enabled by default.
7242
7243**Diagnostic text:**
7244
7245+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7246|:warning:`warning:` |nbsp| :diagtext:`class property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to be defined - use @dynamic or provide a method implementation in this class implementation`|
7247+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7248
7249+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7250|:warning:`warning:` |nbsp| :diagtext:`class property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to be defined - use @dynamic or provide a method implementation in this category`|
7251+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7252
7253+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7254|:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation`|
7255+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7256
7257+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7258|:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to be defined - use @dynamic or provide a method implementation in this category`|
7259+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7260
7261
7262-Wobjc-property-implicit-mismatch
7263---------------------------------
7264This diagnostic is enabled by default.
7265
7266**Diagnostic text:**
7267
7268+---------------------------------------------------------------------------------------------------------------------------------------+
7269|:warning:`warning:` |nbsp| :diagtext:`primary property declaration is implicitly strong while redeclaration in class extension is weak`|
7270+---------------------------------------------------------------------------------------------------------------------------------------+
7271
7272
7273-Wobjc-property-matches-cocoa-ownership-rule
7274--------------------------------------------
7275This diagnostic is enabled by default.
7276
7277**Diagnostic text:**
7278
7279+-------------------------------------------------------------------------------------------------------------+
7280|:warning:`warning:` |nbsp| :diagtext:`property follows Cocoa naming convention for returning 'owned' objects`|
7281+-------------------------------------------------------------------------------------------------------------+
7282
7283
7284-Wobjc-property-no-attribute
7285----------------------------
7286This diagnostic is enabled by default.
7287
7288**Diagnostic text:**
7289
7290+------------------------------------------------------------------------------------------------------------+
7291|:warning:`warning:` |nbsp| :diagtext:`default property attribute 'assign' not appropriate for non-GC object`|
7292+------------------------------------------------------------------------------------------------------------+
7293
7294+--------------------------------------------------------------------------------------------------------------------+
7295|:warning:`warning:` |nbsp| :diagtext:`no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed`|
7296+--------------------------------------------------------------------------------------------------------------------+
7297
7298
7299-Wobjc-property-synthesis
7300-------------------------
7301This diagnostic is enabled by default.
7302
7303**Diagnostic text:**
7304
7305+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7306|:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not synthesize property` |nbsp| :placeholder:`A`:diagtext:`; it will be implemented by its superclass, use @dynamic to acknowledge intention`|
7307+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7308
7309+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7310|:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not synthesize property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`because it is 'readwrite' but it will be synthesized 'readonly' via another property`|
7311+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7312
7313+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7314|:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not synthesize property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`because it cannot share an ivar with another synthesized property`|
7315+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7316
7317
7318-Wobjc-protocol-method-implementation
7319-------------------------------------
7320This diagnostic is enabled by default.
7321
7322**Diagnostic text:**
7323
7324+----------------------------------------------------------------------------------------------------------------------------+
7325|:warning:`warning:` |nbsp| :diagtext:`category is implementing a method which will also be implemented by its primary class`|
7326+----------------------------------------------------------------------------------------------------------------------------+
7327
7328
7329-Wobjc-protocol-property-synthesis
7330----------------------------------
7331This diagnostic is enabled by default.
7332
7333**Diagnostic text:**
7334
7335+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7336|:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not synthesize property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared in protocol` |nbsp| :placeholder:`B`|
7337+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7338
7339
7340-Wobjc-protocol-qualifiers
7341--------------------------
7342This diagnostic is enabled by default.
7343
7344**Diagnostic text:**
7345
7346+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7347|:warning:`warning:` |nbsp| :diagtext:`parameterized class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`already conforms to the protocols listed; did you forget a '\*'?`|
7348+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7349
7350
7351-Wobjc-readonly-with-setter-property
7352------------------------------------
7353This diagnostic is enabled by default.
7354
7355**Diagnostic text:**
7356
7357+-----------------------------------------------------------------------------------------+
7358|:warning:`warning:` |nbsp| :diagtext:`setter cannot be specified for a readonly property`|
7359+-----------------------------------------------------------------------------------------+
7360
7361
7362-Wobjc-redundant-api-use
7363------------------------
7364Synonym for `-Wobjc-redundant-literal-use`_.
7365
7366
7367-Wobjc-redundant-literal-use
7368----------------------------
7369This diagnostic is enabled by default.
7370
7371**Diagnostic text:**
7372
7373+-------------------------------------------------------------------------------------------------------------------+
7374|:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with a literal is redundant`|
7375+-------------------------------------------------------------------------------------------------------------------+
7376
7377
7378-Wobjc-root-class
7379-----------------
7380This diagnostic is enabled by default.
7381
7382**Diagnostic text:**
7383
7384+-------------------------------------------------------------------------------------------------------------------------------+
7385|:warning:`warning:` |nbsp| :diagtext:`class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`defined without specifying a base class`|
7386+-------------------------------------------------------------------------------------------------------------------------------+
7387
7388
7389-Wobjc-string-compare
7390---------------------
7391This diagnostic is enabled by default.
7392
7393**Diagnostic text:**
7394
7395+---------------------------------------------------------------------------------------------------+
7396|:warning:`warning:` |nbsp| :diagtext:`direct comparison of a string literal has undefined behavior`|
7397+---------------------------------------------------------------------------------------------------+
7398
7399
7400-Wobjc-string-concatenation
7401---------------------------
7402This diagnostic is enabled by default.
7403
7404**Diagnostic text:**
7405
7406+-------------------------------------------------------------------------------------------------------------------------+
7407|:warning:`warning:` |nbsp| :diagtext:`concatenated NSString literal for an NSArray expression - possibly missing a comma`|
7408+-------------------------------------------------------------------------------------------------------------------------+
7409
7410
Richard Smith9a016602017-04-13 22:44:22 +00007411-Wobjc-unsafe-perform-selector
7412------------------------------
7413This diagnostic is enabled by default.
7414
7415**Diagnostic text:**
7416
7417+-------------------------------------------------------------------------------------------------------------------+--------------------+------------------------+
7418|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with selectors that return a` |nbsp| |+------------------+| |nbsp| :diagtext:`type`|
7419| ||:diagtext:`struct`|| |
7420| |+------------------+| |
7421| ||:diagtext:`union` || |
7422| |+------------------+| |
7423| ||:diagtext:`vector`|| |
7424| |+------------------+| |
7425+-------------------------------------------------------------------------------------------------------------------+--------------------+------------------------+
7426
7427
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007428-Wodr
7429-----
7430This diagnostic is enabled by default.
7431
7432**Diagnostic text:**
7433
7434+--------------------------------------------------------------------------------------------------------------------------------------------------+
7435|:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has incompatible definitions in different translation units`|
7436+--------------------------------------------------------------------------------------------------------------------------------------------------+
7437
7438
7439-Wold-style-cast
7440----------------
7441**Diagnostic text:**
7442
7443+------------------------------------------------------------+
7444|:warning:`warning:` |nbsp| :diagtext:`use of old-style cast`|
7445+------------------------------------------------------------+
7446
7447
7448-Wold-style-definition
7449----------------------
7450This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
7451
7452-Wopencl-unsupported-rgba
7453-------------------------
7454This diagnostic is enabled by default.
7455
7456**Diagnostic text:**
7457
7458+----------------------------------------------------------------------------------------------------------------------------+
7459|:warning:`warning:` |nbsp| :diagtext:`vector component name '`:placeholder:`A`:diagtext:`' is an OpenCL version 2.2 feature`|
7460+----------------------------------------------------------------------------------------------------------------------------+
7461
7462
7463-Wopenmp-clauses
7464----------------
7465This diagnostic is enabled by default.
7466
7467**Diagnostic text:**
7468
7469+-------------------------------------------------------------------------------------------------------------------------+
7470|:warning:`warning:` |nbsp| :diagtext:`aligned clause will be ignored because the requested alignment is not a power of 2`|
7471+-------------------------------------------------------------------------------------------------------------------------+
7472
7473+---------------------------------------------------------------------------------+---------------------------------------------------+-------------------------------------+
7474|:warning:`warning:` |nbsp| :diagtext:`zero linear step (`:placeholder:`A` |nbsp| |+-------------------------------------------------+|:diagtext:`should probably be const)`|
7475| || || |
7476| |+-------------------------------------------------+| |
7477| ||:diagtext:`and other variables in clause` |nbsp| || |
7478| |+-------------------------------------------------+| |
7479+---------------------------------------------------------------------------------+---------------------------------------------------+-------------------------------------+
7480
7481
7482-Wopenmp-loop-form
7483------------------
7484This diagnostic is enabled by default.
7485
7486**Diagnostic text:**
7487
7488+-----------------------------------------------------------------------------------------------------------------------------------------+
7489|:warning:`warning:` |nbsp| :diagtext:`initialization clause of OpenMP for loop is not in canonical form ('var = init' or 'T var = init')`|
7490+-----------------------------------------------------------------------------------------------------------------------------------------+
7491
7492+-----------------------------------------------------------------------------------------------------------------------------+
7493|:warning:`warning:` |nbsp| :diagtext:`OpenMP loop iteration variable cannot have more than 64 bits size and will be narrowed`|
7494+-----------------------------------------------------------------------------------------------------------------------------+
7495
7496
7497-Wopenmp-target
7498---------------
7499This diagnostic is enabled by default.
7500
7501**Diagnostic text:**
7502
Richard Smithcf9f4222017-01-20 19:27:09 +00007503+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7504|:warning:`warning:` |nbsp| :diagtext:`The OpenMP offloading target '`:placeholder:`A`:diagtext:`' is similar to target '`:placeholder:`B`:diagtext:`' already specified - will be ignored.`|
7505+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7506
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007507+-----------------------------------------------------------------------------------------------+
7508|:warning:`warning:` |nbsp| :diagtext:`declaration is not declared in any declare target region`|
7509+-----------------------------------------------------------------------------------------------+
7510
7511
7512-Woption-ignored
7513----------------
7514This diagnostic is enabled by default.
7515
7516**Diagnostic text:**
7517
7518+----------------------------------------------------------------------------------------------------------------------------+
7519|:warning:`warning:` |nbsp| :diagtext:`option '`:placeholder:`A`:diagtext:`' was ignored by the PS4 toolchain, using '-fPIC'`|
7520+----------------------------------------------------------------------------------------------------------------------------+
7521
7522
7523-Wout-of-line-declaration
7524-------------------------
7525This diagnostic is an error by default, but the flag ``-Wno-out-of-line-declaration`` can be used to disable the error.
7526
7527**Diagnostic text:**
7528
7529+-------------------------------------------------------------------------------------------+
7530|:error:`error:` |nbsp| :diagtext:`out-of-line declaration of a member must be a definition`|
7531+-------------------------------------------------------------------------------------------+
7532
7533
7534-Wover-aligned
7535--------------
7536**Diagnostic text:**
7537
7538+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7539|:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires` |nbsp| :placeholder:`B` |nbsp| :diagtext:`bytes of alignment and the default allocator only guarantees` |nbsp| :placeholder:`C` |nbsp| :diagtext:`bytes`|
7540+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7541
7542
7543-Woverflow
7544----------
7545This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
7546
7547-Woverlength-strings
7548--------------------
7549**Diagnostic text:**
7550
7551+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------------------------------------+
7552|:warning:`warning:` |nbsp| :diagtext:`string literal of length` |nbsp| :placeholder:`A` |nbsp| :diagtext:`exceeds maximum length` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that` |nbsp| |+-------------------+| |nbsp| :diagtext:`compilers are required to support`|
7553| ||:diagtext:`C90` || |
7554| |+-------------------+| |
7555| ||:diagtext:`ISO C99`|| |
7556| |+-------------------+| |
7557| ||:diagtext:`C++` || |
7558| |+-------------------+| |
7559+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------------------------------------+
7560
7561
7562-Woverloaded-shift-op-parentheses
7563---------------------------------
7564This diagnostic is enabled by default.
7565
7566**Diagnostic text:**
7567
7568+------------------------------------------------------------------+----------------+------------------------------------------------------------------+
7569|:warning:`warning:` |nbsp| :diagtext:`overloaded operator` |nbsp| |+--------------+| |nbsp| :diagtext:`has higher precedence than comparison operator`|
7570| ||:diagtext:`>>`|| |
7571| |+--------------+| |
7572| ||:diagtext:`<<`|| |
7573| |+--------------+| |
7574+------------------------------------------------------------------+----------------+------------------------------------------------------------------+
7575
7576
7577-Woverloaded-virtual
7578--------------------
7579**Diagnostic text:**
7580
7581+-----------------------------------------------------------------------------------------------+-----------------------+
7582|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`hides overloaded virtual` |nbsp| |+---------------------+|
7583| ||:diagtext:`function` ||
7584| |+---------------------+|
7585| ||:diagtext:`functions`||
7586| |+---------------------+|
7587+-----------------------------------------------------------------------------------------------+-----------------------+
7588
7589
7590-Woverride-module
7591-----------------
7592This diagnostic is enabled by default.
7593
7594**Diagnostic text:**
7595
7596+-------------------------------------------------------------------------------------------------------+
7597|:warning:`warning:` |nbsp| :diagtext:`overriding the module target triple with` |nbsp| :placeholder:`A`|
7598+-------------------------------------------------------------------------------------------------------+
7599
7600
7601-Woverriding-method-mismatch
7602----------------------------
7603**Diagnostic text:**
7604
7605+-------------------------------------------------------------------------------------------------------------------------------------------+
7606|:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on parameter type in declaration of` |nbsp| :placeholder:`A`|
7607+-------------------------------------------------------------------------------------------------------------------------------------------+
7608
7609+------------------------------------------------------------------------------------------------------------+
7610|:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in declaration of` |nbsp| :placeholder:`A`|
7611+------------------------------------------------------------------------------------------------------------+
7612
7613+----------------------------------------------------------------------------------------------------------------------------------------+
7614|:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on return type in declaration of` |nbsp| :placeholder:`A`|
7615+----------------------------------------------------------------------------------------------------------------------------------------+
7616
7617+--------------------------------------------------------------------------------------------------------+
7618|:warning:`warning:` |nbsp| :diagtext:`conflicting return type in declaration of` |nbsp| :placeholder:`A`|
7619+--------------------------------------------------------------------------------------------------------+
7620
7621+--------------------------------------------------------------------------------------------------------+
7622|:warning:`warning:` |nbsp| :diagtext:`conflicting variadic declaration of method and its implementation`|
7623+--------------------------------------------------------------------------------------------------------+
7624
7625+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7626|:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in declaration of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp| :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`|
7627+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7628
7629+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7630|:warning:`warning:` |nbsp| :diagtext:`conflicting return type in declaration of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp| :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`|
7631+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7632
7633
7634-Woverriding-t-option
7635---------------------
7636This diagnostic is enabled by default.
7637
7638**Diagnostic text:**
7639
7640+---------------------------------------------------------------------------------------------------------------------------+
7641|:warning:`warning:` |nbsp| :diagtext:`overriding '`:placeholder:`A`:diagtext:`' option with '`:placeholder:`B`:diagtext:`'`|
7642+---------------------------------------------------------------------------------------------------------------------------+
7643
7644
7645-Wpacked
7646--------
7647**Diagnostic text:**
7648
7649+--------------------------------------------------------------------------------------------------+
7650|:warning:`warning:` |nbsp| :diagtext:`packed attribute is unnecessary for` |nbsp| :placeholder:`A`|
7651+--------------------------------------------------------------------------------------------------+
7652
7653
7654-Wpadded
7655--------
7656**Diagnostic text:**
7657
7658+------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+------------------------------------------------+
7659|:warning:`warning:` |nbsp| :diagtext:`padding` |nbsp| |+---------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with` |nbsp| :placeholder:`C` |nbsp| |+----------------+|+-------------+| |nbsp| :diagtext:`to align anonymous bit-field`|
7660| ||:diagtext:`struct` || ||:diagtext:`byte`||| || |
7661| |+---------------------+| |+----------------+|+-------------+| |
7662| ||:diagtext:`interface`|| ||:diagtext:`bit` |||:diagtext:`s`|| |
7663| |+---------------------+| |+----------------+|+-------------+| |
7664| ||:diagtext:`class` || | | | |
7665| |+---------------------+| | | | |
7666+------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+------------------------------------------------+
7667
7668+------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+----------------------------------------------------+
7669|:warning:`warning:` |nbsp| :diagtext:`padding` |nbsp| |+---------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with` |nbsp| :placeholder:`C` |nbsp| |+----------------+|+-------------+| |nbsp| :diagtext:`to align` |nbsp| :placeholder:`E`|
7670| ||:diagtext:`struct` || ||:diagtext:`byte`||| || |
7671| |+---------------------+| |+----------------+|+-------------+| |
7672| ||:diagtext:`interface`|| ||:diagtext:`bit` |||:diagtext:`s`|| |
7673| |+---------------------+| |+----------------+|+-------------+| |
7674| ||:diagtext:`class` || | | | |
7675| |+---------------------+| | | | |
7676+------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+----------------------------------------------------+
7677
7678+--------------------------------------------------------------------------------------------------------------------------------------+------------------+---------------+-----------------------------------------+
7679|:warning:`warning:` |nbsp| :diagtext:`padding size of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with` |nbsp| :placeholder:`B` |nbsp| |+----------------+|+-------------+| |nbsp| :diagtext:`to alignment boundary`|
7680| ||:diagtext:`byte`||| || |
7681| |+----------------+|+-------------+| |
7682| ||:diagtext:`bit` |||:diagtext:`s`|| |
7683| |+----------------+|+-------------+| |
7684+--------------------------------------------------------------------------------------------------------------------------------------+------------------+---------------+-----------------------------------------+
7685
7686
7687-Wparentheses
7688-------------
7689This diagnostic is enabled by default.
7690
Richard Smith8cba2912016-09-14 01:55:42 +00007691Also controls `-Wbitwise-op-parentheses`_, `-Wdangling-else`_, `-Wlogical-not-parentheses`_, `-Wlogical-op-parentheses`_, `-Woverloaded-shift-op-parentheses`_, `-Wparentheses-equality`_, `-Wshift-op-parentheses`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007692
7693**Diagnostic text:**
7694
7695+-----------------------------------------------------------------------------------------------------------+
7696|:warning:`warning:` |nbsp| :diagtext:`using the result of an assignment as a condition without parentheses`|
7697+-----------------------------------------------------------------------------------------------------------+
7698
7699+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7700|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has lower precedence than` |nbsp| :placeholder:`B`:diagtext:`;` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will be evaluated first`|
7701+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7702
7703+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7704|:warning:`warning:` |nbsp| :diagtext:`operator '?:' has lower precedence than '`:placeholder:`A`:diagtext:`'; '`:placeholder:`A`:diagtext:`' will be evaluated first`|
7705+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7706
7707
7708-Wparentheses-equality
7709----------------------
7710This diagnostic is enabled by default.
7711
7712**Diagnostic text:**
7713
7714+--------------------------------------------------------------------------------------+
7715|:warning:`warning:` |nbsp| :diagtext:`equality comparison with extraneous parentheses`|
7716+--------------------------------------------------------------------------------------+
7717
7718
7719-Wpartial-availability
7720----------------------
7721Synonym for `-Wunguarded-availability`_.
7722
7723
7724-Rpass
7725------
7726**Diagnostic text:**
7727
7728The text of this diagnostic is not controlled by Clang.
7729
7730
7731-Rpass-analysis
7732---------------
7733**Diagnostic text:**
7734
7735The text of this diagnostic is not controlled by Clang.
7736
7737+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7738|:remark:`remark:` |nbsp| :placeholder:`A`:diagtext:`; 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!`|
7739+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7740
7741+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7742|:remark:`remark:` |nbsp| :placeholder:`A`:diagtext:`; allow reordering by specifying '#pragma clang loop vectorize(enable)' before the loop or by providing the compiler option '-ffast-math'.`|
7743+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7744
7745
7746-Wpass-failed
7747-------------
7748This diagnostic is enabled by default.
7749
7750**Diagnostic text:**
7751
7752The text of this diagnostic is not controlled by Clang.
7753
7754
7755-Rpass-missed
7756-------------
7757**Diagnostic text:**
7758
7759The text of this diagnostic is not controlled by Clang.
7760
7761
7762-Wpch-date-time
7763---------------
7764This diagnostic is enabled by default.
7765
7766**Diagnostic text:**
7767
7768+---------------------------+--------------------------------+-----------------------------------------------------+
7769|:warning:`warning:` |nbsp| |+------------------------------+| |nbsp| :diagtext:`uses \_\_DATE\_\_ or \_\_TIME\_\_`|
7770| ||:diagtext:`precompiled header`|| |
7771| |+------------------------------+| |
7772| ||:diagtext:`module` || |
7773| |+------------------------------+| |
7774+---------------------------+--------------------------------+-----------------------------------------------------+
7775
7776
7777-Wpedantic
7778----------
Richard Smith8cba2912016-09-14 01:55:42 +00007779Also 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`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007780
7781**Diagnostic text:**
7782
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007783+------------------------------------------------------------------------+
7784|:warning:`warning:` |nbsp| :diagtext:`'enable\_if' is a clang extension`|
7785+------------------------------------------------------------------------+
7786
Richard Smithcf9f4222017-01-20 19:27:09 +00007787+--------------------------------------------------------------------------+
7788|:warning:`warning:` |nbsp| :diagtext:`'diagnose\_if' is a clang extension`|
7789+--------------------------------------------------------------------------+
7790
Richard Smithce9d5862016-09-14 01:51:10 +00007791+--------------------------------------------------------------------------------+
7792|:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C99 feature`|
7793+--------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007794
Richard Smithce9d5862016-09-14 01:51:10 +00007795+--------------------------------------------------------------------------------------------+
7796|:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow 'main' to be used by a program`|
7797+--------------------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007798
Richard Smithce9d5862016-09-14 01:51:10 +00007799+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+
7800|:warning:`warning:` |nbsp| :diagtext:`C++98 requires an accessible copy constructor for class` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary; was` |nbsp| |+---------------------+|
7801| ||:diagtext:`private` ||
7802| |+---------------------+|
7803| ||:diagtext:`protected`||
7804| |+---------------------+|
7805+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007806
Richard Smithce9d5862016-09-14 01:51:10 +00007807+--------------------------------------------------------+--------------------+------------------------------------------------------------+
7808|:warning:`warning:` |nbsp| :diagtext:`anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`cannot be '`:placeholder:`B`:diagtext:`'`|
7809| ||:diagtext:`struct`|| |
7810| |+------------------+| |
7811| ||:diagtext:`union` || |
7812| |+------------------+| |
7813+--------------------------------------------------------+--------------------+------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007814
7815+--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
7816|:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp| |+---------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when binding a reference to a temporary`|
7817| ||:diagtext:`copying variable` || |
7818| |+---------------------------------------+| |
7819| ||:diagtext:`copying parameter` || |
7820| |+---------------------------------------+| |
7821| ||:diagtext:`returning object` || |
7822| |+---------------------------------------+| |
7823| ||:diagtext:`throwing object` || |
7824| |+---------------------------------------+| |
7825| ||:diagtext:`copying member subobject` || |
7826| |+---------------------------------------+| |
7827| ||:diagtext:`copying array element` || |
7828| |+---------------------------------------+| |
7829| ||:diagtext:`allocating object` || |
7830| |+---------------------------------------+| |
7831| ||:diagtext:`copying temporary` || |
7832| |+---------------------------------------+| |
7833| ||:diagtext:`initializing base subobject`|| |
7834| |+---------------------------------------+| |
7835| ||:diagtext:`initializing vector element`|| |
7836| |+---------------------------------------+| |
7837| ||:diagtext:`capturing value` || |
7838| |+---------------------------------------+| |
7839+--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
7840
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007841+--------------------------------------------------------------------------------------------------------------------------------------+
7842|:warning:`warning:` |nbsp| :diagtext:`parameter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`was not declared, defaulting to type 'int'`|
7843+--------------------------------------------------------------------------------------------------------------------------------------+
7844
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007845+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7846|:warning:`warning:` |nbsp| :diagtext:`qualifier in explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires a template-id (a typedef is not permitted)`|
7847+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7848
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007849+-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+
7850|:warning:`warning:` |nbsp| :diagtext:`static` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is used in an inline function with external linkage`|
7851| ||:diagtext:`function`|| |
7852| |+--------------------+| |
7853| ||:diagtext:`variable`|| |
7854| |+--------------------+| |
7855+-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+
7856
Richard Smithce9d5862016-09-14 01:51:10 +00007857+---------------------------------------------------------------------------------------+
7858|:warning:`warning:` |nbsp| :diagtext:`ISO C forbids forward references to 'enum' types`|
7859+---------------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007860
7861+----------------------------------------------------------------------------------------------------------------------------------------------+-------------------+-------------+
7862|:warning:`warning:` |nbsp| :diagtext:`ISO C restricts enumerator values to range of 'int' (`:placeholder:`A` |nbsp| :diagtext:`is too` |nbsp| |+-----------------+|:diagtext:`)`|
7863| ||:diagtext:`small`|| |
7864| |+-----------------+| |
7865| ||:diagtext:`large`|| |
7866| |+-----------------+| |
7867+----------------------------------------------------------------------------------------------------------------------------------------------+-------------------+-------------+
7868
Richard Smithce9d5862016-09-14 01:51:10 +00007869+--------------------------------------------------------------------------------------------------+
7870|:warning:`warning:` |nbsp| :diagtext:`size of static array must be an integer constant expression`|
7871+--------------------------------------------------------------------------------------------------+
7872
7873+-----------------------------------------------------------------------------------------------+
7874|:warning:`warning:` |nbsp| :diagtext:`initializer for aggregate is not a compile-time constant`|
7875+-----------------------------------------------------------------------------------------------+
7876
7877+-------------------------------------------------------------------------------+
7878|:warning:`warning:` |nbsp| :diagtext:`flexible array members are a C99 feature`|
7879+-------------------------------------------------------------------------------+
7880
7881+---------------------------------------------------------------+-----------------------+--------------------------------+
7882|:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a function type`|
7883| ||:diagtext:`sizeof` || |
7884| |+---------------------+| |
7885| ||:diagtext:`alignof` || |
7886| |+---------------------+| |
7887| ||:diagtext:`vec\_step`|| |
7888| |+---------------------+| |
7889+---------------------------------------------------------------+-----------------------+--------------------------------+
7890
7891+---------------------------------------------------------------+-----------------------+----------------------------+
7892|:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a void type`|
7893| ||:diagtext:`sizeof` || |
7894| |+---------------------+| |
7895| ||:diagtext:`alignof` || |
7896| |+---------------------+| |
7897| ||:diagtext:`vec\_step`|| |
7898| |+---------------------+| |
7899+---------------------------------------------------------------+-----------------------+----------------------------+
7900
7901+-------------------------------------------------------------------------------------------+
7902|:warning:`warning:` |nbsp| :diagtext:`ISO C90 does not allow subscripting non-lvalue array`|
7903+-------------------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007904
7905+----------------------------------------------------------------------------------------+
Richard Smithce9d5862016-09-14 01:51:10 +00007906|:warning:`warning:` |nbsp| :diagtext:`subscript of a pointer to void is a GNU extension`|
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007907+----------------------------------------------------------------------------------------+
7908
Richard Smithce9d5862016-09-14 01:51:10 +00007909+-------------------------------------------------------------------------------------------------------+
7910|:warning:`warning:` |nbsp| :diagtext:`ISO C forbids taking the address of an expression of type 'void'`|
7911+-------------------------------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007912
Richard Smithce9d5862016-09-14 01:51:10 +00007913+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7914|:warning:`warning:` |nbsp| :diagtext:`ordered comparison between pointer and zero (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is an extension`|
7915+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007916
7917+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7918|:warning:`warning:` |nbsp| :diagtext:`equality comparison between function pointer and void pointer (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`)`|
7919+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
7920
Richard Smithce9d5862016-09-14 01:51:10 +00007921+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+
7922|:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to void is a GNU extension`|
7923| || |nbsp| :diagtext:`a`|| || || |
7924| |+---------------------+| |+-------------+| |
7925| || || ||:diagtext:`s`|| |
7926| |+---------------------+| |+-------------+| |
7927+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007928
Richard Smithce9d5862016-09-14 01:51:10 +00007929+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+
7930|:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to`|+-----------------------+| |nbsp| :diagtext:`function type`|+-------------+| |nbsp| :placeholder:`B`|+-------------------------------------------------+| |nbsp| :diagtext:`is a GNU extension`|
7931| || |nbsp| :diagtext:`a`|| || || || |nbsp| :diagtext:`the`|| || || || || |
7932| |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| |+-------------------------------------------------+| |
7933| || || ||:diagtext:`s`|| || || ||:diagtext:`s`|| ||+-----------------------------------------------+|| |
7934| |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| ||| |nbsp| :diagtext:`and` |nbsp| :placeholder:`D`||| |
7935| | | | | | | | | ||+-----------------------------------------------+|| |
7936| | | | | | | | | |+-------------------------------------------------+| |
7937+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007938
Richard Smithce9d5862016-09-14 01:51:10 +00007939+-----------------------------------------------------------------------------------------------------------------------+
7940|:warning:`warning:` |nbsp| :diagtext:`ISO C does not support '++'/'--' on complex integer type` |nbsp| :placeholder:`A`|
7941+-----------------------------------------------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007942
Richard Smithce9d5862016-09-14 01:51:10 +00007943+--------------------------------------------------------------------------------------------------------------------+
7944|:warning:`warning:` |nbsp| :diagtext:`ISO C does not support '~' for complex conjugation of` |nbsp| :placeholder:`A`|
7945+--------------------------------------------------------------------------------------------------------------------+
7946
7947+------------------------------------------------------------------------------------------------------------+
7948|:warning:`warning:` |nbsp| :diagtext:`complex numbers are an extension in a freestanding C99 implementation`|
7949+------------------------------------------------------------------------------------------------------------+
7950
7951+-------------------------------------------------------------------------------------------------------------+
7952|:warning:`warning:` |nbsp| :diagtext:`cast between pointer-to-function and pointer-to-object is an extension`|
7953+-------------------------------------------------------------------------------------------------------------+
7954
7955+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+
7956|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a C++11 extension`|
7957| ||:diagtext:`integral` || |
7958| |+-----------------------+| |
7959| ||:diagtext:`enumeration`|| |
7960| |+-----------------------+| |
7961+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00007962
7963+---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------+
7964|:warning:`warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`converts between void pointer and function pointer`|
7965| ||:diagtext:`assigning to different types` || |
7966| |+--------------------------------------------------------------+| |
7967| ||:diagtext:`passing to parameter of different type` || |
7968| |+--------------------------------------------------------------+| |
7969| ||:diagtext:`returning from function with different return type`|| |
7970| |+--------------------------------------------------------------+| |
7971| ||:diagtext:`converting between types` || |
7972| |+--------------------------------------------------------------+| |
7973| ||:diagtext:`initializing with expression of different type` || |
7974| |+--------------------------------------------------------------+| |
7975| ||:diagtext:`sending to parameter of different type` || |
7976| |+--------------------------------------------------------------+| |
7977| ||:diagtext:`casting between types` || |
7978| |+--------------------------------------------------------------+| |
7979+---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------+
7980
Richard Smithce9d5862016-09-14 01:51:10 +00007981+--------------------------------------------------------------------------------------------------------------------------------------------------------+
7982|:warning:`warning:` |nbsp| :diagtext:`kernel function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a member function; this may not be accepted by nvcc`|
7983+--------------------------------------------------------------------------------------------------------------------------------------------------------+
7984
7985+--------------------------------------------------------------------------------------------------+
7986|:warning:`warning:` |nbsp| :diagtext:`C99 forbids conditional expressions with only one void side`|
7987+--------------------------------------------------------------------------------------------------+
7988
7989+-------------------------------------------------------------------------------------------------------------------------------------+
7990|:warning:`warning:` |nbsp| :diagtext:`C99 forbids casting nonscalar type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to the same type`|
7991+-------------------------------------------------------------------------------------------------------------------------------------+
7992
7993+---------------------------------------------------------------------------------------------------------------------------+
7994|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++14 extension`|
7995+---------------------------------------------------------------------------------------------------------------------------+
7996
7997+---------------------------------------------------------------------------------------------------------------------------+
7998|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++1z extension`|
7999+---------------------------------------------------------------------------------------------------------------------------+
8000
8001+-----------------------------------------------------------------------------+--------------------+---------------------------------------------+
8002|:warning:`warning:` |nbsp| :diagtext:`types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`are a Microsoft extension`|
8003| ||:diagtext:`struct`|| |
8004| |+------------------+| |
8005| ||:diagtext:`union` || |
8006| |+------------------+| |
8007+-----------------------------------------------------------------------------+--------------------+---------------------------------------------+
8008
8009+---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+
8010|:warning:`warning:` |nbsp| :diagtext:`void` |nbsp| |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return void expression`|
8011| ||:diagtext:`function`|| |
8012| |+--------------------+| |
8013| ||:diagtext:`method` || |
8014| |+--------------------+| |
8015| ||:diagtext:`block` || |
8016| |+--------------------+| |
8017+---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+
8018
8019+--------------------------------------------------------------------------------------------------+
8020|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' cannot be signed or unsigned`|
8021+--------------------------------------------------------------------------------------------------+
8022
8023+---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+
8024|:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`array size` |nbsp| |+---------------------+|:diagtext:`is a C99 feature`|
8025| ||:diagtext:`qualifier in` |nbsp| || || || |
8026| |+--------------------------------+| |+---------------------+| |
8027| ||:diagtext:`static` |nbsp| || || || |
8028| |+--------------------------------+| |+---------------------+| |
8029| || || ||:diagtext:`'\[\*\] '`|| |
8030| |+--------------------------------+| |+---------------------+| |
8031+---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00008032
8033+--------------------------------------------------------+------------------------------------------------+
8034|:warning:`warning:` |nbsp| :diagtext:`extra ';'` |nbsp| |+----------------------------------------------+|
8035| ||:diagtext:`outside of a function` ||
8036| |+----------------------------------------------+|
8037| ||+--------------------------------------------+||
8038| |||:diagtext:`inside a` |nbsp| :placeholder:`B`|||
8039| ||+--------------------------------------------+||
8040| |+----------------------------------------------+|
8041| ||:diagtext:`inside instance variable list` ||
8042| |+----------------------------------------------+|
8043| ||:diagtext:`after member function definition` ||
8044| |+----------------------------------------------+|
8045+--------------------------------------------------------+------------------------------------------------+
8046
Richard Smithce9d5862016-09-14 01:51:10 +00008047+-----------------------------------------------------------------------------------------+
8048|:warning:`warning:` |nbsp| :diagtext:`'\_\_thread' before '`:placeholder:`A`:diagtext:`'`|
8049+-----------------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00008050
8051+----------------------------------------------------------------------------------------+
Richard Smithce9d5862016-09-14 01:51:10 +00008052|:warning:`warning:` |nbsp| :diagtext:`type-less parameter names in function declaration`|
Richard Smithb6a3b4b2016-09-12 05:58:29 +00008053+----------------------------------------------------------------------------------------+
8054
Richard Smithce9d5862016-09-14 01:51:10 +00008055+-------------------------------------------------------------------------------------------------+
8056|:warning:`warning:` |nbsp| :diagtext:`variable declaration in for loop is a C99-specific feature`|
8057+-------------------------------------------------------------------------------------------------+
8058
8059+-----------------------------------------------------------------------------------+
8060|:warning:`warning:` |nbsp| :diagtext:`compound literals are a C99-specific feature`|
8061+-----------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00008062
8063+-------------------------------------------------------------------------------------------------------+
8064|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C99-specific feature`|
8065+-------------------------------------------------------------------------------------------------------+
8066
Richard Smithce9d5862016-09-14 01:51:10 +00008067+--------------------------------------------------------------------------------------------------+
8068|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C++11 extension`|
8069+--------------------------------------------------------------------------------------------------+
8070
Richard Smithb6a3b4b2016-09-12 05:58:29 +00008071+-----------------------------------------------------------------------------------------------------------+
8072|:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a C++11 extension`|
8073+-----------------------------------------------------------------------------------------------------------+
8074
Richard Smithce9d5862016-09-14 01:51:10 +00008075+-----------------------------------------------------------------------+
8076|:warning:`warning:` |nbsp| :diagtext:`use of GNU array range extension`|
8077+-----------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00008078
Richard Smithce9d5862016-09-14 01:51:10 +00008079+------------------------------------------------------------------------------------------------+
8080|:warning:`warning:` |nbsp| :diagtext:`exception specification of '...' is a Microsoft extension`|
8081+------------------------------------------------------------------------------------------------+
8082
8083+-----------------------------------------------------------------------------+
8084|:warning:`warning:` |nbsp| :diagtext:`extern templates are a C++11 extension`|
8085+-----------------------------------------------------------------------------+
8086
8087+------------------------------------------------------------+
8088|:warning:`warning:` |nbsp| :diagtext:`multi-line // comment`|
8089+------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00008090
8091+-----------------------------------------------------------------------------------+
8092|:warning:`warning:` |nbsp| :diagtext:`// comments are not allowed in this language`|
8093+-----------------------------------------------------------------------------------+
8094
Richard Smithce9d5862016-09-14 01:51:10 +00008095+----------------------------------------------------------------+
8096|:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`|
8097+----------------------------------------------------------------+
8098
8099+------------------------------------------------------------------------------------------------------------+
8100|:warning:`warning:` |nbsp| :diagtext:`use of non-standard escape character '\\`:placeholder:`A`:diagtext:`'`|
8101+------------------------------------------------------------------------------------------------------------+
8102
8103+---------------------------------------------------------------------------------------+
8104|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating constants are a C99 feature`|
8105+---------------------------------------------------------------------------------------+
8106
8107+----------------------------------------------------------------------------------------+
8108|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are a C++1z feature`|
8109+----------------------------------------------------------------------------------------+
8110
8111+---------------------------------------------------------------------+
8112|:warning:`warning:` |nbsp| :diagtext:`#ident is a language extension`|
8113+---------------------------------------------------------------------+
8114
8115+-----------------------------------------------------------------------+
8116|:warning:`warning:` |nbsp| :diagtext:`#warning is a language extension`|
8117+-----------------------------------------------------------------------+
8118
8119+-----------------------------------------------------------------------+
8120|:warning:`warning:` |nbsp| :diagtext:`comma operator in operand of #if`|
8121+-----------------------------------------------------------------------+
8122
8123+----------------------------------------------------------------------------------------------------------------+
8124|:warning:`warning:` |nbsp| :diagtext:`\_\_VA\_ARGS\_\_ can only appear in the expansion of a C99 variadic macro`|
8125+----------------------------------------------------------------------------------------------------------------+
8126
8127+------------------------------------------------------------------------------+
8128|:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are a C99 feature`|
8129+------------------------------------------------------------------------------+
8130
8131+----------------------------------------------------------------------------------------------------------------------------------------+
8132|:warning:`warning:` |nbsp| :diagtext:`C requires #line number to be less than` |nbsp| :placeholder:`A`:diagtext:`, allowed as extension`|
8133+----------------------------------------------------------------------------------------------------------------------------------------+
8134
8135+-------------------------------------------------------------------------------------------------+
8136|:warning:`warning:` |nbsp| :diagtext:`macro expansion producing 'defined' has undefined behavior`|
8137+-------------------------------------------------------------------------------------------------+
8138
Richard Smithb6a3b4b2016-09-12 05:58:29 +00008139
8140-Wpedantic-core-features
8141------------------------
8142**Diagnostic text:**
8143
8144+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
8145|:warning:`warning:` |nbsp| :diagtext:`OpenCL extension` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is core feature or supported optional core feature - ignoring`|
8146+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
8147
8148
8149-Wpessimizing-move
8150------------------
8151**Diagnostic text:**
8152
8153+--------------------------------------------------------------------------------------+
8154|:warning:`warning:` |nbsp| :diagtext:`moving a temporary object prevents copy elision`|
8155+--------------------------------------------------------------------------------------+
8156
8157+--------------------------------------------------------------------------------------------------------+
8158|:warning:`warning:` |nbsp| :diagtext:`moving a local object in a return statement prevents copy elision`|
8159+--------------------------------------------------------------------------------------------------------+
8160
8161
8162-Wpointer-arith
8163---------------
8164Some of the diagnostics controlled by this flag are enabled by default.
8165
8166**Diagnostic text:**
8167
8168+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+
8169|:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to`|+-----------------------+| |nbsp| :diagtext:`function type`|+-------------+| |nbsp| :placeholder:`B`|+-------------------------------------------------+| |nbsp| :diagtext:`is a GNU extension`|
8170| || |nbsp| :diagtext:`a`|| || || || |nbsp| :diagtext:`the`|| || || || || |
8171| |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| |+-------------------------------------------------+| |
8172| || || ||:diagtext:`s`|| || || ||:diagtext:`s`|| ||+-----------------------------------------------+|| |
8173| |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| ||| |nbsp| :diagtext:`and` |nbsp| :placeholder:`D`||| |
8174| | | | | | | | | ||+-----------------------------------------------+|| |
8175| | | | | | | | | |+-------------------------------------------------+| |
8176+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+
8177
8178+----------------------------------------------------------------------------------------+
8179|:warning:`warning:` |nbsp| :diagtext:`subscript of a pointer to void is a GNU extension`|
8180+----------------------------------------------------------------------------------------+
8181
8182+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+
8183|:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to void is a GNU extension`|
8184| || |nbsp| :diagtext:`a`|| || || |
8185| |+---------------------+| |+-------------+| |
8186| || || ||:diagtext:`s`|| |
8187| |+---------------------+| |+-------------+| |
8188+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+
8189
8190+---------------------------------------------------------------+-----------------------+--------------------------------+
8191|:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a function type`|
8192| ||:diagtext:`sizeof` || |
8193| |+---------------------+| |
8194| ||:diagtext:`alignof` || |
8195| |+---------------------+| |
8196| ||:diagtext:`vec\_step`|| |
8197| |+---------------------+| |
8198+---------------------------------------------------------------+-----------------------+--------------------------------+
8199
8200+---------------------------------------------------------------+-----------------------+----------------------------+
8201|:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a void type`|
8202| ||:diagtext:`sizeof` || |
8203| |+---------------------+| |
8204| ||:diagtext:`alignof` || |
8205| |+---------------------+| |
8206| ||:diagtext:`vec\_step`|| |
8207| |+---------------------+| |
8208+---------------------------------------------------------------+-----------------------+----------------------------+
8209
8210+-----------------------------------------------------------------------------------------------------------------------------------------------------+
8211|:warning:`warning:` |nbsp| :diagtext:`subtraction of pointers to type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of zero size has undefined behavior`|
8212+-----------------------------------------------------------------------------------------------------------------------------------------------------+
8213
8214
8215-Wpointer-bool-conversion
8216-------------------------
8217This diagnostic is enabled by default.
8218
8219**Diagnostic text:**
8220
8221+------------------------------------------------------+---------------------------+---------------------------------------------------------------------------------------------+
8222|:warning:`warning:` |nbsp| :diagtext:`nonnull` |nbsp| |+-------------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' will evaluate to 'true' on first encounter`|
8223| ||:diagtext:`function call`|| |
8224| |+-------------------------+| |
8225| ||:diagtext:`parameter` || |
8226| |+-------------------------+| |
8227+------------------------------------------------------+---------------------------+---------------------------------------------------------------------------------------------+
8228
8229+-------------------------------------------------+------------------------------+---------------------------------------------------------------------------------+
8230|:warning:`warning:` |nbsp| :diagtext:`address of`|+----------------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' will always evaluate to 'true'`|
8231| || || |
8232| |+----------------------------+| |
8233| || |nbsp| :diagtext:`function`|| |
8234| |+----------------------------+| |
8235| || |nbsp| :diagtext:`array` || |
8236| |+----------------------------+| |
8237+-------------------------------------------------+------------------------------+---------------------------------------------------------------------------------+
8238
8239
8240-Wpointer-sign
8241--------------
8242This diagnostic is enabled by default.
8243
8244**Diagnostic text:**
8245
8246+---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------------------+
8247|:warning:`warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`converts between pointers to integer types with different sign`|
8248| ||:diagtext:`assigning to different types` || |
8249| |+--------------------------------------------------------------+| |
8250| ||:diagtext:`passing to parameter of different type` || |
8251| |+--------------------------------------------------------------+| |
8252| ||:diagtext:`returning from function with different return type`|| |
8253| |+--------------------------------------------------------------+| |
8254| ||:diagtext:`converting between types` || |
8255| |+--------------------------------------------------------------+| |
8256| ||:diagtext:`initializing with expression of different type` || |
8257| |+--------------------------------------------------------------+| |
8258| ||:diagtext:`sending to parameter of different type` || |
8259| |+--------------------------------------------------------------+| |
8260| ||:diagtext:`casting between types` || |
8261| |+--------------------------------------------------------------+| |
8262+---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------------------+
8263
8264
8265-Wpointer-to-int-cast
8266---------------------
8267This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
8268
8269-Wpointer-type-mismatch
8270-----------------------
8271This diagnostic is enabled by default.
8272
8273**Diagnostic text:**
8274
8275+------------------------------------------------------------+
8276|:warning:`warning:` |nbsp| :diagtext:`pointer type mismatch`|
8277+------------------------------------------------------------+
8278
8279
8280-Wpotentially-evaluated-expression
8281----------------------------------
8282This diagnostic is enabled by default.
8283
8284**Diagnostic text:**
8285
8286+----------------------------------------------------------------------------------------------------------------------------------+
8287|:warning:`warning:` |nbsp| :diagtext:`expression with side effects will be evaluated despite being used as an operand to 'typeid'`|
8288+----------------------------------------------------------------------------------------------------------------------------------+
8289
8290
8291-Wpragma-once-outside-header
8292----------------------------
8293This diagnostic is enabled by default.
8294
8295**Diagnostic text:**
8296
8297+----------------------------------------------------------------+
8298|:warning:`warning:` |nbsp| :diagtext:`#pragma once in main file`|
8299+----------------------------------------------------------------+
8300
8301
8302-Wpragma-system-header-outside-header
8303-------------------------------------
8304This diagnostic is enabled by default.
8305
8306**Diagnostic text:**
8307
8308+----------------------------------------------------------------------------------+
8309|:warning:`warning:` |nbsp| :diagtext:`#pragma system\_header ignored in main file`|
8310+----------------------------------------------------------------------------------+
8311
8312
8313-Wpragmas
8314---------
8315Some of the diagnostics controlled by this flag are enabled by default.
8316
Richard Smith8cba2912016-09-14 01:55:42 +00008317Also controls `-Wignored-pragmas`_, `-Wunknown-pragmas`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00008318
8319**Diagnostic text:**
8320
8321+--------------------------------------------------------------------------------------------------------------------------------------+----------------------+------------------------+
8322|:warning:`warning:` |nbsp| :diagtext:`#pragma redefine\_extname is applicable to external C declarations only; not applied to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B`|
8323| ||:diagtext:`function`|| |
8324| |+--------------------+| |
8325| ||:diagtext:`variable`|| |
8326| |+--------------------+| |
8327+--------------------------------------------------------------------------------------------------------------------------------------+----------------------+------------------------+
8328
8329
8330-Wpredefined-identifier-outside-function
8331----------------------------------------
8332This diagnostic is enabled by default.
8333
8334**Diagnostic text:**
8335
8336+------------------------------------------------------------------------------------------+
8337|:warning:`warning:` |nbsp| :diagtext:`predefined identifier is only valid inside function`|
8338+------------------------------------------------------------------------------------------+
8339
8340
8341-Wprivate-extern
8342----------------
8343This diagnostic is enabled by default.
8344
8345**Diagnostic text:**
8346
8347+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8348|:warning:`warning:` |nbsp| :diagtext:`use of \_\_private\_extern\_\_ on a declaration may not produce external symbol private to the linkage unit and is deprecated`|
8349+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8350
8351
8352-Wprivate-header
8353----------------
8354This diagnostic is an error by default, but the flag ``-Wno-private-header`` can be used to disable the error.
8355
8356**Diagnostic text:**
8357
8358+----------------------------------------------------------------------------------------------------------------+
8359|:error:`error:` |nbsp| :diagtext:`use of private header from outside its module: '`:placeholder:`A`:diagtext:`'`|
8360+----------------------------------------------------------------------------------------------------------------+
8361
8362
Richard Smithcf9f4222017-01-20 19:27:09 +00008363-Wprivate-module
8364----------------
8365This diagnostic is enabled by default.
8366
8367**Diagnostic text:**
8368
8369+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8370|:warning:`warning:` |nbsp| :diagtext:`top-level module '`:placeholder:`A`:diagtext:`' in private module map, expected a submodule of '`:placeholder:`B`:diagtext:`'`|
8371+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8372
8373
Richard Smithb6a3b4b2016-09-12 05:58:29 +00008374-Wprofile-instr-out-of-date
8375---------------------------
8376This diagnostic is enabled by default.
8377
8378**Diagnostic text:**
8379
8380+------------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+-------------------+---------------------------------------------------------------+-------------------+--------------------------------------------------------+
8381|:warning:`warning:` |nbsp| :diagtext:`profile data may be out of date: of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`function`|+-------------+|:diagtext:`,` |nbsp| :placeholder:`B` |nbsp| |+-----------------+| |nbsp| :diagtext:`no data and` |nbsp| :placeholder:`C` |nbsp| |+-----------------+| |nbsp| :diagtext:`mismatched data that will be ignored`|
8382| || || ||:diagtext:`:has` || ||:diagtext:`:has` || |
8383| |+-------------+| |+-----------------+| |+-----------------+| |
8384| ||:diagtext:`s`|| ||:diagtext:`:have`|| ||:diagtext:`:have`|| |
8385| |+-------------+| |+-----------------+| |+-----------------+| |
8386+------------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+-------------------+---------------------------------------------------------------+-------------------+--------------------------------------------------------+
8387
8388
8389-Wprofile-instr-unprofiled
8390--------------------------
8391This diagnostic is enabled by default.
8392
8393**Diagnostic text:**
8394
8395+--------------------------------------------------------------------------------------------------------+
8396|:warning:`warning:` |nbsp| :diagtext:`no profile data available for file "`:placeholder:`A`:diagtext:`"`|
8397+--------------------------------------------------------------------------------------------------------+
8398
8399
8400-Wproperty-access-dot-syntax
8401----------------------------
8402This diagnostic is enabled by default.
8403
8404**Diagnostic text:**
8405
8406+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8407|:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found on object of type` |nbsp| :placeholder:`B`:diagtext:`; did you mean to access property` |nbsp| :placeholder:`C`:diagtext:`?`|
8408+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8409
8410
8411-Wproperty-attribute-mismatch
8412-----------------------------
8413This diagnostic is enabled by default.
8414
8415**Diagnostic text:**
8416
8417+-------------------------------------------------------------------------------------------------------------+
8418|:warning:`warning:` |nbsp| :diagtext:`property attribute in class extension does not match the primary class`|
8419+-------------------------------------------------------------------------------------------------------------+
8420
8421+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8422|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' attribute on property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not match the property inherited from` |nbsp| :placeholder:`C`|
8423+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8424
8425+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8426|:warning:`warning:` |nbsp| :diagtext:`getter name mismatch between property redeclaration (`:placeholder:`B`:diagtext:`) and its original declaration (`:placeholder:`A`:diagtext:`)`|
8427+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8428
8429+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8430|:warning:`warning:` |nbsp| :diagtext:`attribute 'readonly' of property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`restricts attribute 'readwrite' of property inherited from` |nbsp| :placeholder:`B`|
8431+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8432
8433
8434-Wprotocol
8435----------
8436This diagnostic is enabled by default.
8437
8438**Diagnostic text:**
8439
8440+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
8441|:warning:`warning:` |nbsp| :diagtext:`method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in protocol` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not implemented`|
8442+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
8443
8444
8445-Wprotocol-property-synthesis-ambiguity
8446---------------------------------------
8447This diagnostic is enabled by default.
8448
8449**Diagnostic text:**
8450
8451+-----------------------------------------------------------------------------------------------------------------------------+
8452|:warning:`warning:` |nbsp| :diagtext:`property of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`was selected for synthesis`|
8453+-----------------------------------------------------------------------------------------------------------------------------+
8454
8455
8456-Wqualified-void-return-type
8457----------------------------
8458This diagnostic is enabled by default.
8459
8460**Diagnostic text:**
8461
8462+---------------------------------------------------------------------------------------------------------+
8463|:warning:`warning:` |nbsp| :diagtext:`function cannot return qualified void type` |nbsp| :placeholder:`A`|
8464+---------------------------------------------------------------------------------------------------------+
8465
8466
8467-Wrange-loop-analysis
8468---------------------
8469**Diagnostic text:**
8470
8471+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8472|:warning:`warning:` |nbsp| :diagtext:`loop variable` |nbsp| :placeholder:`A` |nbsp| |nbsp| :diagtext:`is initialized with a value of a different type` |nbsp| :diagtext:`resulting in a copy`|
8473+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8474
8475+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8476|:warning:`warning:` |nbsp| :diagtext:`loop variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`creates a copy from type` |nbsp| :placeholder:`C`|
8477+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8478
8479+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8480|:warning:`warning:` |nbsp| :diagtext:`loop variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is always a copy because the range of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`does not return a reference`|
8481+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8482
8483
8484-Wreadonly-iboutlet-property
8485----------------------------
8486This diagnostic is enabled by default.
8487
8488**Diagnostic text:**
8489
8490+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8491|:warning:`warning:` |nbsp| :diagtext:`readonly IBOutlet property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when auto-synthesized may not work correctly with 'nib' loader`|
8492+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8493
8494
8495-Wreceiver-expr
8496---------------
8497This diagnostic is enabled by default.
8498
8499**Diagnostic text:**
8500
8501+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
8502|:warning:`warning:` |nbsp| :diagtext:`receiver type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not 'id' or interface pointer, consider casting it to 'id'`|
8503+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
8504
8505
8506-Wreceiver-forward-class
8507------------------------
8508Some of the diagnostics controlled by this flag are enabled by default.
8509
8510**Diagnostic text:**
8511
8512+--------------------------------------------------------------------------------------------------------------------------------------------------------+
8513|:warning:`warning:` |nbsp| :diagtext:`receiver` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a forward class and corresponding @interface may not exist`|
8514+--------------------------------------------------------------------------------------------------------------------------------------------------------+
8515
8516+---------------------------------------------------------------------------------------------------------------------------------------------+
8517|:warning:`warning:` |nbsp| :diagtext:`receiver type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`for instance message is a forward declaration`|
8518+---------------------------------------------------------------------------------------------------------------------------------------------+
8519
8520
8521-Wredeclared-class-member
8522-------------------------
8523This diagnostic is enabled by default.
8524
8525**Diagnostic text:**
8526
8527+------------------------------------------------------------------------+
8528|:warning:`warning:` |nbsp| :diagtext:`class member cannot be redeclared`|
8529+------------------------------------------------------------------------+
8530
8531
8532-Wredundant-decls
8533-----------------
8534This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
8535
8536-Wredundant-move
8537----------------
8538**Diagnostic text:**
8539
8540+-------------------------------------------------------------------------+
8541|:warning:`warning:` |nbsp| :diagtext:`redundant move in return statement`|
8542+-------------------------------------------------------------------------+
8543
8544
8545-Wregister
8546----------
8547This diagnostic is enabled by default.
8548
8549Also controls `-Wdeprecated-register`_.
8550
8551**Diagnostic text:**
8552
8553+----------------------------------------------------------------------------------------------+
8554|:error:`error:` |nbsp| :diagtext:`ISO C++1z does not allow 'register' storage class specifier`|
8555+----------------------------------------------------------------------------------------------+
8556
8557
8558-Wreinterpret-base-class
8559------------------------
8560This diagnostic is enabled by default.
8561
8562**Diagnostic text:**
8563
8564+------------------------------------------------------------------+------------------+---------------------------------------------------------+------------------+-------------------------------+-------------------------------------+-----------------------------------------------------------------------------------+
8565|:warning:`warning:` |nbsp| :diagtext:`'reinterpret\_cast'` |nbsp| |+----------------+| |nbsp| :diagtext:`class` |nbsp| :placeholder:`A` |nbsp| |+----------------+| |nbsp| :diagtext:`its` |nbsp| |+-----------------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`behaves differently from 'static\_cast'`|
8566| ||:diagtext:`from`|| ||:diagtext:`to` || ||:diagtext:`virtual base` || |
8567| |+----------------+| |+----------------+| |+-----------------------------------+| |
8568| ||:diagtext:`to` || ||:diagtext:`from`|| ||:diagtext:`base at non-zero offset`|| |
8569| |+----------------+| |+----------------+| |+-----------------------------------+| |
8570+------------------------------------------------------------------+------------------+---------------------------------------------------------+------------------+-------------------------------+-------------------------------------+-----------------------------------------------------------------------------------+
8571
8572
8573-Rremark-backend-plugin
8574-----------------------
8575**Diagnostic text:**
8576
8577The text of this diagnostic is not controlled by Clang.
8578
8579
8580-Wreorder
8581---------
8582**Diagnostic text:**
8583
8584+---------------------------+------------------------+-----------------------------------------------------------------------------+-------------------+------------------------+
8585|:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`will be initialized after` |nbsp| |+-----------------+| |nbsp| :placeholder:`D`|
8586| ||:diagtext:`field` || ||:diagtext:`field`|| |
8587| |+----------------------+| |+-----------------+| |
8588| ||:diagtext:`base class`|| ||:diagtext:`base` || |
8589| |+----------------------+| |+-----------------+| |
8590+---------------------------+------------------------+-----------------------------------------------------------------------------+-------------------+------------------------+
8591
8592
8593-Wrequires-super-attribute
8594--------------------------
8595This diagnostic is enabled by default.
8596
8597**Diagnostic text:**
8598
8599+-----------------------------------------------------------------------------------------------------+----------------------------------+
8600|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute cannot be applied to` |nbsp| |+--------------------------------+|
8601| ||:diagtext:`methods in protocols`||
8602| |+--------------------------------+|
8603| ||:diagtext:`dealloc` ||
8604| |+--------------------------------+|
8605+-----------------------------------------------------------------------------------------------------+----------------------------------+
8606
8607
8608-Wreserved-id-macro
8609-------------------
8610**Diagnostic text:**
8611
8612+--------------------------------------------------------------------------+
8613|:warning:`warning:` |nbsp| :diagtext:`macro name is a reserved identifier`|
8614+--------------------------------------------------------------------------+
8615
8616
8617-Wreserved-user-defined-literal
8618-------------------------------
8619Some of the diagnostics controlled by this flag are enabled by default.
8620
8621Also controls `-Wc++11-compat-reserved-user-defined-literal`_.
8622
8623**Diagnostic text:**
8624
8625+-----------------------------------------------------------------------------------------------------------------------+
8626|:warning:`warning:` |nbsp| :diagtext:`invalid suffix on literal; C++11 requires a space between literal and identifier`|
8627+-----------------------------------------------------------------------------------------------------------------------+
8628
8629+-------------------------------------------------------------------------------------------------------------------+
8630|:error:`error:` |nbsp| :diagtext:`invalid suffix on literal; C++11 requires a space between literal and identifier`|
8631+-------------------------------------------------------------------------------------------------------------------+
8632
8633
8634-Wretained-language-linkage
8635---------------------------
8636**Diagnostic text:**
8637
8638+-----------------------------------------------------------------------------------------------------------------------------------------------------+
8639|:warning:`warning:` |nbsp| :diagtext:`friend function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`retaining previous language linkage is an extension`|
8640+-----------------------------------------------------------------------------------------------------------------------------------------------------+
8641
8642
8643-Wreturn-stack-address
8644----------------------
8645This diagnostic is enabled by default.
8646
8647**Diagnostic text:**
8648
8649+---------------------------------------------------------------------------------+
8650|:warning:`warning:` |nbsp| :diagtext:`returning address of label, which is local`|
8651+---------------------------------------------------------------------------------+
8652
8653+--------------------------------------------------------+--------------------------+------------------------------------------+
8654|:warning:`warning:` |nbsp| :diagtext:`returning` |nbsp| |+------------------------+| |nbsp| :diagtext:`local temporary object`|
8655| ||:diagtext:`address of` || |
8656| |+------------------------+| |
8657| ||:diagtext:`reference to`|| |
8658| |+------------------------+| |
8659+--------------------------------------------------------+--------------------------+------------------------------------------+
8660
8661+---------------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------+
8662|:warning:`warning:` |nbsp| |+------------------------+| |nbsp| :diagtext:`stack memory associated with local variable` |nbsp| :placeholder:`B` |nbsp| :diagtext:`returned`|
8663| ||:diagtext:`address of` || |
8664| |+------------------------+| |
8665| ||:diagtext:`reference to`|| |
8666| |+------------------------+| |
8667+---------------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------+
8668
8669
8670-Wreturn-type
8671-------------
8672This diagnostic is enabled by default.
8673
8674Also controls `-Wreturn-type-c-linkage`_.
8675
8676**Diagnostic text:**
8677
8678+-----------------------+---------------------------+---------------------------------------------------------------------+
8679|:error:`error:` |nbsp| |+-------------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return a value`|
8680| ||:diagtext:`void function`|| |
8681| |+-------------------------+| |
8682| ||:diagtext:`void method` || |
8683| |+-------------------------+| |
8684| ||:diagtext:`constructor` || |
8685| |+-------------------------+| |
8686| ||:diagtext:`destructor` || |
8687| |+-------------------------+| |
8688+-----------------------+---------------------------+---------------------------------------------------------------------+
8689
8690+---------------------------------------------------+----------------------+-----------------------------------------------------------------+
8691|:error:`error:` |nbsp| :diagtext:`non-void` |nbsp| |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should return a value`|
8692| ||:diagtext:`function`|| |
8693| |+--------------------+| |
8694| ||:diagtext:`method` || |
8695| |+--------------------+| |
8696+---------------------------------------------------+----------------------+-----------------------------------------------------------------+
8697
Richard Smithcf9f4222017-01-20 19:27:09 +00008698+--------------------------------------------------------------------------------+
8699|:warning:`warning:` |nbsp| :diagtext:`control reaches end of non-void coroutine`|
8700+--------------------------------------------------------------------------------+
8701
Richard Smithb6a3b4b2016-09-12 05:58:29 +00008702+-------------------------------------------------------------------------------+
8703|:warning:`warning:` |nbsp| :diagtext:`control reaches end of non-void function`|
8704+-------------------------------------------------------------------------------+
8705
8706+-----------------------------------------------------------------------------+
8707|:warning:`warning:` |nbsp| :diagtext:`control reaches end of non-void lambda`|
8708+-----------------------------------------------------------------------------+
8709
Richard Smithcf9f4222017-01-20 19:27:09 +00008710+----------------------------------------------------------------------------------+
8711|:warning:`warning:` |nbsp| :diagtext:`control may reach end of non-void coroutine`|
8712+----------------------------------------------------------------------------------+
8713
Richard Smithb6a3b4b2016-09-12 05:58:29 +00008714+---------------------------------------------------------------------------------+
8715|:warning:`warning:` |nbsp| :diagtext:`control may reach end of non-void function`|
8716+---------------------------------------------------------------------------------+
8717
8718+-------------------------------------------------------------------------------+
8719|:warning:`warning:` |nbsp| :diagtext:`control may reach end of non-void lambda`|
8720+-------------------------------------------------------------------------------+
8721
8722+---------------------------------------------------+----------------------+-----------------------------------------------------------------+
8723|:error:`error:` |nbsp| :diagtext:`non-void` |nbsp| |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should return a value`|
8724| ||:diagtext:`function`|| |
8725| |+--------------------+| |
8726| ||:diagtext:`method` || |
8727| |+--------------------+| |
8728+---------------------------------------------------+----------------------+-----------------------------------------------------------------+
8729
8730
8731-Wreturn-type-c-linkage
8732-----------------------
8733This diagnostic is enabled by default.
8734
8735**Diagnostic text:**
8736
8737+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8738|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has C-linkage specified, but returns user-defined type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`which is incompatible with C`|
8739+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8740
8741+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8742|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has C-linkage specified, but returns incomplete type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`which could be incompatible with C`|
8743+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8744
8745
8746-Wrtti-for-exceptions
8747---------------------
8748This diagnostic is enabled by default.
8749
8750**Diagnostic text:**
8751
8752+--------------------------------------------------------------------------------------+
8753|:warning:`warning:` |nbsp| :diagtext:`implicitly enabling rtti for exception handling`|
8754+--------------------------------------------------------------------------------------+
8755
8756
8757-Rsanitize-address
8758------------------
8759**Diagnostic text:**
8760
8761+--------------------------------------------------------------------------------------------------------+
8762|:remark:`remark:` |nbsp| :diagtext:`-fsanitize-address-field-padding applied to` |nbsp| :placeholder:`A`|
8763+--------------------------------------------------------------------------------------------------------+
8764
8765+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+
8766|:remark:`remark:` |nbsp| :diagtext:`-fsanitize-address-field-padding ignored for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`because it` |nbsp| |+------------------------------------+|
8767| ||:diagtext:`is not C++` ||
8768| |+------------------------------------+|
8769| ||:diagtext:`is packed` ||
8770| |+------------------------------------+|
8771| ||:diagtext:`is a union` ||
8772| |+------------------------------------+|
8773| ||:diagtext:`is trivially copyable` ||
8774| |+------------------------------------+|
8775| ||:diagtext:`has trivial destructor` ||
8776| |+------------------------------------+|
8777| ||:diagtext:`is standard layout` ||
8778| |+------------------------------------+|
8779| ||:diagtext:`is in a blacklisted file`||
8780| |+------------------------------------+|
8781| ||:diagtext:`is blacklisted` ||
8782| |+------------------------------------+|
8783+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+
8784
8785
8786-Wsection
8787---------
8788This diagnostic is enabled by default.
8789
8790**Diagnostic text:**
8791
8792+----------------------------------------------------------------------------------+
8793|:warning:`warning:` |nbsp| :diagtext:`section does not match previous declaration`|
8794+----------------------------------------------------------------------------------+
8795
8796
8797-Wselector
8798----------
8799Also controls `-Wselector-type-mismatch`_.
8800
8801**Diagnostic text:**
8802
8803+-------------------------------------------------------------------------------------------------------------------------------------------------+
8804|:warning:`warning:` |nbsp| :diagtext:`no method with selector` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is implemented in this translation unit`|
8805+-------------------------------------------------------------------------------------------------------------------------------------------------+
8806
8807
8808-Wselector-type-mismatch
8809------------------------
8810**Diagnostic text:**
8811
8812+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8813|:warning:`warning:` |nbsp| :diagtext:`several methods with selector` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of mismatched types are found for the @selector expression`|
8814+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8815
8816
8817-Wself-assign
8818-------------
8819Some of the diagnostics controlled by this flag are enabled by default.
8820
8821Also controls `-Wself-assign-field`_.
8822
8823**Diagnostic text:**
8824
8825+------------------------------------------------------------------------------------------------------------------------------------------+
8826|:warning:`warning:` |nbsp| :diagtext:`explicitly assigning value of variable of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to itself`|
8827+------------------------------------------------------------------------------------------------------------------------------------------+
8828
8829
8830-Wself-assign-field
8831-------------------
8832This diagnostic is enabled by default.
8833
8834**Diagnostic text:**
8835
8836+--------------------------------------------------------+-------------------------------+-----------------------------+
8837|:warning:`warning:` |nbsp| :diagtext:`assigning` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`to itself`|
8838| ||:diagtext:`field` || |
8839| |+-----------------------------+| |
8840| ||:diagtext:`instance variable`|| |
8841| |+-----------------------------+| |
8842+--------------------------------------------------------+-------------------------------+-----------------------------+
8843
8844
8845-Wself-move
8846-----------
8847**Diagnostic text:**
8848
8849+------------------------------------------------------------------------------------------------------------------------------+
8850|:warning:`warning:` |nbsp| :diagtext:`explicitly moving variable of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to itself`|
8851+------------------------------------------------------------------------------------------------------------------------------+
8852
8853
8854-Wsemicolon-before-method-body
8855------------------------------
8856**Diagnostic text:**
8857
8858+------------------------------------------------------------------------------+
8859|:warning:`warning:` |nbsp| :diagtext:`semicolon before method body is ignored`|
8860+------------------------------------------------------------------------------+
8861
8862
8863-Wsentinel
8864----------
8865This diagnostic is enabled by default.
8866
8867**Diagnostic text:**
8868
8869+------------------------------------------------------------------+-----------------------------+
8870|:warning:`warning:` |nbsp| :diagtext:`missing sentinel in` |nbsp| |+---------------------------+|
8871| ||:diagtext:`function call` ||
8872| |+---------------------------+|
8873| ||:diagtext:`method dispatch`||
8874| |+---------------------------+|
8875| ||:diagtext:`block call` ||
8876| |+---------------------------+|
8877+------------------------------------------------------------------+-----------------------------+
8878
8879+------------------------------------------------------------------------------------------------------------------------------------------------+
8880|:warning:`warning:` |nbsp| :diagtext:`not enough variable arguments in` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declaration to fit a sentinel`|
8881+------------------------------------------------------------------------------------------------------------------------------------------------+
8882
8883
8884-Wsequence-point
8885----------------
8886Synonym for `-Wunsequenced`_.
8887
8888
8889-Wserialized-diagnostics
8890------------------------
8891This diagnostic is enabled by default.
8892
8893**Diagnostic text:**
8894
8895+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
8896|:warning:`warning:` |nbsp| :diagtext:`unable to open file` |nbsp| :placeholder:`A` |nbsp| :diagtext:`for serializing diagnostics (`:placeholder:`B`:diagtext:`)`|
8897+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
8898
8899+--------------------------------------------------------------------------------------------+
8900|:warning:`warning:` |nbsp| :diagtext:`unable to merge a subprocess's serialized diagnostics`|
8901+--------------------------------------------------------------------------------------------+
8902
8903
8904-Wshadow
8905--------
Richard Smithce9d5862016-09-14 01:51:10 +00008906Some of the diagnostics controlled by this flag are enabled by default.
8907
8908Also controls `-Wshadow-field-in-constructor-modified`_, `-Wshadow-ivar`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00008909
8910**Diagnostic text:**
8911
8912+--------------------------------------------------------------------+-------------------------------------------------------------+
8913|:warning:`warning:` |nbsp| :diagtext:`declaration shadows a` |nbsp| |+-----------------------------------------------------------+|
8914| ||:diagtext:`local variable` ||
8915| |+-----------------------------------------------------------+|
8916| ||+-----------------------------------------------+ ||
8917| |||:diagtext:`variable in` |nbsp| :placeholder:`C`| ||
8918| ||+-----------------------------------------------+ ||
8919| |+-----------------------------------------------------------+|
8920| ||+---------------------------------------------------------+||
8921| |||:diagtext:`static data member of` |nbsp| :placeholder:`C`|||
8922| ||+---------------------------------------------------------+||
8923| |+-----------------------------------------------------------+|
8924| ||+--------------------------------------------+ ||
8925| |||:diagtext:`field of` |nbsp| :placeholder:`C`| ||
8926| ||+--------------------------------------------+ ||
8927| |+-----------------------------------------------------------+|
Richard Smith9a016602017-04-13 22:44:22 +00008928| ||+----------------------------------------------+ ||
8929| |||:diagtext:`typedef in` |nbsp| :placeholder:`C`| ||
8930| ||+----------------------------------------------+ ||
8931| |+-----------------------------------------------------------+|
8932| ||+-------------------------------------------------+ ||
8933| |||:diagtext:`type alias in` |nbsp| :placeholder:`C`| ||
8934| ||+-------------------------------------------------+ ||
8935| |+-----------------------------------------------------------+|
Richard Smithb6a3b4b2016-09-12 05:58:29 +00008936+--------------------------------------------------------------------+-------------------------------------------------------------+
8937
8938
8939-Wshadow-all
8940------------
Richard Smithce9d5862016-09-14 01:51:10 +00008941Some of the diagnostics controlled by this flag are enabled by default.
8942
Richard Smith9a016602017-04-13 22:44:22 +00008943Controls `-Wshadow`_, `-Wshadow-field`_, `-Wshadow-field-in-constructor`_, `-Wshadow-uncaptured-local`_.
8944
8945
8946-Wshadow-field
8947--------------
8948**Diagnostic text:**
8949
8950+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8951|:warning:`warning:` |nbsp| :diagtext:`non-static data member '`:placeholder:`A`:diagtext:`' of '`:placeholder:`B`:diagtext:`' shadows member inherited from type '`:placeholder:`C`:diagtext:`'`|
8952+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Richard Smithb6a3b4b2016-09-12 05:58:29 +00008953
8954
8955-Wshadow-field-in-constructor
8956-----------------------------
8957Also controls `-Wshadow-field-in-constructor-modified`_.
8958
8959**Diagnostic text:**
8960
8961+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8962|:warning:`warning:` |nbsp| :diagtext:`constructor parameter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`shadows the field` |nbsp| :placeholder:`B` |nbsp| :diagtext:`of` |nbsp| :placeholder:`C`|
8963+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8964
8965
8966-Wshadow-field-in-constructor-modified
8967--------------------------------------
8968**Diagnostic text:**
8969
8970+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
8971|:warning:`warning:` |nbsp| :diagtext:`modifying constructor parameter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`that shadows a field of` |nbsp| :placeholder:`B`|
8972+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
8973
8974
8975-Wshadow-ivar
8976-------------
8977This diagnostic is enabled by default.
8978
8979**Diagnostic text:**
8980
8981+------------------------------------------------------------------------------------------------------------------------------+
8982|:warning:`warning:` |nbsp| :diagtext:`local declaration of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`hides instance variable`|
8983+------------------------------------------------------------------------------------------------------------------------------+
8984
8985
Richard Smithcf9f4222017-01-20 19:27:09 +00008986-Wshadow-uncaptured-local
8987-------------------------
8988**Diagnostic text:**
8989
8990+--------------------------------------------------------------------+-------------------------------------------------------------+
8991|:warning:`warning:` |nbsp| :diagtext:`declaration shadows a` |nbsp| |+-----------------------------------------------------------+|
8992| ||:diagtext:`local variable` ||
8993| |+-----------------------------------------------------------+|
8994| ||+-----------------------------------------------+ ||
8995| |||:diagtext:`variable in` |nbsp| :placeholder:`C`| ||
8996| ||+-----------------------------------------------+ ||
8997| |+-----------------------------------------------------------+|
8998| ||+---------------------------------------------------------+||
8999| |||:diagtext:`static data member of` |nbsp| :placeholder:`C`|||
9000| ||+---------------------------------------------------------+||
9001| |+-----------------------------------------------------------+|
9002| ||+--------------------------------------------+ ||
9003| |||:diagtext:`field of` |nbsp| :placeholder:`C`| ||
9004| ||+--------------------------------------------+ ||
9005| |+-----------------------------------------------------------+|
Richard Smith9a016602017-04-13 22:44:22 +00009006| ||+----------------------------------------------+ ||
9007| |||:diagtext:`typedef in` |nbsp| :placeholder:`C`| ||
9008| ||+----------------------------------------------+ ||
9009| |+-----------------------------------------------------------+|
9010| ||+-------------------------------------------------+ ||
9011| |||:diagtext:`type alias in` |nbsp| :placeholder:`C`| ||
9012| ||+-------------------------------------------------+ ||
9013| |+-----------------------------------------------------------+|
Richard Smithcf9f4222017-01-20 19:27:09 +00009014+--------------------------------------------------------------------+-------------------------------------------------------------+
9015
9016
Richard Smithb6a3b4b2016-09-12 05:58:29 +00009017-Wshift-count-negative
9018----------------------
9019This diagnostic is enabled by default.
9020
9021**Diagnostic text:**
9022
9023+--------------------------------------------------------------+
9024|:warning:`warning:` |nbsp| :diagtext:`shift count is negative`|
9025+--------------------------------------------------------------+
9026
9027
9028-Wshift-count-overflow
9029----------------------
9030This diagnostic is enabled by default.
9031
9032**Diagnostic text:**
9033
9034+-------------------------------------------------------------------+
9035|:warning:`warning:` |nbsp| :diagtext:`shift count >= width of type`|
9036+-------------------------------------------------------------------+
9037
9038
9039-Wshift-negative-value
9040----------------------
9041This diagnostic is enabled by default.
9042
9043**Diagnostic text:**
9044
9045+------------------------------------------------------------------------------------+
9046|:warning:`warning:` |nbsp| :diagtext:`shifting a negative signed value is undefined`|
9047+------------------------------------------------------------------------------------+
9048
9049
9050-Wshift-op-parentheses
9051----------------------
9052This diagnostic is enabled by default.
9053
9054**Diagnostic text:**
9055
9056+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9057|:warning:`warning:` |nbsp| :diagtext:`operator '`:placeholder:`A`:diagtext:`' has lower precedence than '`:placeholder:`B`:diagtext:`'; '`:placeholder:`B`:diagtext:`' will be evaluated first`|
9058+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9059
9060
9061-Wshift-overflow
9062----------------
9063This diagnostic is enabled by default.
9064
9065**Diagnostic text:**
9066
9067+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9068|:warning:`warning:` |nbsp| :diagtext:`signed shift result (`:placeholder:`A`:diagtext:`) requires` |nbsp| :placeholder:`B` |nbsp| :diagtext:`bits to represent, but` |nbsp| :placeholder:`C` |nbsp| :diagtext:`only has` |nbsp| :placeholder:`D` |nbsp| :diagtext:`bits`|
9069+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9070
9071
9072-Wshift-sign-overflow
9073---------------------
9074**Diagnostic text:**
9075
9076+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9077|:warning:`warning:` |nbsp| :diagtext:`signed shift result (`:placeholder:`A`:diagtext:`) sets the sign bit of the shift expression's type (`:placeholder:`B`:diagtext:`) and becomes negative`|
9078+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9079
9080
9081-Wshorten-64-to-32
9082------------------
9083**Diagnostic text:**
9084
9085+---------------------------------------------------------------------------------------------------------------------------------------------------------+
9086|:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses integer precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
9087+---------------------------------------------------------------------------------------------------------------------------------------------------------+
9088
9089
9090-Wsign-compare
9091--------------
9092**Diagnostic text:**
9093
9094+--------------------------------------------------------------------------------------------------------------------------------------------------------+
9095|:warning:`warning:` |nbsp| :diagtext:`comparison of integers of different signs:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`|
9096+--------------------------------------------------------------------------------------------------------------------------------------------------------+
9097
9098
9099-Wsign-conversion
9100-----------------
9101**Diagnostic text:**
9102
9103+----------------------------------------------------------------------------------------------------------------------------------------------------+
9104|:warning:`warning:` |nbsp| :diagtext:`implicit conversion changes signedness:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
9105+----------------------------------------------------------------------------------------------------------------------------------------------------+
9106
9107+---------------------------------------------------------------------------------------------------------------------------------------------+
9108|:warning:`warning:` |nbsp| :diagtext:`operand of ? changes signedness:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
9109+---------------------------------------------------------------------------------------------------------------------------------------------+
9110
9111
9112-Wsign-promo
9113------------
9114This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
9115
Richard Smithcf9f4222017-01-20 19:27:09 +00009116-Wsigned-enum-bitfield
9117----------------------
9118**Diagnostic text:**
9119
9120+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9121|:warning:`warning:` |nbsp| :diagtext:`enums in the Microsoft ABI are signed integers by default; consider giving the enum` |nbsp| :placeholder:`A` |nbsp| :diagtext:`an unsigned underlying type to make this code portable`|
9122+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9123
9124
Richard Smithb6a3b4b2016-09-12 05:58:29 +00009125-Wsizeof-array-argument
9126-----------------------
9127This diagnostic is enabled by default.
9128
9129**Diagnostic text:**
9130
9131+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9132|:warning:`warning:` |nbsp| :diagtext:`sizeof on array function parameter will return size of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`instead of` |nbsp| :placeholder:`B`|
9133+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9134
9135
9136-Wsizeof-array-decay
9137--------------------
9138This diagnostic is enabled by default.
9139
9140**Diagnostic text:**
9141
9142+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9143|:warning:`warning:` |nbsp| :diagtext:`sizeof on pointer operation will return size of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`instead of` |nbsp| :placeholder:`B`|
9144+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9145
9146
9147-Wsizeof-pointer-memaccess
9148--------------------------
9149This diagnostic is enabled by default.
9150
9151**Diagnostic text:**
9152
9153+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9154|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' call operates on objects of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`while the size is based on a different type` |nbsp| :placeholder:`C`|
9155+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9156
9157+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------+
9158|:warning:`warning:` |nbsp| :diagtext:`argument to 'sizeof' in` |nbsp| :placeholder:`A` |nbsp| :diagtext:`call is the same pointer type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`as the` |nbsp| |+-----------------------+|:diagtext:`; expected` |nbsp| :placeholder:`D` |nbsp| :diagtext:`or an explicit length`|
9159| ||:diagtext:`destination`|| |
9160| |+-----------------------+| |
9161| ||:diagtext:`source` || |
9162| |+-----------------------+| |
9163+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------+
9164
9165
Richard Smith9a016602017-04-13 22:44:22 +00009166-Wslash-u-filename
9167------------------
9168This diagnostic is enabled by default.
9169
9170**Diagnostic text:**
9171
9172+--------------------------------------------------------------------------------------------------+
9173|:warning:`warning:` |nbsp| :diagtext:`'/U`:placeholder:`A`:diagtext:`' treated as the '/U' option`|
9174+--------------------------------------------------------------------------------------------------+
9175
9176
Richard Smithb6a3b4b2016-09-12 05:58:29 +00009177-Wsometimes-uninitialized
9178-------------------------
9179**Diagnostic text:**
9180
9181+-----------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
9182|:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is` |nbsp| |+--------------------+| |nbsp| :diagtext:`uninitialized whenever` |nbsp| |+------------------------------------------------------------------------------------------------------------+|
9183| ||:diagtext:`used` || ||+---------------------------------------------------------------+-------------------+ ||
9184| |+--------------------+| |||:diagtext:`'`:placeholder:`D`:diagtext:`' condition is` |nbsp| |+-----------------+| ||
9185| ||:diagtext:`captured`|| ||| ||:diagtext:`true` || ||
9186| |+--------------------+| ||| |+-----------------+| ||
9187| | | ||| ||:diagtext:`false`|| ||
9188| | | ||| |+-----------------+| ||
9189| | | ||+---------------------------------------------------------------+-------------------+ ||
9190| | | |+------------------------------------------------------------------------------------------------------------+|
9191| | | ||+-------------------------------------------------------+--------------------------------------------------+||
9192| | | |||:diagtext:`'`:placeholder:`D`:diagtext:`' loop` |nbsp| |+------------------------------------------------+|||
9193| | | ||| ||:diagtext:`is entered` ||||
9194| | | ||| |+------------------------------------------------+|||
9195| | | ||| ||:diagtext:`exits because its condition is false`||||
9196| | | ||| |+------------------------------------------------+|||
9197| | | ||+-------------------------------------------------------+--------------------------------------------------+||
9198| | | |+------------------------------------------------------------------------------------------------------------+|
9199| | | ||+-------------------------------------------------------+--------------------------------------------------+||
9200| | | |||:diagtext:`'`:placeholder:`D`:diagtext:`' loop` |nbsp| |+------------------------------------------------+|||
9201| | | ||| ||:diagtext:`condition is true` ||||
9202| | | ||| |+------------------------------------------------+|||
9203| | | ||| ||:diagtext:`exits because its condition is false`||||
9204| | | ||| |+------------------------------------------------+|||
9205| | | ||+-------------------------------------------------------+--------------------------------------------------+||
9206| | | |+------------------------------------------------------------------------------------------------------------+|
9207| | | ||+----------------------------------------------------------------------+ ||
9208| | | |||:diagtext:`switch` |nbsp| :placeholder:`D` |nbsp| :diagtext:`is taken`| ||
9209| | | ||+----------------------------------------------------------------------+ ||
9210| | | |+------------------------------------------------------------------------------------------------------------+|
9211| | | ||:diagtext:`its declaration is reached` ||
9212| | | |+------------------------------------------------------------------------------------------------------------+|
9213| | | ||+---------------------------------------------+ ||
9214| | | |||:placeholder:`D` |nbsp| :diagtext:`is called`| ||
9215| | | ||+---------------------------------------------+ ||
9216| | | |+------------------------------------------------------------------------------------------------------------+|
9217+-----------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
9218
9219
9220-Wsource-uses-openmp
9221--------------------
9222Some of the diagnostics controlled by this flag are enabled by default.
9223
9224**Diagnostic text:**
9225
9226+------------------------------------------------------------------------------------------------------------------------------+
9227|:warning:`warning:` |nbsp| :diagtext:`OpenMP only allows an ordered construct with the simd clause nested in a simd construct`|
9228+------------------------------------------------------------------------------------------------------------------------------+
9229
9230+------------------------------------------------------------------------------+
9231|:warning:`warning:` |nbsp| :diagtext:`unexpected '#pragma omp ...' in program`|
9232+------------------------------------------------------------------------------+
9233
9234
9235-Wspir-compat
9236-------------
9237**Diagnostic text:**
9238
9239+----------------------------------------------------------------------------------------------------------------------+
9240|:warning:`warning:` |nbsp| :diagtext:`sampler initializer has invalid` |nbsp| :placeholder:`A` |nbsp| :diagtext:`bits`|
9241+----------------------------------------------------------------------------------------------------------------------+
9242
9243
9244-Wstack-protector
9245-----------------
9246This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
9247
9248-Wstatic-float-init
9249-------------------
9250This diagnostic is enabled by default.
9251
9252Also controls `-Wgnu-static-float-init`_.
9253
9254**Diagnostic text:**
9255
9256+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
9257|:error:`error:` |nbsp| :diagtext:`in-class initializer for static data member of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires 'constexpr' specifier`|
9258+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
9259
9260
9261-Wstatic-in-inline
9262------------------
9263Some of the diagnostics controlled by this flag are enabled by default.
9264
9265**Diagnostic text:**
9266
9267+-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+
9268|:warning:`warning:` |nbsp| :diagtext:`static` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is used in an inline function with external linkage`|
9269| ||:diagtext:`function`|| |
9270| |+--------------------+| |
9271| ||:diagtext:`variable`|| |
9272| |+--------------------+| |
9273+-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+
9274
9275+-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+
9276|:warning:`warning:` |nbsp| :diagtext:`static` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is used in an inline function with external linkage`|
9277| ||:diagtext:`function`|| |
9278| |+--------------------+| |
9279| ||:diagtext:`variable`|| |
9280| |+--------------------+| |
9281+-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+
9282
9283
9284-Wstatic-inline-explicit-instantiation
9285--------------------------------------
9286This diagnostic is enabled by default.
9287
9288**Diagnostic text:**
9289
9290+-------------------------------------------------+--------------------+--------------------------------------------------------+
9291|:warning:`warning:` |nbsp| :diagtext:`ignoring '`|+------------------+|:diagtext:`' keyword on explicit template instantiation`|
9292| ||:diagtext:`static`|| |
9293| |+------------------+| |
9294| ||:diagtext:`inline`|| |
9295| |+------------------+| |
9296+-------------------------------------------------+--------------------+--------------------------------------------------------+
9297
9298
9299-Wstatic-local-in-inline
9300------------------------
9301This diagnostic is enabled by default.
9302
9303**Diagnostic text:**
9304
9305+--------------------------------------------------------------------------------------------------------------------------------+
9306|:warning:`warning:` |nbsp| :diagtext:`non-constant static local variable in inline function may be different in different files`|
9307+--------------------------------------------------------------------------------------------------------------------------------+
9308
9309
9310-Wstatic-self-init
9311------------------
9312This diagnostic is enabled by default.
9313
9314**Diagnostic text:**
9315
9316+----------------------------------------------------------------------------------------------------------------------------------------------------+
9317|:warning:`warning:` |nbsp| :diagtext:`static variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is suspiciously used within its own initialization`|
9318+----------------------------------------------------------------------------------------------------------------------------------------------------+
9319
9320
9321-Wstrict-aliasing
9322-----------------
9323This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
9324
9325-Wstrict-aliasing=0
9326-------------------
9327This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
9328
9329-Wstrict-aliasing=1
9330-------------------
9331This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
9332
9333-Wstrict-aliasing=2
9334-------------------
9335This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
9336
9337-Wstrict-overflow
9338-----------------
9339This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
9340
9341-Wstrict-overflow=0
9342-------------------
9343This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
9344
9345-Wstrict-overflow=1
9346-------------------
9347This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
9348
9349-Wstrict-overflow=2
9350-------------------
9351This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
9352
9353-Wstrict-overflow=3
9354-------------------
9355This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
9356
9357-Wstrict-overflow=4
9358-------------------
9359This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
9360
9361-Wstrict-overflow=5
9362-------------------
9363This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
9364
9365-Wstrict-prototypes
9366-------------------
Richard Smithcf9f4222017-01-20 19:27:09 +00009367**Diagnostic text:**
9368
9369+---------------------------------------------------+--------------------------------------------------------------+-------------------------------+
9370|:warning:`warning:` |nbsp| :diagtext:`this` |nbsp| |+------------------------------------------------------------+| |nbsp| :diagtext:`a prototype`|
9371| ||:diagtext:`function declaration is not` || |
9372| |+------------------------------------------------------------+| |
9373| ||:diagtext:`old-style function definition is not preceded by`|| |
9374| |+------------------------------------------------------------+| |
9375+---------------------------------------------------+--------------------------------------------------------------+-------------------------------+
9376
9377
9378-Wstrict-prototypes
9379-------------------
9380**Diagnostic text:**
9381
9382+---------------------------------------------------+--------------------------------------------------------------+-------------------------------+
9383|:warning:`warning:` |nbsp| :diagtext:`this` |nbsp| |+------------------------------------------------------------+| |nbsp| :diagtext:`a prototype`|
9384| ||:diagtext:`function declaration is not` || |
9385| |+------------------------------------------------------------+| |
9386| ||:diagtext:`old-style function definition is not preceded by`|| |
9387| |+------------------------------------------------------------+| |
9388+---------------------------------------------------+--------------------------------------------------------------+-------------------------------+
9389
Richard Smithb6a3b4b2016-09-12 05:58:29 +00009390
9391-Wstrict-selector-match
9392-----------------------
9393**Diagnostic text:**
9394
9395+--------------------------------------------------------------------------------------------------------------+
9396|:warning:`warning:` |nbsp| :diagtext:`multiple methods named` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found`|
9397+--------------------------------------------------------------------------------------------------------------+
9398
9399
9400-Wstring-compare
9401----------------
9402This diagnostic is enabled by default.
9403
9404**Diagnostic text:**
9405
9406+---------------------------------------------------------------------------+------------------------------+--------------------------------------------------------+
9407|:warning:`warning:` |nbsp| :diagtext:`result of comparison against` |nbsp| |+----------------------------+| |nbsp| :diagtext:`is unspecified (use strncmp instead)`|
9408| ||:diagtext:`a string literal`|| |
9409| |+----------------------------+| |
9410| ||:diagtext:`@encode` || |
9411| |+----------------------------+| |
9412+---------------------------------------------------------------------------+------------------------------+--------------------------------------------------------+
9413
9414
9415-Wstring-conversion
9416-------------------
9417**Diagnostic text:**
9418
9419+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
9420|:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns string literal into bool:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
9421+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
9422
9423
9424-Wstring-plus-char
9425------------------
9426This diagnostic is enabled by default.
9427
9428**Diagnostic text:**
9429
9430+------------------------------------------------------------------------------------------------------------------------------------------+
9431|:warning:`warning:` |nbsp| :diagtext:`adding` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to a string pointer does not append to the string`|
9432+------------------------------------------------------------------------------------------------------------------------------------------+
9433
9434
9435-Wstring-plus-int
9436-----------------
9437This diagnostic is enabled by default.
9438
9439**Diagnostic text:**
9440
9441+----------------------------------------------------------------------------------------------------------------------------------+
9442|:warning:`warning:` |nbsp| :diagtext:`adding` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to a string does not append to the string`|
9443+----------------------------------------------------------------------------------------------------------------------------------+
9444
9445
9446-Wstrlcpy-strlcat-size
9447----------------------
9448This diagnostic is enabled by default.
9449
9450**Diagnostic text:**
9451
9452+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9453|:warning:`warning:` |nbsp| :diagtext:`size argument in` |nbsp| :placeholder:`A` |nbsp| :diagtext:`call appears to be size of the source; expected the size of the destination`|
9454+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9455
9456
9457-Wstrncat-size
9458--------------
9459This diagnostic is enabled by default.
9460
9461**Diagnostic text:**
9462
9463+--------------------------------------------------------------------------------------------------------------------------------+
9464|:warning:`warning:` |nbsp| :diagtext:`the value of the size argument in 'strncat' is too large, might lead to a buffer overflow`|
9465+--------------------------------------------------------------------------------------------------------------------------------+
9466
9467+-------------------------------------------------------------------------------------------------------+
9468|:warning:`warning:` |nbsp| :diagtext:`size argument in 'strncat' call appears to be size of the source`|
9469+-------------------------------------------------------------------------------------------------------+
9470
9471+-------------------------------------------------------------------------------------------+
9472|:warning:`warning:` |nbsp| :diagtext:`the value of the size argument to 'strncat' is wrong`|
9473+-------------------------------------------------------------------------------------------+
9474
9475
9476-Wsuper-class-method-mismatch
9477-----------------------------
9478**Diagnostic text:**
9479
9480+--------------------------------------------------------------------------------------------------------------------------------+
9481|:warning:`warning:` |nbsp| :diagtext:`method parameter type` |nbsp| :diagtext:`does not match super class method parameter type`|
9482+--------------------------------------------------------------------------------------------------------------------------------+
9483
9484
9485-Wswitch
9486--------
9487This diagnostic is enabled by default.
9488
9489**Diagnostic text:**
9490
9491+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9492|:warning:`warning:` |nbsp| :diagtext:`overflow converting case value to switch condition type (`:placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`:diagtext:`)`|
9493+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9494
9495+---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9496|:warning:`warning:` |nbsp| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
9497| ||+-----------------------------------------------------------------------------------------------+ ||
9498| |||:diagtext:`:enumeration value` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not handled in switch`| ||
9499| ||+-----------------------------------------------------------------------------------------------+ ||
9500| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
9501| ||+-----------------------------------------------------------------------------------------------------------------------------------------------+ ||
9502| |||:diagtext:`:enumeration values` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C` |nbsp| :diagtext:`not handled in switch`| ||
9503| ||+-----------------------------------------------------------------------------------------------------------------------------------------------+ ||
9504| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
9505| ||+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
9506| |||:diagtext:`:enumeration values` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and` |nbsp| :placeholder:`D` |nbsp| :diagtext:`not handled in switch`| ||
9507| ||+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
9508| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
9509| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
9510| |||:diagtext:`:`:placeholder:`A` |nbsp| :diagtext:`enumeration values not handled in switch:` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp| :placeholder:`D`:diagtext:`...`|||
9511| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
9512| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
9513+---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9514
9515+------------------------------------------------------------------------------------------------+
9516|:warning:`warning:` |nbsp| :diagtext:`case value not in enumerated type` |nbsp| :placeholder:`A`|
9517+------------------------------------------------------------------------------------------------+
9518
9519
9520-Wswitch-bool
9521-------------
9522This diagnostic is enabled by default.
9523
9524**Diagnostic text:**
9525
9526+-------------------------------------------------------------------------+
9527|:warning:`warning:` |nbsp| :diagtext:`switch condition has boolean value`|
9528+-------------------------------------------------------------------------+
9529
9530
9531-Wswitch-default
9532----------------
9533This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
9534
9535-Wswitch-enum
9536-------------
9537**Diagnostic text:**
9538
9539+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9540|:warning:`warning:` |nbsp| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
9541| ||+----------------------------------------------------------------------------------------------------------+ ||
9542| |||:diagtext:`:enumeration value` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not explicitly handled in switch`| ||
9543| ||+----------------------------------------------------------------------------------------------------------+ ||
9544| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
9545| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
9546| |||:diagtext:`:enumeration values` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C` |nbsp| :diagtext:`not explicitly handled in switch`| ||
9547| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
9548| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
9549| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
9550| |||:diagtext:`:enumeration values` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and` |nbsp| :placeholder:`D` |nbsp| :diagtext:`not explicitly handled in switch`| ||
9551| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
9552| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
9553| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
9554| |||:diagtext:`:`:placeholder:`A` |nbsp| :diagtext:`enumeration values not explicitly handled in switch:` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp| :placeholder:`D`:diagtext:`...`|||
9555| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
9556| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
9557+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9558
9559
9560-Wsync-fetch-and-nand-semantics-changed
9561---------------------------------------
9562This diagnostic is enabled by default.
9563
9564**Diagnostic text:**
9565
9566+-------------------------------------------------------------------------------------------------------------------------------------------+
9567|:warning:`warning:` |nbsp| :diagtext:`the semantics of this intrinsic changed with GCC version 4.4 - the newer semantics are provided here`|
9568+-------------------------------------------------------------------------------------------------------------------------------------------+
9569
9570
9571-Wsynth
9572-------
9573This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
9574
9575-Wtautological-compare
9576----------------------
9577Some of the diagnostics controlled by this flag are enabled by default.
9578
Richard Smith8cba2912016-09-14 01:55:42 +00009579Also controls `-Wtautological-constant-out-of-range-compare`_, `-Wtautological-overlap-compare`_, `-Wtautological-pointer-compare`_, `-Wtautological-undefined-compare`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00009580
9581**Diagnostic text:**
9582
9583+---------------------------+---------------------------+--------------------------------------------------+------------------------+
9584|:warning:`warning:` |nbsp| |+-------------------------+|:diagtext:`comparison always evaluates to` |nbsp| |+----------------------+|
9585| ||:diagtext:`self-` || ||:diagtext:`false` ||
9586| |+-------------------------+| |+----------------------+|
9587| ||:diagtext:`array` |nbsp| || ||:diagtext:`true` ||
9588| |+-------------------------+| |+----------------------+|
9589| | | ||:diagtext:`a constant`||
9590| | | |+----------------------+|
9591+---------------------------+---------------------------+--------------------------------------------------+------------------------+
9592
9593+-------------------------------------------------------------------------------------+-------------------+
9594|:warning:`warning:` |nbsp| :diagtext:`bitwise comparison always evaluates to` |nbsp| |+-----------------+|
9595| ||:diagtext:`false`||
9596| |+-----------------+|
9597| ||:diagtext:`true` ||
9598| |+-----------------+|
9599+-------------------------------------------------------------------------------------+-------------------+
9600
9601+-------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------------------------------------------+
9602|:warning:`warning:` |nbsp| :diagtext:`comparison of unsigned`|+------------------------+| |nbsp| :diagtext:`expression` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is always` |nbsp| :placeholder:`B`|
9603| || || |
9604| |+------------------------+| |
9605| || |nbsp| :diagtext:`enum`|| |
9606| |+------------------------+| |
9607+-------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------------------------------------------+
9608
9609+--------------------------------------------------------------------------------------------------------+--------------------------+----------------------------------------------------------------+
9610|:warning:`warning:` |nbsp| :diagtext:`comparison of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`unsigned`|+------------------------+| |nbsp| :diagtext:`expression is always` |nbsp| :placeholder:`B`|
9611| || || |
9612| |+------------------------+| |
9613| || |nbsp| :diagtext:`enum`|| |
9614| |+------------------------+| |
9615+--------------------------------------------------------------------------------------------------------+--------------------------+----------------------------------------------------------------+
9616
9617
9618-Wtautological-constant-out-of-range-compare
9619--------------------------------------------
9620This diagnostic is enabled by default.
9621
9622**Diagnostic text:**
9623
9624+------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-------------------------------------+-------------------+
9625|:warning:`warning:` |nbsp| :diagtext:`comparison of` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`with` |nbsp| |+--------------------------------------------------------+| |nbsp| :diagtext:`is always` |nbsp| |+-----------------+|
9626| ||+--------------------------------------------+|| ||+------------------------------------------------------+|| ||:diagtext:`false`||
9627| |||:diagtext:`constant` |nbsp| :placeholder:`A`||| |||:diagtext:`expression of type` |nbsp| :placeholder:`C`||| |+-----------------+|
9628| ||+--------------------------------------------+|| ||+------------------------------------------------------+|| ||:diagtext:`true` ||
9629| |+----------------------------------------------+| |+--------------------------------------------------------+| |+-----------------+|
9630| ||:diagtext:`true` || ||:diagtext:`boolean expression` || | |
9631| |+----------------------------------------------+| |+--------------------------------------------------------+| | |
9632| ||:diagtext:`false` || | | | |
9633| |+----------------------------------------------+| | | | |
9634+------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-------------------------------------+-------------------+
9635
9636
9637-Wtautological-overlap-compare
9638------------------------------
9639**Diagnostic text:**
9640
9641+-----------------------------------------------------------------------------------------+-------------------+
9642|:warning:`warning:` |nbsp| :diagtext:`overlapping comparisons always evaluate to` |nbsp| |+-----------------+|
9643| ||:diagtext:`false`||
9644| |+-----------------+|
9645| ||:diagtext:`true` ||
9646| |+-----------------+|
9647+-----------------------------------------------------------------------------------------+-------------------+
9648
9649
9650-Wtautological-pointer-compare
9651------------------------------
9652This diagnostic is enabled by default.
9653
9654**Diagnostic text:**
9655
9656+--------------------------------------------------------------------+---------------------------+----------------------------------------------------------+-------------------------+----------------------------------------+-------------------+--------------------------------+
9657|:warning:`warning:` |nbsp| :diagtext:`comparison of nonnull` |nbsp| |+-------------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`'` |nbsp| |+-----------------------+|:diagtext:`equal to a null pointer is '`|+-----------------+|:diagtext:`' on first encounter`|
9658| ||:diagtext:`function call`|| ||:diagtext:`not` |nbsp| || ||:diagtext:`true` || |
9659| |+-------------------------+| |+-----------------------+| |+-----------------+| |
9660| ||:diagtext:`parameter` || || || ||:diagtext:`false`|| |
9661| |+-------------------------+| |+-----------------------+| |+-----------------+| |
9662+--------------------------------------------------------------------+---------------------------+----------------------------------------------------------+-------------------------+----------------------------------------+-------------------+--------------------------------+
9663
9664+------------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------+-----------------------------------------------------+-------------------+
9665|:warning:`warning:` |nbsp| :diagtext:`comparison of` |nbsp| |+----------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`'` |nbsp| |+-----------------------+|:diagtext:`equal to a null pointer is always` |nbsp| |+-----------------+|
9666| ||:diagtext:`address of`|| ||:diagtext:`not` |nbsp| || ||:diagtext:`true` ||
9667| |+----------------------+| |+-----------------------+| |+-----------------+|
9668| ||:diagtext:`function` || || || ||:diagtext:`false`||
9669| |+----------------------+| |+-----------------------+| |+-----------------+|
9670| ||:diagtext:`array` || | | | |
9671| |+----------------------+| | | | |
9672+------------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------+-----------------------------------------------------+-------------------+
9673
9674
9675-Wtautological-undefined-compare
9676--------------------------------
9677This diagnostic is enabled by default.
9678
9679**Diagnostic text:**
9680
9681+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+
9682|:warning:`warning:` |nbsp| :diagtext:`reference cannot be bound to dereferenced null pointer in well-defined C++ code; comparison may be assumed to always evaluate to` |nbsp| |+-----------------+|
9683| ||:diagtext:`true` ||
9684| |+-----------------+|
9685| ||:diagtext:`false`||
9686| |+-----------------+|
9687+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+
9688
9689+------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+
9690|:warning:`warning:` |nbsp| :diagtext:`'this' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to` |nbsp| |+-----------------+|
9691| ||:diagtext:`true` ||
9692| |+-----------------+|
9693| ||:diagtext:`false`||
9694| |+-----------------+|
9695+------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+
9696
9697
9698-Wtentative-definition-incomplete-type
9699--------------------------------------
9700This diagnostic is enabled by default.
9701
9702**Diagnostic text:**
9703
9704+---------------------------------------------------------------------------------------------------------------------------------------------------+
9705|:warning:`warning:` |nbsp| :diagtext:`tentative definition of variable with internal linkage has incomplete non-array type` |nbsp| :placeholder:`A`|
9706+---------------------------------------------------------------------------------------------------------------------------------------------------+
9707
9708
9709-Wthread-safety
9710---------------
Richard Smith8cba2912016-09-14 01:55:42 +00009711Controls `-Wthread-safety-analysis`_, `-Wthread-safety-attributes`_, `-Wthread-safety-precise`_, `-Wthread-safety-reference`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +00009712
9713
9714-Wthread-safety-analysis
9715------------------------
9716**Diagnostic text:**
9717
9718+----------------------------------------------------------------------------------------------------------------------------------------------------+
9719|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' must be acquired before '`:placeholder:`C`:diagtext:`'`|
9720+----------------------------------------------------------------------------------------------------------------------------------------------------+
9721
9722+---------------------------------------------------------------------------------------------------------------------------------+
9723|:warning:`warning:` |nbsp| :diagtext:`Cycle in acquired\_before/after dependencies, starting with '`:placeholder:`A`:diagtext:`'`|
9724+---------------------------------------------------------------------------------------------------------------------------------+
9725
9726+---------------------------------------------------------------------+
9727|:warning:`warning:` |nbsp| :diagtext:`cannot resolve lock expression`|
9728+---------------------------------------------------------------------+
9729
9730+-----------------------------------------------------------------------------------------------------------------------------------------------+
9731|:warning:`warning:` |nbsp| :diagtext:`acquiring` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' that is already held`|
9732+-----------------------------------------------------------------------------------------------------------------------------------------------+
9733
9734+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
9735|:warning:`warning:` |nbsp| :diagtext:`expecting` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' to be held at start of each loop`|
9736+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
9737
9738+------------------------------------------------------------------------------------------------------------------------------------------------------------+
9739|:warning:`warning:` |nbsp| :diagtext:`expecting` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' to be held at the end of function`|
9740+------------------------------------------------------------------------------------------------------------------------------------------------------------+
9741
9742+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9743|:warning:`warning:` |nbsp| :diagtext:`cannot call function '`:placeholder:`B`:diagtext:`' while` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`C`:diagtext:`' is held`|
9744+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9745
9746+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
9747|:warning:`warning:` |nbsp| :diagtext:`calling function '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
9748| ||+------------------------------------------+ ||
9749| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
9750| ||+------------------------------------------+ ||
9751| |+--------------------------------------------------------+|
9752| ||+------------------------------------------------------+||
9753| |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
9754| ||+------------------------------------------------------+||
9755| |+--------------------------------------------------------+|
9756+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
9757
9758+--------------------------------------------------------------------------------------------------------------------------------------------------+
9759|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' is acquired exclusively and shared in the same scope`|
9760+--------------------------------------------------------------------------------------------------------------------------------------------------+
9761
9762+------------------------------------------------------------------------------------------------------------------------------------+
9763|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' is not held on every path through here`|
9764+------------------------------------------------------------------------------------------------------------------------------------+
9765
9766+----------------------------------------------------------------------------------------------------------------------------------+
9767|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' is still held at the end of function`|
9768+----------------------------------------------------------------------------------------------------------------------------------+
9769
9770+--------------------------------------------------------------------------------------------------------------------------------------------+
9771|:warning:`warning:` |nbsp| :diagtext:`releasing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' that was not held`|
9772+--------------------------------------------------------------------------------------------------------------------------------------------+
9773
9774+----------------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+-----------------------+--------------------------+
9775|:warning:`warning:` |nbsp| :diagtext:`releasing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' using` |nbsp| |+---------------------+| |nbsp| :diagtext:`access, expected` |nbsp| |+---------------------+| |nbsp| :diagtext:`access`|
9776| ||:diagtext:`shared` || ||:diagtext:`shared` || |
9777| |+---------------------+| |+---------------------+| |
9778| ||:diagtext:`exclusive`|| ||:diagtext:`exclusive`|| |
9779| |+---------------------+| |+---------------------+| |
9780+----------------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+-----------------------+--------------------------+
9781
9782+---------------------------+---------------------+---------------------------------------------------------------------------------------------------+-----------------------------------+
9783|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by '`:placeholder:`A`:diagtext:`' requires holding` |nbsp| |+---------------------------------+|
9784| ||:diagtext:`reading`|| ||:diagtext:`any mutex` ||
9785| |+-------------------+| |+---------------------------------+|
9786| ||:diagtext:`writing`|| ||:diagtext:`any mutex exclusively`||
9787| |+-------------------+| |+---------------------------------+|
9788+---------------------------+---------------------+---------------------------------------------------------------------------------------------------+-----------------------------------+
9789
9790+---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
9791|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
9792| ||:diagtext:`reading`|| ||+------------------------------------------+ ||
9793| |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
9794| ||:diagtext:`writing`|| ||+------------------------------------------+ ||
9795| |+-------------------+| |+--------------------------------------------------------+|
9796| | | ||+------------------------------------------------------+||
9797| | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
9798| | | ||+------------------------------------------------------+||
9799| | | |+--------------------------------------------------------+|
9800+---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
9801
9802+---------------------------+---------------------+------------------------------------------------------------------------------------+-----------------------------------+
9803|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable '`:placeholder:`A`:diagtext:`' requires holding` |nbsp| |+---------------------------------+|
9804| ||:diagtext:`reading`|| ||:diagtext:`any mutex` ||
9805| |+-------------------+| |+---------------------------------+|
9806| ||:diagtext:`writing`|| ||:diagtext:`any mutex exclusively`||
9807| |+-------------------+| |+---------------------------------+|
9808+---------------------------+---------------------+------------------------------------------------------------------------------------+-----------------------------------+
9809
9810+---------------------------+---------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
9811|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
9812| ||:diagtext:`reading`|| ||+------------------------------------------+ ||
9813| |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
9814| ||:diagtext:`writing`|| ||+------------------------------------------+ ||
9815| |+-------------------+| |+--------------------------------------------------------+|
9816| | | ||+------------------------------------------------------+||
9817| | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
9818| | | ||+------------------------------------------------------+||
9819| | | |+--------------------------------------------------------+|
9820+---------------------------+---------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
9821
9822
9823-Wthread-safety-attributes
9824--------------------------
9825**Diagnostic text:**
9826
9827+----------------------------------------------------------------------------------------------------------------------------------------+
9828|:warning:`warning:` |nbsp| :diagtext:`invalid capability name '`:placeholder:`A`:diagtext:`'; capability name must be 'mutex' or 'role'`|
9829+----------------------------------------------------------------------------------------------------------------------------------------+
9830
9831+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9832|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute requires arguments whose type is annotated with 'capability' attribute; type here is` |nbsp| :placeholder:`B`|
9833+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9834
9835+--------------------------------------------------------------------------------------------------------------------------------------------------------+
9836|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute can only be applied in a context annotated with 'capability("mutex")' attribute`|
9837+--------------------------------------------------------------------------------------------------------------------------------------------------------+
9838
9839+----------------------------------------------------------------------------------------------------------------------------------+
9840|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`only applies to pointer types; type here is` |nbsp| :placeholder:`B`|
9841+----------------------------------------------------------------------------------------------------------------------------------+
9842
9843+------------------------------------------------------------------------------------------------------------------------------------+
9844|:warning:`warning:` |nbsp| :diagtext:`ignoring` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute because its argument is invalid`|
9845+------------------------------------------------------------------------------------------------------------------------------------+
9846
9847
9848-Wthread-safety-beta
9849--------------------
9850**Diagnostic text:**
9851
9852+------------------------------------------------------------------+
9853|:warning:`warning:` |nbsp| :diagtext:`Thread safety beta warning.`|
9854+------------------------------------------------------------------+
9855
9856
9857-Wthread-safety-negative
9858------------------------
9859**Diagnostic text:**
9860
9861+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9862|:warning:`warning:` |nbsp| :diagtext:`acquiring` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' requires negative capability '`:placeholder:`C`:diagtext:`'`|
9863+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9864
9865
9866-Wthread-safety-precise
9867-----------------------
9868**Diagnostic text:**
9869
9870+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
9871|:warning:`warning:` |nbsp| :diagtext:`calling function '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
9872| ||+------------------------------------------+ ||
9873| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
9874| ||+------------------------------------------+ ||
9875| |+--------------------------------------------------------+|
9876| ||+------------------------------------------------------+||
9877| |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
9878| ||+------------------------------------------------------+||
9879| |+--------------------------------------------------------+|
9880+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
9881
9882+---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
9883|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
9884| ||:diagtext:`reading`|| ||+------------------------------------------+ ||
9885| |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
9886| ||:diagtext:`writing`|| ||+------------------------------------------+ ||
9887| |+-------------------+| |+--------------------------------------------------------+|
9888| | | ||+------------------------------------------------------+||
9889| | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
9890| | | ||+------------------------------------------------------+||
9891| | | |+--------------------------------------------------------+|
9892+---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
9893
9894+---------------------------+---------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
9895|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
9896| ||:diagtext:`reading`|| ||+------------------------------------------+ ||
9897| |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
9898| ||:diagtext:`writing`|| ||+------------------------------------------+ ||
9899| |+-------------------+| |+--------------------------------------------------------+|
9900| | | ||+------------------------------------------------------+||
9901| | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
9902| | | ||+------------------------------------------------------+||
9903| | | |+--------------------------------------------------------+|
9904+---------------------------+---------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
9905
9906
9907-Wthread-safety-reference
9908-------------------------
9909**Diagnostic text:**
9910
9911+----------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
9912|:warning:`warning:` |nbsp| :diagtext:`passing variable '`:placeholder:`B`:diagtext:`' by reference requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
9913| ||+------------------------------------------+ ||
9914| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
9915| ||+------------------------------------------+ ||
9916| |+--------------------------------------------------------+|
9917| ||+------------------------------------------------------+||
9918| |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
9919| ||+------------------------------------------------------+||
9920| |+--------------------------------------------------------+|
9921+----------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
9922
9923+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
9924|:warning:`warning:` |nbsp| :diagtext:`passing the value that '`:placeholder:`B`:diagtext:`' points to by reference requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
9925| ||+------------------------------------------+ ||
9926| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
9927| ||+------------------------------------------+ ||
9928| |+--------------------------------------------------------+|
9929| ||+------------------------------------------------------+||
9930| |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
9931| ||+------------------------------------------------------+||
9932| |+--------------------------------------------------------+|
9933+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
9934
9935
9936-Wthread-safety-verbose
9937-----------------------
9938**Diagnostic text:**
9939
9940+---------------------------------------------------------------------+
9941|:warning:`warning:` |nbsp| :diagtext:`Thread safety verbose warning.`|
9942+---------------------------------------------------------------------+
9943
9944
9945-Wtrigraphs
9946-----------
9947This diagnostic is enabled by default.
9948
9949**Diagnostic text:**
9950
9951+-----------------------------------------------------------------------------------------------------+
9952|:warning:`warning:` |nbsp| :diagtext:`trigraph converted to '`:placeholder:`A`:diagtext:`' character`|
9953+-----------------------------------------------------------------------------------------------------+
9954
9955+------------------------------------------------------------------+
9956|:warning:`warning:` |nbsp| :diagtext:`trigraph ends block comment`|
9957+------------------------------------------------------------------+
9958
9959+-------------------------------------------------------+
9960|:warning:`warning:` |nbsp| :diagtext:`trigraph ignored`|
9961+-------------------------------------------------------+
9962
9963+-------------------------------------------------------------------------------+
9964|:warning:`warning:` |nbsp| :diagtext:`ignored trigraph would end block comment`|
9965+-------------------------------------------------------------------------------+
9966
9967
9968-Wtype-limits
9969-------------
9970This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
9971
9972-Wtype-safety
9973-------------
9974This diagnostic is enabled by default.
9975
9976**Diagnostic text:**
9977
9978+----------------------------------------------------------------------------------------------------------------------------+
9979|:warning:`warning:` |nbsp| :diagtext:`specified` |nbsp| :placeholder:`A` |nbsp| :diagtext:`type tag requires a null pointer`|
9980+----------------------------------------------------------------------------------------------------------------------------+
9981
9982+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------+
9983|:warning:`warning:` |nbsp| :diagtext:`argument type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`doesn't match specified` |nbsp| :placeholder:`B` |nbsp| :diagtext:`type tag` |nbsp| |+---------------------------------------------------+|
9984| ||+-------------------------------------------------+||
9985| |||:diagtext:`that requires` |nbsp| :placeholder:`D`|||
9986| ||+-------------------------------------------------+||
9987| |+---------------------------------------------------+|
9988| || ||
9989| |+---------------------------------------------------+|
9990+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------+
9991
9992+---------------------------------------------------------------------------------------------------+
9993|:warning:`warning:` |nbsp| :diagtext:`this type tag was not designed to be used with this function`|
9994+---------------------------------------------------------------------------------------------------+
9995
9996
9997-Wtypedef-redefinition
9998----------------------
9999This diagnostic is enabled by default.
10000
10001**Diagnostic text:**
10002
10003+--------------------------------------------------------------------------------------------------------------------------+
10004|:warning:`warning:` |nbsp| :diagtext:`redefinition of typedef` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C11 feature`|
10005+--------------------------------------------------------------------------------------------------------------------------+
10006
10007
10008-Wtypename-missing
10009------------------
10010This diagnostic is enabled by default.
10011
10012**Diagnostic text:**
10013
10014+-------------------------------------------------------------------------------------------------------------------------------------+
10015|:warning:`warning:` |nbsp| :diagtext:`missing 'typename' prior to dependent type name '`:placeholder:`A`:placeholder:`B`:diagtext:`'`|
10016+-------------------------------------------------------------------------------------------------------------------------------------+
10017
10018
Richard Smithcf9f4222017-01-20 19:27:09 +000010019-Wunable-to-open-stats-file
10020---------------------------
10021This diagnostic is enabled by default.
10022
10023**Diagnostic text:**
10024
10025+-------------------------------------------------------------------------------------------------------------------------------------------+
10026|:warning:`warning:` |nbsp| :diagtext:`unable to open statistics output file '`:placeholder:`A`:diagtext:`': '`:placeholder:`B`:diagtext:`'`|
10027+-------------------------------------------------------------------------------------------------------------------------------------------+
10028
10029
Richard Smithb6a3b4b2016-09-12 05:58:29 +000010030-Wunavailable-declarations
10031--------------------------
10032This diagnostic is enabled by default.
10033
10034**Diagnostic text:**
10035
10036+----------------------------------------------------------------------------------------------------------------------+
10037|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be unavailable because the receiver type is unknown`|
10038+----------------------------------------------------------------------------------------------------------------------+
10039
10040
10041-Wundeclared-selector
10042---------------------
10043**Diagnostic text:**
10044
10045+----------------------------------------------------------------------------------+
10046|:warning:`warning:` |nbsp| :diagtext:`undeclared selector` |nbsp| :placeholder:`A`|
10047+----------------------------------------------------------------------------------+
10048
10049+-------------------------------------------------------------------------------------------------------------------------------------------------+
10050|:warning:`warning:` |nbsp| :diagtext:`undeclared selector` |nbsp| :placeholder:`A`:diagtext:`; did you mean` |nbsp| :placeholder:`B`:diagtext:`?`|
10051+-------------------------------------------------------------------------------------------------------------------------------------------------+
10052
10053
10054-Wundef
10055-------
10056**Diagnostic text:**
10057
10058+---------------------------------------------------------------------------------------------+
10059|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not defined, evaluates to 0`|
10060+---------------------------------------------------------------------------------------------+
10061
10062
10063-Wundefined-bool-conversion
10064---------------------------
10065This diagnostic is enabled by default.
10066
10067**Diagnostic text:**
10068
10069+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10070|:warning:`warning:` |nbsp| :diagtext:`reference cannot be bound to dereferenced null pointer in well-defined C++ code; pointer may be assumed to always convert to true`|
10071+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10072
10073+-----------------------------------------------------------------------------------------------------------------------------------------------+
10074|:warning:`warning:` |nbsp| :diagtext:`'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true`|
10075+-----------------------------------------------------------------------------------------------------------------------------------------------+
10076
10077
10078-Wundefined-func-template
10079-------------------------
10080**Diagnostic text:**
10081
10082+---------------------------------------------------------------------------------------------------------------------------------------------------------+
10083|:warning:`warning:` |nbsp| :diagtext:`instantiation of function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`required here, but no definition is available`|
10084+---------------------------------------------------------------------------------------------------------------------------------------------------------+
10085
10086
10087-Wundefined-inline
10088------------------
10089This diagnostic is enabled by default.
10090
10091**Diagnostic text:**
10092
10093+----------------------------------------------------------------------------------------------------------------+
10094|:warning:`warning:` |nbsp| :diagtext:`inline function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not defined`|
10095+----------------------------------------------------------------------------------------------------------------+
10096
10097
10098-Wundefined-internal
10099--------------------
10100This diagnostic is enabled by default.
10101
10102**Diagnostic text:**
10103
10104+---------------------------+----------------------+-----------------------------------------------------------------------------------+
10105|:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`has internal linkage but is not defined`|
10106| ||:diagtext:`function`|| |
10107| |+--------------------+| |
10108| ||:diagtext:`variable`|| |
10109| |+--------------------+| |
10110+---------------------------+----------------------+-----------------------------------------------------------------------------------+
10111
10112
10113-Wundefined-reinterpret-cast
10114----------------------------
10115**Diagnostic text:**
10116
10117+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10118|:warning:`warning:` |nbsp| :diagtext:`dereference of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that was reinterpret\_cast from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has undefined behavior`|
10119+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10120
10121+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10122|:warning:`warning:` |nbsp| :diagtext:`reinterpret\_cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has undefined behavior`|
10123+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10124
10125
10126-Wundefined-var-template
10127------------------------
10128This diagnostic is enabled by default.
10129
10130**Diagnostic text:**
10131
10132+---------------------------------------------------------------------------------------------------------------------------------------------------------+
10133|:warning:`warning:` |nbsp| :diagtext:`instantiation of variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`required here, but no definition is available`|
10134+---------------------------------------------------------------------------------------------------------------------------------------------------------+
10135
10136
10137-Wunevaluated-expression
10138------------------------
10139This diagnostic is enabled by default.
10140
10141Also controls `-Wpotentially-evaluated-expression`_.
10142
10143**Diagnostic text:**
10144
10145+-----------------------------------------------------------------------------------------------------------+
10146|:warning:`warning:` |nbsp| :diagtext:`expression with side effects has no effect in an unevaluated context`|
10147+-----------------------------------------------------------------------------------------------------------+
10148
10149
10150-Wunguarded-availability
10151------------------------
10152**Diagnostic text:**
10153
10154+----------------------------------------------------------------------------------------------+
10155|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is only available conditionally`|
10156+----------------------------------------------------------------------------------------------+
10157
10158+------------------------------------------------------------------------------------------------------------------+
10159|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be partial because the receiver type is unknown`|
10160+------------------------------------------------------------------------------------------------------------------+
10161
10162+--------------------------------------------------------------------------------------------------+
10163|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is partial:` |nbsp| :placeholder:`B`|
10164+--------------------------------------------------------------------------------------------------+
10165
10166+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
10167|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is only available on` |nbsp| :placeholder:`B` |nbsp| :placeholder:`C` |nbsp| :diagtext:`or newer`|
10168+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
10169
10170
10171-Wunicode
10172---------
10173This diagnostic is enabled by default.
10174
10175**Diagnostic text:**
10176
10177+-------------------------------------------------------------------------------------------------------------------+
10178|:warning:`warning:` |nbsp| :diagtext:`incomplete universal character name; treating as '\\' followed by identifier`|
10179+-------------------------------------------------------------------------------------------------------------------+
10180
10181+-------------------------------------------------------------------------------------------------------------------------------------------------------+
10182|:warning:`warning:` |nbsp| :diagtext:`\\`:placeholder:`A` |nbsp| :diagtext:`used with no following hex digits; treating as '\\' followed by identifier`|
10183+-------------------------------------------------------------------------------------------------------------------------------------------------------+
10184
10185+-----------------------------------------------------------------------------------------------+
10186|:warning:`warning:` |nbsp| :diagtext:`universal character name refers to a surrogate character`|
10187+-----------------------------------------------------------------------------------------------+
10188
10189+--------------------------------------------------------------------------------------------------------------------------------------+
10190|:warning:`warning:` |nbsp| :diagtext:`universal character names are only valid in C99 or C++; treating as '\\' followed by identifier`|
10191+--------------------------------------------------------------------------------------------------------------------------------------+
10192
10193+---------------------------------------------------------------------------------------------+
10194|:warning:`warning:` |nbsp| :diagtext:`universal character names are only valid in C99 or C++`|
10195+---------------------------------------------------------------------------------------------+
10196
10197
10198-Wunicode-whitespace
10199--------------------
10200This diagnostic is enabled by default.
10201
10202**Diagnostic text:**
10203
10204+-------------------------------------------------------------------------------+
10205|:warning:`warning:` |nbsp| :diagtext:`treating Unicode character as whitespace`|
10206+-------------------------------------------------------------------------------+
10207
10208
10209-Wuninitialized
10210---------------
10211Some of the diagnostics controlled by this flag are enabled by default.
10212
10213Also controls `-Wsometimes-uninitialized`_, `-Wstatic-self-init`_.
10214
10215**Diagnostic text:**
10216
10217+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
10218|:warning:`warning:` |nbsp| :diagtext:`base class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is uninitialized when used here to access` |nbsp| :placeholder:`B`|
10219+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
10220
10221+-----------------------------------------------------------------------------------------------------------------------+
10222|:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is uninitialized when used here`|
10223+-----------------------------------------------------------------------------------------------------------------------+
10224
10225+--------------------------------------------------------------------------------------------------------------------------------------+
10226|:warning:`warning:` |nbsp| :diagtext:`reference` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not yet bound to a value when used here`|
10227+--------------------------------------------------------------------------------------------------------------------------------------+
10228
10229+------------------------------------------------------------------------------------------------------------------------------------------------+
10230|:warning:`warning:` |nbsp| :diagtext:`block pointer variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is uninitialized when captured by block`|
10231+------------------------------------------------------------------------------------------------------------------------------------------------+
10232
10233+---------------------------------------------------------------------------------------------------------------------------------------------------+
10234|:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is uninitialized when used within its own initialization`|
10235+---------------------------------------------------------------------------------------------------------------------------------------------------+
10236
10237+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
10238|:warning:`warning:` |nbsp| :diagtext:`reference` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not yet bound to a value when used within its own initialization`|
10239+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
10240
10241+------------------------------------------------------------------------------------------------------------------------+-------------------------------+
10242|:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is uninitialized when` |nbsp| |+-----------------------------+|
10243| ||:diagtext:`used here` ||
10244| |+-----------------------------+|
10245| ||:diagtext:`captured by block`||
10246| |+-----------------------------+|
10247+------------------------------------------------------------------------------------------------------------------------+-------------------------------+
10248
10249
10250-Wunknown-argument
10251------------------
10252This diagnostic is enabled by default.
10253
10254**Diagnostic text:**
10255
10256+-----------------------------------------------------------------------------------------------------------+
10257|:warning:`warning:` |nbsp| :diagtext:`unknown argument ignored in clang-cl: '`:placeholder:`A`:diagtext:`'`|
10258+-----------------------------------------------------------------------------------------------------------+
10259
10260
10261-Wunknown-attributes
10262--------------------
10263This diagnostic is enabled by default.
10264
10265**Diagnostic text:**
10266
10267+-----------------------------------------------------------------------------------------------------------+
10268|:warning:`warning:` |nbsp| :diagtext:`unknown attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored`|
10269+-----------------------------------------------------------------------------------------------------------+
10270
10271
10272-Wunknown-escape-sequence
10273-------------------------
10274This diagnostic is enabled by default.
10275
10276**Diagnostic text:**
10277
10278+-----------------------------------------------------------------------------------------------+
10279|:warning:`warning:` |nbsp| :diagtext:`unknown escape sequence '\\`:placeholder:`A`:diagtext:`'`|
10280+-----------------------------------------------------------------------------------------------+
10281
10282
10283-Wunknown-pragmas
10284-----------------
10285Some of the diagnostics controlled by this flag are enabled by default.
10286
10287**Diagnostic text:**
10288
10289+------------------------------------------------------------------------------------+
10290|:warning:`warning:` |nbsp| :diagtext:`expected 'ON' or 'OFF' or 'DEFAULT' in pragma`|
10291+------------------------------------------------------------------------------------+
10292
10293+--------------------------------------------------------------------------+
10294|:warning:`warning:` |nbsp| :diagtext:`expected end of directive in pragma`|
10295+--------------------------------------------------------------------------+
10296
10297+-----------------------------------------------------------------------+
10298|:warning:`warning:` |nbsp| :diagtext:`unknown pragma in STDC namespace`|
10299+-----------------------------------------------------------------------+
10300
10301+--------------------------------------------------------------------------------------------+
10302|:warning:`warning:` |nbsp| :diagtext:`pragma diagnostic pop could not pop, no matching push`|
10303+--------------------------------------------------------------------------------------------+
10304
10305+--------------------------------------------------------------------------------------------------------------------------+
10306|:warning:`warning:` |nbsp| :diagtext:`pragma diagnostic expected 'error', 'warning', 'ignored', 'fatal', 'push', or 'pop'`|
10307+--------------------------------------------------------------------------------------------------------------------------+
10308
10309+----------------------------------------------------------------------------------------------+
10310|:warning:`warning:` |nbsp| :diagtext:`pragma diagnostic expected option name (e.g. "-Wundef")`|
10311+----------------------------------------------------------------------------------------------+
10312
10313+----------------------------------------------------------------------------+
10314|:warning:`warning:` |nbsp| :diagtext:`unexpected token in pragma diagnostic`|
10315+----------------------------------------------------------------------------+
10316
10317+----------------------------------------------------------------------------------------------------+
10318|:warning:`warning:` |nbsp| :diagtext:`unknown warning group '`:placeholder:`A`:diagtext:`', ignored`|
10319+----------------------------------------------------------------------------------------------------+
10320
10321+-------------------------------------------------------------+
10322|:warning:`warning:` |nbsp| :diagtext:`unknown pragma ignored`|
10323+-------------------------------------------------------------+
10324
10325+----------------------------------------------------------------------------------------------------+
10326|:warning:`warning:` |nbsp| :diagtext:`pragma include\_alias expected '`:placeholder:`A`:diagtext:`'`|
10327+----------------------------------------------------------------------------------------------------+
10328
10329+--------------------------------------------------------------------------------------+
10330|:warning:`warning:` |nbsp| :diagtext:`pragma include\_alias expected include filename`|
10331+--------------------------------------------------------------------------------------+
10332
10333+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10334|:warning:`warning:` |nbsp| :diagtext:`angle-bracketed include <`:placeholder:`A`:diagtext:`> cannot be aliased to double-quoted include "`:placeholder:`B`:diagtext:`"`|
10335+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10336
10337+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10338|:warning:`warning:` |nbsp| :diagtext:`double-quoted include "`:placeholder:`A`:diagtext:`" cannot be aliased to angle-bracketed include <`:placeholder:`B`:diagtext:`>`|
10339+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10340
10341+----------------------------------------------------------------------------------------------+
10342|:warning:`warning:` |nbsp| :diagtext:`#pragma warning expected '`:placeholder:`A`:diagtext:`'`|
10343+----------------------------------------------------------------------------------------------+
10344
10345+--------------------------------------------------------------------------------+
10346|:warning:`warning:` |nbsp| :diagtext:`#pragma warning expected a warning number`|
10347+--------------------------------------------------------------------------------+
10348
10349+----------------------------------------------------------------------------------------------------+
10350|:warning:`warning:` |nbsp| :diagtext:`#pragma warning(push, level) requires a level between 0 and 4`|
10351+----------------------------------------------------------------------------------------------------+
10352
10353+-----------------------------------------------------------------------------------------------------------------------------------------------+
10354|:warning:`warning:` |nbsp| :diagtext:`#pragma warning expected 'push', 'pop', 'default', 'disable', 'error', 'once', 'suppress', 1, 2, 3, or 4`|
10355+-----------------------------------------------------------------------------------------------------------------------------------------------+
10356
10357+----------------------------------------------------------------------------------------------------+
10358|:warning:`warning:` |nbsp| :diagtext:`pragma STDC FENV\_ACCESS ON is not supported, ignoring pragma`|
10359+----------------------------------------------------------------------------------------------------+
10360
10361
10362-Wunknown-sanitizers
10363--------------------
10364This diagnostic is enabled by default.
10365
10366**Diagnostic text:**
10367
10368+-----------------------------------------------------------------------------------------------+
10369|:warning:`warning:` |nbsp| :diagtext:`unknown sanitizer '`:placeholder:`A`:diagtext:`' ignored`|
10370+-----------------------------------------------------------------------------------------------+
10371
10372
10373-Wunknown-warning-option
10374------------------------
10375This diagnostic is enabled by default.
10376
10377**Diagnostic text:**
10378
10379+------------------------------------------------------+---------------------+---------------------------------------------------------+--------------------------------------------------------------+
10380|:warning:`warning:` |nbsp| :diagtext:`unknown` |nbsp| |+-------------------+| |nbsp| :diagtext:`option '`:placeholder:`B`:diagtext:`'`|+------------------------------------------------------------+|
10381| ||:diagtext:`warning`|| || ||
10382| |+-------------------+| |+------------------------------------------------------------+|
10383| ||:diagtext:`remark` || ||+----------------------------------------------------------+||
10384| |+-------------------+| |||:diagtext:`; did you mean '`:placeholder:`D`:diagtext:`'?`|||
10385| | | ||+----------------------------------------------------------+||
10386| | | |+------------------------------------------------------------+|
10387+------------------------------------------------------+---------------------+---------------------------------------------------------+--------------------------------------------------------------+
10388
10389+-------------------------------------------------------------------------------------------------------------------------------------------+
10390|:warning:`warning:` |nbsp| :diagtext:`unknown` |nbsp| :placeholder:`A` |nbsp| :diagtext:`warning specifier: '`:placeholder:`B`:diagtext:`'`|
10391+-------------------------------------------------------------------------------------------------------------------------------------------+
10392
10393
10394-Wunnamed-type-template-args
10395----------------------------
10396Some of the diagnostics controlled by this flag are enabled by default.
10397
10398Also controls `-Wc++98-compat-unnamed-type-template-args`_.
10399
10400**Diagnostic text:**
10401
10402+--------------------------------------------------------------------------+
10403|:warning:`warning:` |nbsp| :diagtext:`template argument uses unnamed type`|
10404+--------------------------------------------------------------------------+
10405
10406
10407-Wunneeded-internal-declaration
10408-------------------------------
10409**Diagnostic text:**
10410
10411+---------------------------+----------------------+---------------------------------------------------------------------------------+
10412|:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is not needed and will not be emitted`|
10413| ||:diagtext:`function`|| |
10414| |+--------------------+| |
10415| ||:diagtext:`variable`|| |
10416| |+--------------------+| |
10417+---------------------------+----------------------+---------------------------------------------------------------------------------+
10418
10419+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
10420|:warning:`warning:` |nbsp| :diagtext:`'static' function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared in header file should be declared 'static inline'`|
10421+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
10422
10423
10424-Wunneeded-member-function
10425--------------------------
10426**Diagnostic text:**
10427
10428+---------------------------------------------------------------------------------------------------------------------------------------+
10429|:warning:`warning:` |nbsp| :diagtext:`member function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not needed and will not be emitted`|
10430+---------------------------------------------------------------------------------------------------------------------------------------+
10431
10432
10433-Wunreachable-code
10434------------------
10435Also controls `-Wunreachable-code-loop-increment`_.
10436
10437**Diagnostic text:**
10438
10439+------------------------------------------------------------------+
10440|:warning:`warning:` |nbsp| :diagtext:`code will never be executed`|
10441+------------------------------------------------------------------+
10442
10443
10444-Wunreachable-code-aggressive
10445-----------------------------
10446Controls `-Wunreachable-code`_, `-Wunreachable-code-break`_, `-Wunreachable-code-return`_.
10447
10448
10449-Wunreachable-code-break
10450------------------------
10451**Diagnostic text:**
10452
10453+---------------------------------------------------------------------+
10454|:warning:`warning:` |nbsp| :diagtext:`'break' will never be executed`|
10455+---------------------------------------------------------------------+
10456
10457
10458-Wunreachable-code-loop-increment
10459---------------------------------
10460**Diagnostic text:**
10461
10462+-------------------------------------------------------------------------------------------------+
10463|:warning:`warning:` |nbsp| :diagtext:`loop will run at most once (loop increment never executed)`|
10464+-------------------------------------------------------------------------------------------------+
10465
10466
10467-Wunreachable-code-return
10468-------------------------
10469**Diagnostic text:**
10470
10471+----------------------------------------------------------------------+
10472|:warning:`warning:` |nbsp| :diagtext:`'return' will never be executed`|
10473+----------------------------------------------------------------------+
10474
10475
10476-Wunsequenced
10477-------------
10478This diagnostic is enabled by default.
10479
10480**Diagnostic text:**
10481
10482+----------------------------------------------------------------------------------------------------+
10483|:warning:`warning:` |nbsp| :diagtext:`multiple unsequenced modifications to` |nbsp| :placeholder:`A`|
10484+----------------------------------------------------------------------------------------------------+
10485
10486+-----------------------------------------------------------------------------------------------------+
10487|:warning:`warning:` |nbsp| :diagtext:`unsequenced modification and access to` |nbsp| :placeholder:`A`|
10488+-----------------------------------------------------------------------------------------------------+
10489
10490
10491-Wunsupported-cb
10492----------------
10493This diagnostic is enabled by default.
10494
10495**Diagnostic text:**
10496
10497+--------------------------------------------------------------------------------------------------------------------------------------------------------+
10498|:warning:`warning:` |nbsp| :diagtext:`ignoring '-mcompact-branches=' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`|
10499+--------------------------------------------------------------------------------------------------------------------------------------------------------+
10500
10501
10502-Wunsupported-dll-base-class-template
10503-------------------------------------
10504**Diagnostic text:**
10505
10506+---------------------------------------------------------------------------+------------------------------------+------------------------------------------------------------------------------+
10507|:warning:`warning:` |nbsp| :diagtext:`propagating dll attribute to` |nbsp| |+----------------------------------+| |nbsp| :diagtext:`base class template without dll attribute is not supported`|
10508| ||:diagtext:`already instantiated` || |
10509| |+----------------------------------+| |
10510| ||:diagtext:`explicitly specialized`|| |
10511| |+----------------------------------+| |
10512+---------------------------------------------------------------------------+------------------------------------+------------------------------------------------------------------------------+
10513
10514
10515-Wunsupported-friend
10516--------------------
10517This diagnostic is enabled by default.
10518
10519**Diagnostic text:**
10520
10521+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10522|:warning:`warning:` |nbsp| :diagtext:`dependent nested name specifier '`:placeholder:`A`:diagtext:`' for friend template declaration is not supported; ignoring this friend declaration`|
10523+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10524
10525+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10526|:warning:`warning:` |nbsp| :diagtext:`dependent nested name specifier '`:placeholder:`A`:diagtext:`' for friend class declaration is not supported; turning off access control for` |nbsp| :placeholder:`B`|
10527+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10528
10529
10530-Wunsupported-nan
10531-----------------
10532This diagnostic is enabled by default.
10533
10534**Diagnostic text:**
10535
10536+-----------------------------------------------------------------------------------------------------------------------------------------------+
10537|:warning:`warning:` |nbsp| :diagtext:`ignoring '-mnan=2008' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`|
10538+-----------------------------------------------------------------------------------------------------------------------------------------------+
10539
10540+-------------------------------------------------------------------------------------------------------------------------------------------------+
10541|:warning:`warning:` |nbsp| :diagtext:`ignoring '-mnan=legacy' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`|
10542+-------------------------------------------------------------------------------------------------------------------------------------------------+
10543
10544
10545-Wunsupported-visibility
10546------------------------
10547This diagnostic is enabled by default.
10548
10549**Diagnostic text:**
10550
10551+------------------------------------------------------------------------------------------------------+
10552|:warning:`warning:` |nbsp| :diagtext:`target does not support 'protected' visibility; using 'default'`|
10553+------------------------------------------------------------------------------------------------------+
10554
10555
Richard Smithcf9f4222017-01-20 19:27:09 +000010556-Wunusable-partial-specialization
10557---------------------------------
10558This diagnostic is an error by default, but the flag ``-Wno-unusable-partial-specialization`` can be used to disable the error.
10559
10560**Diagnostic text:**
10561
10562+-----------------------+----------------------+--------------------------------------------------------------------+----------------------------------+------------------------------------------------------------------------------------------+
10563|:error:`error:` |nbsp| |+--------------------+| |nbsp| :diagtext:`template partial specialization contains` |nbsp| |+--------------------------------+| |nbsp| :diagtext:`that cannot be deduced; this partial specialization will never be used`|
10564| ||:diagtext:`class` || ||:diagtext:`a template parameter`|| |
10565| |+--------------------+| |+--------------------------------+| |
10566| ||:diagtext:`variable`|| ||:diagtext:`template parameters` || |
10567| |+--------------------+| |+--------------------------------+| |
10568+-----------------------+----------------------+--------------------------------------------------------------------+----------------------------------+------------------------------------------------------------------------------------------+
10569
10570
Richard Smithb6a3b4b2016-09-12 05:58:29 +000010571-Wunused
10572--------
10573Some of the diagnostics controlled by this flag are enabled by default.
10574
Richard Smithcf9f4222017-01-20 19:27:09 +000010575Controls `-Wunused-argument`_, `-Wunused-function`_, `-Wunused-label`_, `-Wunused-lambda-capture`_, `-Wunused-local-typedef`_, `-Wunused-private-field`_, `-Wunused-property-ivar`_, `-Wunused-value`_, `-Wunused-variable`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +000010576
10577
10578-Wunused-argument
10579-----------------
10580This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
10581
10582-Wunused-command-line-argument
10583------------------------------
10584This diagnostic is enabled by default.
10585
10586**Diagnostic text:**
10587
10588+---------------------------------------------------------------------------------------------------------------+
10589|:warning:`warning:` |nbsp| :diagtext:`joined argument expects additional value: '`:placeholder:`A`:diagtext:`'`|
10590+---------------------------------------------------------------------------------------------------------------+
10591
Richard Smithce9d5862016-09-14 01:51:10 +000010592+-----------------------------------------------------------------------------------------------------------------------------+
10593|:warning:`warning:` |nbsp| :diagtext:`argument '-fdiagnostics-show-hotness' requires profile-guided optimization information`|
10594+-----------------------------------------------------------------------------------------------------------------------------+
10595
Richard Smithb6a3b4b2016-09-12 05:58:29 +000010596+----------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+
10597|:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: '`:placeholder:`B`:diagtext:`' input unused`|+--------------------------------------------------------------------+|
10598| ||+------------------------------------------------------------------+||
10599| ||| |nbsp| :diagtext:`when '`:placeholder:`D`:diagtext:`' is present`|||
10600| ||+------------------------------------------------------------------+||
10601| |+--------------------------------------------------------------------+|
10602| || ||
10603| |+--------------------------------------------------------------------+|
10604+----------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+
10605
10606+----------------------------------------------------------------------------------------------------------------+
10607|:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: '`:placeholder:`B`:diagtext:`' input unused in cpp mode`|
10608+----------------------------------------------------------------------------------------------------------------+
10609
10610+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+
10611|:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: previously preprocessed input`|+---------------------------------------------------------------------------+|
10612| ||+-------------------------------------------------------------------------+||
10613| ||| |nbsp| :diagtext:`unused when '`:placeholder:`C`:diagtext:`' is present`|||
10614| ||+-------------------------------------------------------------------------+||
10615| |+---------------------------------------------------------------------------+|
10616| || ||
10617| |+---------------------------------------------------------------------------+|
10618+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+
10619
10620+---------------------------------------------------------------------------------------------------------+
10621|:warning:`warning:` |nbsp| :diagtext:`argument unused during compilation: '`:placeholder:`A`:diagtext:`'`|
10622+---------------------------------------------------------------------------------------------------------+
10623
10624
10625-Wunused-comparison
10626-------------------
10627This diagnostic is enabled by default.
10628
10629**Diagnostic text:**
10630
10631+---------------------------+-----------------------------------------+--------------------------------------------+
10632|:warning:`warning:` |nbsp| |+---------------------------------------+| |nbsp| :diagtext:`comparison result unused`|
10633| ||+----------------+--------------------+|| |
10634| |||+--------------+|:diagtext:`equality`||| |
10635| |||| || ||| |
10636| |||+--------------+| ||| |
10637| ||||:diagtext:`in`|| ||| |
10638| |||+--------------+| ||| |
10639| ||+----------------+--------------------+|| |
10640| |+---------------------------------------+| |
10641| ||:diagtext:`relational` || |
10642| |+---------------------------------------+| |
10643+---------------------------+-----------------------------------------+--------------------------------------------+
10644
10645
10646-Wunused-const-variable
10647-----------------------
10648**Diagnostic text:**
10649
10650+------------------------------------------------------------------------------+
10651|:warning:`warning:` |nbsp| :diagtext:`unused variable` |nbsp| :placeholder:`A`|
10652+------------------------------------------------------------------------------+
10653
10654
10655-Wunused-exception-parameter
10656----------------------------
10657**Diagnostic text:**
10658
10659+-----------------------------------------------------------------------------------------+
10660|:warning:`warning:` |nbsp| :diagtext:`unused exception parameter` |nbsp| :placeholder:`A`|
10661+-----------------------------------------------------------------------------------------+
10662
10663
10664-Wunused-function
10665-----------------
10666Also controls `-Wunneeded-internal-declaration`_.
10667
10668**Diagnostic text:**
10669
10670+------------------------------------------------------------------------------+
10671|:warning:`warning:` |nbsp| :diagtext:`unused function` |nbsp| :placeholder:`A`|
10672+------------------------------------------------------------------------------+
10673
10674
10675-Wunused-getter-return-value
10676----------------------------
10677This diagnostic is enabled by default.
10678
10679**Diagnostic text:**
10680
10681+------------------------------------------------------------------------------------------------------------------+
10682|:warning:`warning:` |nbsp| :diagtext:`property access result unused - getters should not be used for side effects`|
10683+------------------------------------------------------------------------------------------------------------------+
10684
10685
10686-Wunused-label
10687--------------
10688**Diagnostic text:**
10689
10690+---------------------------------------------------------------------------+
10691|:warning:`warning:` |nbsp| :diagtext:`unused label` |nbsp| :placeholder:`A`|
10692+---------------------------------------------------------------------------+
10693
10694
Richard Smithcf9f4222017-01-20 19:27:09 +000010695-Wunused-lambda-capture
10696-----------------------
10697**Diagnostic text:**
10698
10699+---------------------------------------------------------------------------------------------------------------+--------------------------------------------------+
10700|:warning:`warning:` |nbsp| :diagtext:`lambda capture` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not` |nbsp| |+------------------------------------------------+|
10701| ||:diagtext:`used` ||
10702| |+------------------------------------------------+|
10703| ||:diagtext:`required to be captured for this use`||
10704| |+------------------------------------------------+|
10705+---------------------------------------------------------------------------------------------------------------+--------------------------------------------------+
10706
10707
Richard Smithb6a3b4b2016-09-12 05:58:29 +000010708-Wunused-local-typedef
10709----------------------
10710**Diagnostic text:**
10711
10712+-----------------------------------------------------+------------------------+------------------------+
10713|:warning:`warning:` |nbsp| :diagtext:`unused` |nbsp| |+----------------------+| |nbsp| :placeholder:`B`|
10714| ||:diagtext:`typedef` || |
10715| |+----------------------+| |
10716| ||:diagtext:`type alias`|| |
10717| |+----------------------+| |
10718+-----------------------------------------------------+------------------------+------------------------+
10719
10720
10721-Wunused-local-typedefs
10722-----------------------
10723Synonym for `-Wunused-local-typedef`_.
10724
10725
10726-Wunused-macros
10727---------------
10728**Diagnostic text:**
10729
10730+--------------------------------------------------------+
10731|:warning:`warning:` |nbsp| :diagtext:`macro is not used`|
10732+--------------------------------------------------------+
10733
10734
10735-Wunused-member-function
10736------------------------
10737Also controls `-Wunneeded-member-function`_.
10738
10739**Diagnostic text:**
10740
10741+-------------------------------------------------------------------------------------+
10742|:warning:`warning:` |nbsp| :diagtext:`unused member function` |nbsp| :placeholder:`A`|
10743+-------------------------------------------------------------------------------------+
10744
10745
10746-Wunused-parameter
10747------------------
10748**Diagnostic text:**
10749
10750+-------------------------------------------------------------------------------+
10751|:warning:`warning:` |nbsp| :diagtext:`unused parameter` |nbsp| :placeholder:`A`|
10752+-------------------------------------------------------------------------------+
10753
10754
10755-Wunused-private-field
10756----------------------
10757**Diagnostic text:**
10758
10759+-----------------------------------------------------------------------------------------------------------+
10760|:warning:`warning:` |nbsp| :diagtext:`private field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not used`|
10761+-----------------------------------------------------------------------------------------------------------+
10762
10763
10764-Wunused-property-ivar
10765----------------------
10766**Diagnostic text:**
10767
10768+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
10769|:warning:`warning:` |nbsp| :diagtext:`ivar` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which backs the property is not referenced in this property's accessor`|
10770+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
10771
10772
10773-Wunused-result
10774---------------
10775This diagnostic is enabled by default.
10776
10777**Diagnostic text:**
10778
10779+-------------------------------------------------------------------------------------------------------------------------------------------+
10780|:warning:`warning:` |nbsp| :diagtext:`ignoring return value of function declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute`|
10781+-------------------------------------------------------------------------------------------------------------------------------------------+
10782
10783
10784-Wunused-value
10785--------------
10786This diagnostic is enabled by default.
10787
Richard Smith8cba2912016-09-14 01:55:42 +000010788Also controls `-Wunevaluated-expression`_, `-Wunused-comparison`_, `-Wunused-result`_.
Richard Smithb6a3b4b2016-09-12 05:58:29 +000010789
10790**Diagnostic text:**
10791
10792+-------------------------------------------------------------------------------------------------------------------------------------------+
10793|:warning:`warning:` |nbsp| :diagtext:`ignoring return value of function declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute`|
10794+-------------------------------------------------------------------------------------------------------------------------------------------+
10795
10796+----------------------------------------------------------------------------------------------------------------------------+
10797|:warning:`warning:` |nbsp| :diagtext:`container access result unused - container access should not be used for side effects`|
10798+----------------------------------------------------------------------------------------------------------------------------+
10799
10800+---------------------------------------------------------------+
10801|:warning:`warning:` |nbsp| :diagtext:`expression result unused`|
10802+---------------------------------------------------------------+
10803
10804+-----------------------------------------------------------------------------------------------+
10805|:warning:`warning:` |nbsp| :diagtext:`expression result unused; should this cast be to 'void'?`|
10806+-----------------------------------------------------------------------------------------------+
10807
10808
10809-Wunused-variable
10810-----------------
10811Also controls `-Wunused-const-variable`_.
10812
10813**Diagnostic text:**
10814
10815+------------------------------------------------------------------------------+
10816|:warning:`warning:` |nbsp| :diagtext:`unused variable` |nbsp| :placeholder:`A`|
10817+------------------------------------------------------------------------------+
10818
10819
10820-Wunused-volatile-lvalue
10821------------------------
10822This diagnostic is enabled by default.
10823
10824**Diagnostic text:**
10825
10826+----------------------------------------------------------------------------------------------------------------+
10827|:warning:`warning:` |nbsp| :diagtext:`expression result unused; assign into a variable to force a volatile load`|
10828+----------------------------------------------------------------------------------------------------------------+
10829
10830
10831-Wused-but-marked-unused
10832------------------------
10833**Diagnostic text:**
10834
10835+---------------------------------------------------------------------------------------------+
10836|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`was marked unused but was used`|
10837+---------------------------------------------------------------------------------------------+
10838
10839
10840-Wuser-defined-literals
10841-----------------------
10842This diagnostic is enabled by default.
10843
10844**Diagnostic text:**
10845
10846+--------------------------------------------------------------------------------------------------------+----------------------------------------------------+
10847|:warning:`warning:` |nbsp| :diagtext:`user-defined literal suffixes not starting with '\_' are reserved`|+--------------------------------------------------+|
10848| ||:diagtext:`; no literal will invoke this operator`||
10849| |+--------------------------------------------------+|
10850| || ||
10851| |+--------------------------------------------------+|
10852+--------------------------------------------------------------------------------------------------------+----------------------------------------------------+
10853
10854
Richard Smithcf9f4222017-01-20 19:27:09 +000010855-Wuser-defined-warnings
10856-----------------------
10857This diagnostic is enabled by default.
10858
10859**Diagnostic text:**
10860
10861The text of this diagnostic is not controlled by Clang.
10862
10863
Richard Smithb6a3b4b2016-09-12 05:58:29 +000010864-Wvarargs
10865---------
10866This diagnostic is enabled by default.
10867
10868**Diagnostic text:**
10869
10870+-----------------------------------------------------------------------------------------------------+
10871|:warning:`warning:` |nbsp| :diagtext:`second argument to 'va\_start' is not the last named parameter`|
10872+-----------------------------------------------------------------------------------------------------+
10873
10874+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10875|:warning:`warning:` |nbsp| :diagtext:`second argument to 'va\_arg' is of promotable type` |nbsp| :placeholder:`A`:diagtext:`; this va\_arg has undefined behavior because arguments will be promoted to` |nbsp| :placeholder:`B`|
10876+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10877
10878+------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------+
10879|:warning:`warning:` |nbsp| :diagtext:`passing` |nbsp| |+---------------------------------------------------------------+| |nbsp| :diagtext:`to 'va\_start' has undefined behavior`|
10880| ||:diagtext:`an object that undergoes default argument promotion`|| |
10881| |+---------------------------------------------------------------+| |
10882| ||:diagtext:`an object of reference type` || |
10883| |+---------------------------------------------------------------+| |
10884| ||:diagtext:`a parameter declared with the 'register' keyword` || |
10885| |+---------------------------------------------------------------+| |
10886+------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------+
10887
10888
10889-Wvariadic-macros
10890-----------------
10891**Diagnostic text:**
10892
10893+--------------------------------------------------------------------------------+
10894|:warning:`warning:` |nbsp| :diagtext:`named variadic macros are a GNU extension`|
10895+--------------------------------------------------------------------------------+
10896
10897+------------------------------------------------------------------------+
10898|:warning:`warning:` |nbsp| :diagtext:`variadic macros are a C99 feature`|
10899+------------------------------------------------------------------------+
10900
10901
Richard Smithcf9f4222017-01-20 19:27:09 +000010902-Wvec-elem-size
10903---------------
10904This diagnostic is an error by default, but the flag ``-Wno-vec-elem-size`` can be used to disable the error.
10905
10906**Diagnostic text:**
10907
10908+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10909|:error:`error:` |nbsp| :diagtext:`vector operands do not have the same elements sizes (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`)`|
10910+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10911
10912
Richard Smithb6a3b4b2016-09-12 05:58:29 +000010913-Wvector-conversion
10914-------------------
10915**Diagnostic text:**
10916
10917+------------------------------------------------------------------------+----------------------------------------------------------------+
10918|:warning:`warning:` |nbsp| :diagtext:`incompatible vector types` |nbsp| |+--------------------------------------------------------------+|
10919| ||:diagtext:`assigning to different types` ||
10920| |+--------------------------------------------------------------+|
10921| ||:diagtext:`passing to parameter of different type` ||
10922| |+--------------------------------------------------------------+|
10923| ||:diagtext:`returning from function with different return type`||
10924| |+--------------------------------------------------------------+|
10925| ||:diagtext:`converting between types` ||
10926| |+--------------------------------------------------------------+|
10927| ||:diagtext:`initializing with expression of different type` ||
10928| |+--------------------------------------------------------------+|
10929| ||:diagtext:`sending to parameter of different type` ||
10930| |+--------------------------------------------------------------+|
10931| ||:diagtext:`casting between types` ||
10932| |+--------------------------------------------------------------+|
10933+------------------------------------------------------------------------+----------------------------------------------------------------+
10934
10935
10936-Wvector-conversions
10937--------------------
10938Synonym for `-Wvector-conversion`_.
10939
10940
10941-Wvexing-parse
10942--------------
10943This diagnostic is enabled by default.
10944
10945**Diagnostic text:**
10946
10947+----------------------------------------------------------------------------------------------+
10948|:warning:`warning:` |nbsp| :diagtext:`empty parentheses interpreted as a function declaration`|
10949+----------------------------------------------------------------------------------------------+
10950
10951+-----------------------------------------------------------------------------------------------+
10952|:warning:`warning:` |nbsp| :diagtext:`parentheses were disambiguated as a function declaration`|
10953+-----------------------------------------------------------------------------------------------+
10954
10955
10956-Wvisibility
10957------------
10958This diagnostic is enabled by default.
10959
10960**Diagnostic text:**
10961
10962+---------------------------------------------------------------------------------------------------------------------------------------------+
10963|:warning:`warning:` |nbsp| :diagtext:`declaration of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will not be visible outside of this function`|
10964+---------------------------------------------------------------------------------------------------------------------------------------------+
10965
10966+----------------------------------------------------------------------------------------------------------------------------------------------+
10967|:warning:`warning:` |nbsp| :diagtext:`redefinition of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will not be visible outside of this function`|
10968+----------------------------------------------------------------------------------------------------------------------------------------------+
10969
10970
10971-Wvla
10972-----
10973**Diagnostic text:**
10974
10975+-----------------------------------------------------------------+
10976|:warning:`warning:` |nbsp| :diagtext:`variable length array used`|
10977+-----------------------------------------------------------------+
10978
10979
10980-Wvla-extension
10981---------------
10982**Diagnostic text:**
10983
10984+-------------------------------------------------------------------------------+
10985|:warning:`warning:` |nbsp| :diagtext:`variable length arrays are a C99 feature`|
10986+-------------------------------------------------------------------------------+
10987
10988
10989-Wvoid-ptr-dereference
10990----------------------
10991This diagnostic is enabled by default.
10992
10993**Diagnostic text:**
10994
10995+--------------------------------------------------------------------------------------------------------------------+
10996|:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow indirection on operand of type` |nbsp| :placeholder:`A`|
10997+--------------------------------------------------------------------------------------------------------------------+
10998
10999
11000-Wvolatile-register-var
11001-----------------------
11002This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
11003
11004-Wweak-template-vtables
11005-----------------------
11006**Diagnostic text:**
11007
11008+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
11009|:warning:`warning:` |nbsp| :diagtext:`explicit template instantiation` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will emit a vtable in every translation unit`|
11010+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
11011
11012
11013-Wweak-vtables
11014--------------
11015**Diagnostic text:**
11016
11017+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
11018|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit`|
11019+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
11020
11021
11022-Wwritable-strings
11023------------------
11024This diagnostic is enabled by default.
11025
11026Also controls `-Wdeprecated-writable-strings`_.
11027
11028**Diagnostic text:**
11029
11030+-------------------------------------------------------------------------------------------------------------------------+
11031|:warning:`warning:` |nbsp| :diagtext:`ISO C++11 does not allow conversion from string literal to` |nbsp| :placeholder:`A`|
11032+-------------------------------------------------------------------------------------------------------------------------+
11033
11034
11035-Wwrite-strings
11036---------------
11037Synonym for `-Wwritable-strings`_.
11038
11039
11040-Wzero-length-array
11041-------------------
11042**Diagnostic text:**
11043
11044+------------------------------------------------------------------------+
11045|:warning:`warning:` |nbsp| :diagtext:`zero size arrays are an extension`|
11046+------------------------------------------------------------------------+
11047
11048