adlint 1.6.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. data/ChangeLog +389 -37
  2. data/INSTALL +3 -0
  3. data/MANIFEST +7 -0
  4. data/NEWS +50 -10
  5. data/etc/conf.d/i686-mingw/cinit-gcc_4.6.1.erb +1 -1
  6. data/etc/mesg.d/en_US/messages.yml +7 -7
  7. data/etc/mesg.d/ja_JP/messages.yml +4 -4
  8. data/lib/adlint/c/branch.rb +4 -4
  9. data/lib/adlint/c/code.rb +11 -13
  10. data/lib/adlint/c/enum.rb +0 -2
  11. data/lib/adlint/c/environ.rb +13 -7
  12. data/lib/adlint/c/expr.rb +5 -1
  13. data/lib/adlint/c/interp.rb +10 -6
  14. data/lib/adlint/c/mediator.rb +1 -0
  15. data/lib/adlint/c/message.rb +294 -111
  16. data/lib/adlint/c/message_shima.rb +63 -0
  17. data/lib/adlint/c/metric.rb +25 -13
  18. data/lib/adlint/c/object.rb +168 -31
  19. data/lib/adlint/c/parser.rb +3 -3
  20. data/lib/adlint/c/phase.rb +20 -3
  21. data/lib/adlint/c/syntax.rb +175 -17
  22. data/lib/adlint/c/value.rb +199 -126
  23. data/lib/adlint/cpp/asm.rb +4 -4
  24. data/lib/adlint/cpp/constexpr.rb +1 -1
  25. data/lib/adlint/cpp/eval.rb +6 -4
  26. data/lib/adlint/cpp/message.rb +100 -7
  27. data/lib/adlint/cpp/phase.rb +12 -1
  28. data/lib/adlint/cpp/source.rb +2 -2
  29. data/lib/adlint/cpp/subst.rb +2 -4
  30. data/lib/adlint/lang.rb +5 -3
  31. data/lib/adlint/ld/metric.rb +1 -1
  32. data/lib/adlint/version.rb +2 -2
  33. data/share/demo/Makefile +5 -0
  34. data/share/demo/bad_include/bad_include.c +13 -0
  35. data/share/demo/bad_include/test'1'.h +0 -0
  36. data/share/demo/bad_include/test'2'.h +0 -0
  37. data/share/demo/incomplete_ifelse/incomplete_ifelse.c +29 -0
  38. data/share/demo/inline_asm/inline_asm.c +25 -0
  39. data/share/demo/invalid_call/invalid_call.c +12 -4
  40. data/share/demo/logical_expr/logical_expr.c +73 -0
  41. data/share/demo/register_vars/register_vars.c +12 -0
  42. data/share/demo/typedef_each_src/typedef_each_src.c +9 -0
  43. data/share/demo/wrap_around/wrap_around.c +17 -0
  44. data/share/doc/developers_guide_ja.html +3 -3
  45. data/share/doc/developers_guide_ja.texi +1 -1
  46. data/share/doc/users_guide_en.html +137 -102
  47. data/share/doc/users_guide_en.texi +121 -86
  48. data/share/doc/users_guide_ja.html +118 -91
  49. data/share/doc/users_guide_ja.texi +103 -76
  50. metadata +10 -3
@@ -2,7 +2,7 @@
2
2
  @setfilename users_guide_en.info
3
3
  @documentlanguage en
4
4
  @documentencoding utf-8
5
- @settitle AdLint 1.6.0 User's Guide
5
+ @settitle AdLint 1.8.0 User's Guide
6
6
 
7
7
  @copying
8
8
  Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
@@ -2536,7 +2536,7 @@ context_line
2536
2536
  * W0535::A comma operator is used in a 'for' statement.
2537
2537
  * W0538::This 'default' label is not final label in this 'switch' statement.
2538
2538
  * W0540::A function which the blank formal argument list is declared. `void' is omitted.
2539
- * W0541::This function mixed weaves C code with inline assembly code.
2539
+ * W0541::Inline assembly code should be encapsulated by macro.
2540
2540
  * W0542::There are identifiers in the part of formal argument in a function declaration.
2541
2541
  * W0543::The identifier of formal argument in this function declaration is different from the past declaration of it.
2542
2542
  * W0544::The identifier of formal argument in the function declaration is different from the declaration of function pointer.
@@ -2601,8 +2601,8 @@ context_line
2601
2601
  * W0627::There is a dead letter (only `;') in the following other code.
2602
2602
  * W0628::A function `%s' is defined, but this is not used in this project.
2603
2603
  * W0629::A static function `%s()' is not used in this translation unit.
2604
- * W0632::If `'' or `/*' use in `#include <%s>', it will unspecify behavior.
2605
- * W0633::If `'' or `/*' use in `#include "%s"', it will unspecify behavior.
2604
+ * W0632::Using ' or " characters in `#include <%s>' directive makes undefined behavior.
2605
+ * W0633::Using ' character in `#include "%s"' directive makes undefined behavior.
2606
2606
  * W0634::`\' is used in `#include' line. `/' is recommended for the path delimiter.
2607
2607
  * W0635::The type doesn't match with %sth conversion specifier and the corresponding actual argument.
2608
2608
  * W0636::An actual argument doesn't exist correspond to %sth conversion specifier.
@@ -2653,9 +2653,9 @@ context_line
2653
2653
  * W0685::A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
2654
2654
  * W0686::The same characters are described in scanset (characters enclosed by `[]').
2655
2655
  * W0687::#undef is using to delete #defined operator.
2656
- * W0688::There is no line number in 1 to 32767 ranges after '#line'.
2657
- * W0689::#line command syntax doesn't match `#line volatile integer constant value "string"'.
2658
- * W0690::This is not line number after '#line' value'.
2656
+ * W0688::There is no line number in 1 to 32767 ranges after #line directive.
2657
+ * W0689::#line directive syntax doesn't match `#line integer constant \"string\"'.
2658
+ * W0690::No line number after #line directive.
2659
2659
  * W0691::The result of `##' operator is not valid preprocessing token.
2660
2660
  * W0692::A function-like macro doesn't given an actual argument.
2661
2661
  * W0693::A function-like macro is called by actual argument which its definition is smaller.
@@ -23620,7 +23620,7 @@ None.
23620
23620
 
23621
23621
  @subsection Message body
23622
23622
 
23623
- This function mixed weaves C code with inline assembly code.
23623
+ Inline assembly code should be encapsulated by macro.
23624
23624
 
23625
23625
  @subsection Content
23626
23626
 
@@ -23629,6 +23629,8 @@ Under construction.
23629
23629
  @subsection Sample code
23630
23630
 
23631
23631
  @verbatim
23632
+ #define ASM_CODE asm("movl %ecx, %eax")
23633
+
23632
23634
  void foo(int arg1, int *arg2, int arg3)
23633
23635
  {
23634
23636
  asm("movl %ecx, %eax"); /* W0541 */
@@ -23638,6 +23640,8 @@ void foo(int arg1, int *arg2, int arg3)
23638
23640
  xorl eax, eax
23639
23641
  }
23640
23642
 
23643
+ ASM_CODE; /* OK */
23644
+
23641
23645
  __asm__ volatile ( /* W0541 */
23642
23646
  "int $0x80"
23643
23647
  : "=a" (r)
@@ -25337,17 +25341,16 @@ An integer expression which the value which the value is minus converted to unsi
25337
25341
 
25338
25342
  @subsection Content
25339
25343
 
25340
- @b{This message will be supported in AdLint 2.0.0}
25341
-
25342
25344
  Under construction.
25343
25345
 
25344
25346
  @subsection Sample code
25345
25347
 
25346
25348
  @verbatim
25347
- int a = func();
25348
-
25349
- if (a < 0) {
25350
- unsigned int b = a; /* W0607 */
25349
+ void func(int a)
25350
+ {
25351
+ if (a < 0) {
25352
+ unsigned int b = (unsigned int) a; /* W0607 */
25353
+ }
25351
25354
  }
25352
25355
  @end verbatim
25353
25356
 
@@ -25359,7 +25362,7 @@ if (a < 0) {
25359
25362
 
25360
25363
  @subsection Since
25361
25364
 
25362
- 2.0.0 (planned)
25365
+ 1.8.0
25363
25366
 
25364
25367
  @node W0608
25365
25368
  @section W0608
@@ -25371,14 +25374,19 @@ An integer expression which the value might be minus converted to unsigned type.
25371
25374
 
25372
25375
  @subsection Content
25373
25376
 
25374
- @b{This message will be supported in AdLint 2.0.0}
25375
-
25376
25377
  Under construction.
25377
25378
 
25378
25379
  @subsection Sample code
25379
25380
 
25380
25381
  @verbatim
25381
- /* will be added */
25382
+ void fuu(int a)
25383
+ {
25384
+ unsigned char b;
25385
+
25386
+ if (a < 256) {
25387
+ b = (unsigned char) a; /* W0608 */
25388
+ }
25389
+ }
25382
25390
  @end verbatim
25383
25391
 
25384
25392
  @subsection Related message
@@ -25389,7 +25397,7 @@ Under construction.
25389
25397
 
25390
25398
  @subsection Since
25391
25399
 
25392
- 2.0.0 (planned)
25400
+ 1.8.0
25393
25401
 
25394
25402
  @node W0609
25395
25403
  @section W0609
@@ -25723,14 +25731,19 @@ None.
25723
25731
 
25724
25732
  @subsection Content
25725
25733
 
25726
- @b{This message will be supported in AdLint 2.0.0}
25727
-
25728
25734
  Under construction.
25729
25735
 
25730
25736
  @subsection Sample code
25731
25737
 
25732
25738
  @verbatim
25733
- /* will be added */
25739
+ typedef int *INT_PTR; /* W0625 */
25740
+
25741
+ extern INT_PTR func(void);
25742
+
25743
+ INT_PTR func(void)
25744
+ {
25745
+ return 0;
25746
+ }
25734
25747
  @end verbatim
25735
25748
 
25736
25749
  @subsection Related message
@@ -25739,7 +25752,7 @@ None.
25739
25752
 
25740
25753
  @subsection Since
25741
25754
 
25742
- 2.0.0 (planned)
25755
+ 1.8.0
25743
25756
 
25744
25757
  @node W0626
25745
25758
  @section W0626
@@ -25885,30 +25898,28 @@ int func2(void)
25885
25898
 
25886
25899
  @subsection Message body
25887
25900
 
25888
- If `'' or `/*' use in `#include <%s>', it will unspecify behavior.
25901
+ Using ' or " characters in `@code{#include <%s>}' directive makes undefined behavior.
25889
25902
 
25890
25903
  @subsection Content
25891
25904
 
25892
- @b{This message will be supported in AdLint 2.0.0}
25893
-
25894
25905
  Under construction.
25895
25906
 
25896
25907
  @subsection Sample code
25897
25908
 
25898
25909
  @verbatim
25899
- /* will be added */
25910
+ #include <NG'_header.h> /* W0632 */
25900
25911
  @end verbatim
25901
25912
 
25902
25913
  @subsection Related message
25903
25914
 
25904
25915
  @itemize
25905
- @item @ref{W0633} If `'' or `/*' use in `#include "%s"', it will unspecify behavior.
25916
+ @item @ref{W0633} Using ' character in `#include "%s"' directive makes undefined behavior.
25906
25917
  @item @ref{W0634} `\' is used in `#include' line. `/' is recommended for the path delimiter.
25907
25918
  @end itemize
25908
25919
 
25909
25920
  @subsection Since
25910
25921
 
25911
- 2.0.0 (planned)
25922
+ 1.8.0
25912
25923
 
25913
25924
  @node W0633
25914
25925
  @section W0633
@@ -25916,30 +25927,28 @@ Under construction.
25916
25927
 
25917
25928
  @subsection Message body
25918
25929
 
25919
- If `'' or `/*' use in `#include \"%s\"', it will unspecify behavior.
25930
+ Using ' character in `@code{#include "%s"}' directive makes undefined behavior.
25920
25931
 
25921
25932
  @subsection Content
25922
25933
 
25923
- @b{This message will be supported in AdLint 2.0.0}
25924
-
25925
25934
  Under construction.
25926
25935
 
25927
25936
  @subsection Sample code
25928
25937
 
25929
25938
  @verbatim
25930
- /* will be added */
25939
+ #include "NG'_header.h" /* W0633 */
25931
25940
  @end verbatim
25932
25941
 
25933
25942
  @subsection Related message
25934
25943
 
25935
25944
  @itemize
25936
- @item @ref{W0632} If `'' or `/*' use in `#include <%s>', it will unspecify behavior.
25945
+ @item @ref{W0632} Using ' or " characters in `#include <%s>' directive makes undefined behavior.
25937
25946
  @item @ref{W0634} `\' is used in `#include' line. `/' is recommended for the path delimiter.
25938
25947
  @end itemize
25939
25948
 
25940
25949
  @subsection Since
25941
25950
 
25942
- 2.0.0 (planned)
25951
+ 1.8.0
25943
25952
 
25944
25953
  @node W0634
25945
25954
  @section W0634
@@ -25951,26 +25960,25 @@ Under construction.
25951
25960
 
25952
25961
  @subsection Content
25953
25962
 
25954
- @b{This message will be supported in AdLint 2.0.0}
25955
-
25956
25963
  Under construction.
25957
25964
 
25958
25965
  @subsection Sample code
25959
25966
 
25960
25967
  @verbatim
25961
- /* will be added */
25968
+ #include "..\ng\header.h" /* W0634 */
25969
+ #include "..\\ng\\header.h" /* W0634 */
25962
25970
  @end verbatim
25963
25971
 
25964
25972
  @subsection Related message
25965
25973
 
25966
25974
  @itemize
25967
- @item @ref{W0632} If `'' or `/*' use in `#include <%s>', it will unspecify behavior.
25968
- @item @ref{W0633} If `'' or `/*' use in `#include "%s"', it will unspecify behavior.
25975
+ @item @ref{W0632} Using ' or " characters in `#include <%s>' directive makes undefined behavior.
25976
+ @item @ref{W0633} Using ' character in `#include "%s"' directive makes undefined behavior.
25969
25977
  @end itemize
25970
25978
 
25971
25979
  @subsection Since
25972
25980
 
25973
- 2.0.0 (planned)
25981
+ 1.8.0
25974
25982
 
25975
25983
  @node W0635
25976
25984
  @section W0635
@@ -26217,15 +26225,18 @@ It is impossible to get the array's address which declared with 'register'.
26217
26225
 
26218
26226
  @subsection Content
26219
26227
 
26220
- @b{This message will be supported in AdLint 2.0.0}
26221
-
26222
26228
  Under construction.
26223
26229
 
26224
26230
  @subsection Sample code
26225
26231
 
26226
26232
  @verbatim
26227
- register int arr1[3]; /* W0642 */
26228
- int* p = arr1;
26233
+ void func(void)
26234
+ {
26235
+ register int a[3];
26236
+
26237
+ int *p1 = a; /* W0642 */
26238
+ int *p2 = &a[1]; /* W0642 */
26239
+ }
26229
26240
  @end verbatim
26230
26241
 
26231
26242
  @subsection Related message
@@ -26239,7 +26250,7 @@ int* p = arr1;
26239
26250
 
26240
26251
  @subsection Since
26241
26252
 
26242
- 2.0.0 (planned)
26253
+ 1.8.0
26243
26254
 
26244
26255
  @node W0643
26245
26256
  @section W0643
@@ -28512,9 +28523,9 @@ Under construction.
28512
28523
  @subsection Related message
28513
28524
 
28514
28525
  @itemize
28515
- @item @ref{W0688} There is no line number in 1 to 32767 ranges after '#line'.
28516
- @item @ref{W0689} #line command syntax doesn't match `#line volatile integer constant value "string"'.
28517
- @item @ref{W0690} This is not line number after '#line' value'.
28526
+ @item @ref{W0688} There is no line number in 1 to 32767 ranges after #line directive.
28527
+ @item @ref{W0689} #line directive syntax doesn't match `#line integer constant \"string\"'.
28528
+ @item @ref{W0690} No line number after #line directive.
28518
28529
  @item @ref{W0691} The result of `##' operator is not valid preprocessing token.
28519
28530
  @end itemize
28520
28531
 
@@ -28528,7 +28539,7 @@ Under construction.
28528
28539
 
28529
28540
  @subsection Message body
28530
28541
 
28531
- There is no line number in 1 to 32767 ranges after '#line'
28542
+ There is no line number in 1 to 32767 ranges after #line directive.
28532
28543
 
28533
28544
  @subsection Content
28534
28545
 
@@ -28544,8 +28555,8 @@ Under construction.
28544
28555
 
28545
28556
  @itemize
28546
28557
  @item @ref{W0687} #undef is using to delete #defined operator.
28547
- @item @ref{W0689} #line command syntax doesn't match `#line volatile integer constant value "string"'.
28548
- @item @ref{W0690} This is not line number after '#line' value'.
28558
+ @item @ref{W0689} #line directive syntax doesn't match `#line integer constant \"string\"'.
28559
+ @item @ref{W0690} No line number after #line directive.
28549
28560
  @item @ref{W0691} The result of `##' operator is not valid preprocessing token.
28550
28561
  @end itemize
28551
28562
 
@@ -28559,7 +28570,7 @@ Under construction.
28559
28570
 
28560
28571
  @subsection Message body
28561
28572
 
28562
- #line command syntax doesn't match `#line volatile integer constant value \"string\"'.
28573
+ #line directive syntax doesn't match `#line integer constant \"string\"'.
28563
28574
 
28564
28575
  @subsection Content
28565
28576
 
@@ -28578,8 +28589,8 @@ Under construction.
28578
28589
 
28579
28590
  @itemize
28580
28591
  @item @ref{W0687} #undef is using to delete #defined operator.
28581
- @item @ref{W0688} There is no line number in 1 to 32767 ranges after '#line'.
28582
- @item @ref{W0690} This is not line number after '#line' value'.
28592
+ @item @ref{W0688} There is no line number in 1 to 32767 ranges after #line directive.
28593
+ @item @ref{W0690} No line number after #line directive.
28583
28594
  @item @ref{W0691} The result of `##' operator is not valid preprocessing token.
28584
28595
  @end itemize
28585
28596
 
@@ -28593,7 +28604,7 @@ Under construction.
28593
28604
 
28594
28605
  @subsection Message body
28595
28606
 
28596
- This is not line number after '#line' value.'
28607
+ No line number after #line directive.
28597
28608
 
28598
28609
  @subsection Content
28599
28610
 
@@ -28610,8 +28621,8 @@ Under construction.
28610
28621
 
28611
28622
  @itemize
28612
28623
  @item @ref{W0687} #undef is using to delete #defined operator.
28613
- @item @ref{W0688} There is no line number in 1 to 32767 ranges after '#line'.
28614
- @item @ref{W0689} #line command syntax doesn't match `#line volatile integer constant value "string"'.
28624
+ @item @ref{W0688} There is no line number in 1 to 32767 ranges after #line directive.
28625
+ @item @ref{W0689} #line directive syntax doesn't match `#line integer constant \"string\"'.
28615
28626
  @item @ref{W0691} The result of `##' operator is not valid preprocessing token.
28616
28627
  @end itemize
28617
28628
 
@@ -28643,9 +28654,9 @@ Under construction.
28643
28654
 
28644
28655
  @itemize
28645
28656
  @item @ref{W0687} #undef is using to delete #defined operator.
28646
- @item @ref{W0688} There is no line number in 1 to 32767 ranges after '#line'.
28647
- @item @ref{W0689} #line command syntax doesn't match `#line volatile integer constant value "string"'.
28648
- @item @ref{W0690} This is not line number after '#line' value'.
28657
+ @item @ref{W0688} There is no line number in 1 to 32767 ranges after #line directive.
28658
+ @item @ref{W0689} #line directive syntax doesn't match `#line integer constant \"string\"'.
28659
+ @item @ref{W0690} No line number after #line directive.
28649
28660
  @end itemize
28650
28661
 
28651
28662
  @subsection Since
@@ -29117,14 +29128,15 @@ Right operand of relational operator is a substantive 'boolean' expression.
29117
29128
 
29118
29129
  @subsection Content
29119
29130
 
29120
- @b{This message will be supported in AdLint 2.0.0}
29121
-
29122
29131
  Under construction.
29123
29132
 
29124
29133
  @subsection Sample code
29125
29134
 
29126
29135
  @verbatim
29127
- x = (a + b) > (c > d); /* W0711 */
29136
+ int func(int a, int b, int c, int d)
29137
+ {
29138
+ return (a + b) > (c > d); /* W0711 */
29139
+ }
29128
29140
  @end verbatim
29129
29141
 
29130
29142
  @subsection Related message
@@ -29136,7 +29148,7 @@ x = (a + b) > (c > d); /* W0711 */
29136
29148
 
29137
29149
  @subsection Since
29138
29150
 
29139
- 2.0.0 (planned)
29151
+ 1.8.0
29140
29152
 
29141
29153
  @node W0712
29142
29154
  @section W0712
@@ -29148,14 +29160,15 @@ Left operand of relational operator is a substantive 'boolean' expression.
29148
29160
 
29149
29161
  @subsection Content
29150
29162
 
29151
- @b{This message will be supported in AdLint 2.0.0}
29152
-
29153
29163
  Under construction.
29154
29164
 
29155
29165
  @subsection Sample code
29156
29166
 
29157
29167
  @verbatim
29158
- x = (a > b) > (c + d); /* W0712 */
29168
+ int func(int a, int b, int c, int d)
29169
+ {
29170
+ return (a > b) > (c + d); /* W0712 */
29171
+ }
29159
29172
  @end verbatim
29160
29173
 
29161
29174
  @subsection Related message
@@ -29167,7 +29180,7 @@ x = (a > b) > (c + d); /* W0712 */
29167
29180
 
29168
29181
  @subsection Since
29169
29182
 
29170
- 2.0.0 (planned)
29183
+ 1.8.0
29171
29184
 
29172
29185
  @node W0713
29173
29186
  @section W0713
@@ -29179,14 +29192,15 @@ Both sides of relational operator is substantive 'boolean' expressions.
29179
29192
 
29180
29193
  @subsection Content
29181
29194
 
29182
- @b{This message will be supported in AdLint 2.0.0}
29183
-
29184
29195
  Under construction.
29185
29196
 
29186
29197
  @subsection Sample code
29187
29198
 
29188
29199
  @verbatim
29189
- x = (a > b) > (c > d); /* W0713 */
29200
+ int func(int a, int b, int c, int d)
29201
+ {
29202
+ return (a > b) > (c > d); /* W0713 */
29203
+ }
29190
29204
  @end verbatim
29191
29205
 
29192
29206
  @subsection Related message
@@ -29198,7 +29212,7 @@ x = (a > b) > (c > d); /* W0713 */
29198
29212
 
29199
29213
  @subsection Since
29200
29214
 
29201
- 2.0.0 (planned)
29215
+ 1.8.0
29202
29216
 
29203
29217
  @node W0714
29204
29218
  @section W0714
@@ -29210,14 +29224,15 @@ Both sides of `&' operator is substantive 'boolean' expressions.
29210
29224
 
29211
29225
  @subsection Content
29212
29226
 
29213
- @b{This message will be supported in AdLint 2.0.0}
29214
-
29215
29227
  Under construction.
29216
29228
 
29217
29229
  @subsection Sample code
29218
29230
 
29219
29231
  @verbatim
29220
- /* will be added */
29232
+ int func(int a, int b, int c, int d)
29233
+ {
29234
+ return (a > b) & (c > d); /* W0714 */
29235
+ }
29221
29236
  @end verbatim
29222
29237
 
29223
29238
  @subsection Related message
@@ -29231,7 +29246,7 @@ Under construction.
29231
29246
 
29232
29247
  @subsection Since
29233
29248
 
29234
- 2.0.0 (planned)
29249
+ 1.8.0
29235
29250
 
29236
29251
  @node W0715
29237
29252
  @section W0715
@@ -29243,14 +29258,15 @@ Both sides of `|' operator is substantive 'boolean' expressions.
29243
29258
 
29244
29259
  @subsection Content
29245
29260
 
29246
- @b{This message will be supported in AdLint 2.0.0}
29247
-
29248
29261
  Under construction.
29249
29262
 
29250
29263
  @subsection Sample code
29251
29264
 
29252
29265
  @verbatim
29253
- /* will be added */
29266
+ int func(int a, int b, int c, int d)
29267
+ {
29268
+ return (a > b) | (c > d); /* W0715 */
29269
+ }
29254
29270
  @end verbatim
29255
29271
 
29256
29272
  @subsection Related message
@@ -29264,7 +29280,7 @@ Under construction.
29264
29280
 
29265
29281
  @subsection Since
29266
29282
 
29267
- 2.0.0 (planned)
29283
+ 1.8.0
29268
29284
 
29269
29285
  @node W0716
29270
29286
  @section W0716
@@ -29688,7 +29704,7 @@ enum Fruits { APPLE, BANANA, ORANGE };
29688
29704
  void func(void)
29689
29705
  {
29690
29706
  enum Color c;
29691
-
29707
+
29692
29708
  c = ORANGE; /* W0729 */
29693
29709
  }
29694
29710
  @end verbatim
@@ -32824,14 +32840,33 @@ An inline assembly syntax is using. This is the language extension. This code wi
32824
32840
 
32825
32841
  @subsection Content
32826
32842
 
32827
- @b{This message will be supported in AdLint 2.0.0}
32828
-
32829
32843
  Under construction.
32830
32844
 
32831
32845
  @subsection Sample code
32832
32846
 
32833
32847
  @verbatim
32834
- /* will be added */
32848
+ #define ASM_CODE asm("movl %ecx, %eax")
32849
+
32850
+ void foo(int arg1, int *arg2, int arg3)
32851
+ {
32852
+ asm("movl %ecx, %eax"); /* W0832 */
32853
+ __asm__("movl %ecx, (%eax)"); /* W0832 */
32854
+
32855
+ asm { /* W0832 */
32856
+ xorl eax, eax
32857
+ }
32858
+
32859
+ ASM_CODE; /* W0832 */
32860
+
32861
+ __asm__ volatile ( /* W0832 */
32862
+ "int $0x80"
32863
+ : "=a" (r)
32864
+ "+b" (arg1),
32865
+ "+c" (arg2),
32866
+ "+d" (arg3)
32867
+ : "a" (128)
32868
+ : "memory", "cc");
32869
+ }
32835
32870
  @end verbatim
32836
32871
 
32837
32872
  @subsection Related message
@@ -32842,7 +32877,7 @@ Under construction.
32842
32877
 
32843
32878
  @subsection Since
32844
32879
 
32845
- 2.0.0 (planned)
32880
+ 1.8.0
32846
32881
 
32847
32882
  @node W0833
32848
32883
  @section W0833