Changeset 24d6572 for tests


Ignore:
Timestamp:
Jun 12, 2023, 2:45:32 PM (2 years ago)
Author:
Fangren Yu <f37yu@…>
Branches:
ast-experimental, master
Children:
62d62db
Parents:
34b4268 (diff), 251ce80 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into ast-experimental

Location:
tests
Files:
68 added
13 deleted
35 edited
139 moved

Legend:

Unmodified
Added
Removed
  • tests/.expect/PRNG.x64.txt

    r34b4268 r24d6572  
    11
    2        PRNG()   PRNG(5)    PRNG(0,5)
    3           861         3            0
    4 10137507171299805328         1            2
    5 12205946788447993741         4            0
    6 16222929371023265189         2            5
    7 11921944259646500358         1            1
    8 9511863719043198063         2            0
    9 18170109536749574203         0            1
    10 15896208456307578543         0            3
    11 4171113079117645375         1            4
    12 5535309872453329531         1            1
    13 13293369315461644140         2            2
    14 855811942427900360         1            1
    15 9125507373316195824         1            5
    16 6942856496042419510         1            5
    17 16774706561877323900         2            4
    18 17765436951300330249         4            0
    19 3766082030894719812         1            2
    20 15818141700523398820         3            5
    21 1244962761353699441         0            5
    22 4506898200126256218         1            2
     2CFA xoshiro256pp
     3
     4                    PRNG()     PRNG(5)   PRNG(0,5)
     5      13944458589275087071           3           2
     6        129977468648444256           0           4
     7       2357727400298891021           2           2
     8       8855179187835660146           3           3
     9       9957620185645882382           4           1
     10      13396406983727409795           0           5
     11       3342782395220265920           0           5
     12       1707651271867677937           1           0
     13      16402561450140881681           0           1
     14      17838519215740313729           4           2
     15       7425936020594490136           4           0
     16       4174865704721714670           3           5
     17      16055269689200152092           0           2
     18      15091270195803594018           1           5
     19      11807315541476180798           1           1
     20      10697186588988060306           4           1
     21      14665526411527044929           3           2
     22      11289342279096164771           2           5
     23      16126980828050300615           1           4
     24       7821578301767524260           4           1
    2325seed 1009
    2426
    2527Sequential
    26 trials 100000000 buckets 100000 min 875 max 1138 avg 1000.0 std 31.8 rstd 3.2%
     28trials 100000000 buckets 100000 min 875 max 1146 avg 1000.0 std 31.6 rstd 3.2%
    2729
    2830Concurrent
    29 trials 100000000 buckets 100000 min 875 max 1138 avg 1000.0 std 31.8 rstd 3.2%
    30 trials 100000000 buckets 100000 min 875 max 1138 avg 1000.0 std 31.8 rstd 3.2%
    31 trials 100000000 buckets 100000 min 875 max 1138 avg 1000.0 std 31.8 rstd 3.2%
    32 trials 100000000 buckets 100000 min 875 max 1138 avg 1000.0 std 31.8 rstd 3.2%
     31trials 100000000 buckets 100000 min 875 max 1146 avg 1000.0 std 31.6 rstd 3.2%
     32trials 100000000 buckets 100000 min 875 max 1146 avg 1000.0 std 31.6 rstd 3.2%
     33trials 100000000 buckets 100000 min 875 max 1146 avg 1000.0 std 31.6 rstd 3.2%
     34trials 100000000 buckets 100000 min 875 max 1146 avg 1000.0 std 31.6 rstd 3.2%
    3335
    34        prng()   prng(5)    prng(0,5)
    35           861         3            0
    36 10137507171299805328         1            2
    37 12205946788447993741         4            0
    38 16222929371023265189         2            5
    39 11921944259646500358         1            1
    40 9511863719043198063         2            0
    41 18170109536749574203         0            1
    42 15896208456307578543         0            3
    43 4171113079117645375         1            4
    44 5535309872453329531         1            1
    45 13293369315461644140         2            2
    46 855811942427900360         1            1
    47 9125507373316195824         1            5
    48 6942856496042419510         1            5
    49 16774706561877323900         2            4
    50 17765436951300330249         4            0
    51 3766082030894719812         1            2
    52 15818141700523398820         3            5
    53 1244962761353699441         0            5
    54 4506898200126256218         1            2
     36                    prng()     prng(5)   prng(0,5)
     37      13944458589275087071           3           2
     38        129977468648444256           0           4
     39       2357727400298891021           2           2
     40       8855179187835660146           3           3
     41       9957620185645882382           4           1
     42      13396406983727409795           0           5
     43       3342782395220265920           0           5
     44       1707651271867677937           1           0
     45      16402561450140881681           0           1
     46      17838519215740313729           4           2
     47       7425936020594490136           4           0
     48       4174865704721714670           3           5
     49      16055269689200152092           0           2
     50      15091270195803594018           1           5
     51      11807315541476180798           1           1
     52      10697186588988060306           4           1
     53      14665526411527044929           3           2
     54      11289342279096164771           2           5
     55      16126980828050300615           1           4
     56       7821578301767524260           4           1
    5557seed 1009
    5658
    5759Sequential
    58 trials 100000000 buckets 100000 min 875 max 1138 avg 1000.0 std 31.8 rstd 3.2%
     60trials 20000000 buckets 100000 min 139 max 265 avg 200.0 std 14.1 rstd 7.0%
    5961
    6062Concurrent
    61 trials 100000000 buckets 100000 min 875 max 1138 avg 1000.0 std 31.8 rstd 3.2%
    62 trials 100000000 buckets 100000 min 875 max 1138 avg 1000.0 std 31.8 rstd 3.2%
    63 trials 100000000 buckets 100000 min 875 max 1138 avg 1000.0 std 31.8 rstd 3.2%
    64 trials 100000000 buckets 100000 min 875 max 1138 avg 1000.0 std 31.8 rstd 3.2%
     63trials 20000000 buckets 100000 min 139 max 265 avg 200.0 std 14.1 rstd 7.0%
     64trials 20000000 buckets 100000 min 139 max 265 avg 200.0 std 14.1 rstd 7.0%
     65trials 20000000 buckets 100000 min 139 max 265 avg 200.0 std 14.1 rstd 7.0%
     66trials 20000000 buckets 100000 min 139 max 265 avg 200.0 std 14.1 rstd 7.0%
    6567
    66       prng(t) prng(t,5) prng(t,0,5)
    67           861         3            0
    68 10137507171299805328         1            2
    69 12205946788447993741         4            0
    70 16222929371023265189         2            5
    71 11921944259646500358         1            1
    72 9511863719043198063         2            0
    73 18170109536749574203         0            1
    74 15896208456307578543         0            3
    75 4171113079117645375         1            4
    76 5535309872453329531         1            1
    77 13293369315461644140         2            2
    78 855811942427900360         1            1
    79 9125507373316195824         1            5
    80 6942856496042419510         1            5
    81 16774706561877323900         2            4
    82 17765436951300330249         4            0
    83 3766082030894719812         1            2
    84 15818141700523398820         3            5
    85 1244962761353699441         0            5
    86 4506898200126256218         1            2
     68                   prng(t)   prng(t,5) prng(t,0,5)
     69      13944458589275087071           3           2
     70        129977468648444256           0           4
     71       2357727400298891021           2           2
     72       8855179187835660146           3           3
     73       9957620185645882382           4           1
     74      13396406983727409795           0           5
     75       3342782395220265920           0           5
     76       1707651271867677937           1           0
     77      16402561450140881681           0           1
     78      17838519215740313729           4           2
     79       7425936020594490136           4           0
     80       4174865704721714670           3           5
     81      16055269689200152092           0           2
     82      15091270195803594018           1           5
     83      11807315541476180798           1           1
     84      10697186588988060306           4           1
     85      14665526411527044929           3           2
     86      11289342279096164771           2           5
     87      16126980828050300615           1           4
     88       7821578301767524260           4           1
    8789seed 1009
    8890
    8991Sequential
    90 trials 100000000 buckets 100000 min 875 max 1138 avg 1000.0 std 31.8 rstd 3.2%
     92trials 100000000 buckets 100000 min 875 max 1146 avg 1000.0 std 31.6 rstd 3.2%
    9193
    9294Concurrent
    93 trials 100000000 buckets 100000 min 875 max 1138 avg 1000.0 std 31.8 rstd 3.2%
    94 trials 100000000 buckets 100000 min 875 max 1138 avg 1000.0 std 31.8 rstd 3.2%
    95 trials 100000000 buckets 100000 min 875 max 1138 avg 1000.0 std 31.8 rstd 3.2%
    96 trials 100000000 buckets 100000 min 875 max 1138 avg 1000.0 std 31.8 rstd 3.2%
     95trials 100000000 buckets 100000 min 875 max 1146 avg 1000.0 std 31.6 rstd 3.2%
     96trials 100000000 buckets 100000 min 875 max 1146 avg 1000.0 std 31.6 rstd 3.2%
     97trials 100000000 buckets 100000 min 875 max 1146 avg 1000.0 std 31.6 rstd 3.2%
     98trials 100000000 buckets 100000 min 875 max 1146 avg 1000.0 std 31.6 rstd 3.2%
  • tests/.expect/PRNG.x86.txt

    r34b4268 r24d6572  
    11
    2        PRNG()   PRNG(5)    PRNG(0,5)
    3       8333105         1            2
    4    1989339636         4            5
    5     266970699         3            2
    6    1928130121         3            4
    7    1351003938         4            5
    8    1624164922         4            3
    9     363429604         1            2
    10    3355083174         1            1
    11     214422584         1            1
    12    2266729947         1            2
    13    3649702519         2            4
    14    2250875012         2            4
    15    4184653025         1            3
    16    2640851227         2            5
    17     206468178         2            3
    18    2600873108         1            3
    19    3007574582         3            3
    20     394476790         0            2
    21    1312145388         1            5
    22    2989081290         2            4
     2CFA xoshiro128pp
     3
     4                    PRNG()     PRNG(5)   PRNG(0,5)
     5                2884683541           0           0
     6                3465286746           2           4
     7                3268922916           0           1
     8                2396374907           3           0
     9                2135076892           4           1
     10                 944377718           3           1
     11                2204845346           3           3
     12                3736609533           0           4
     13                4063231336           0           2
     14                1075394776           0           2
     15                 712844808           4           0
     16                4246343110           3           1
     17                3793873837           2           1
     18                3690340337           1           4
     19                 319207944           1           4
     20                1815791072           3           5
     21                2581617261           1           5
     22                3873329448           1           3
     23                 832631329           4           0
     24                 651551615           3           5
    2325seed 1009
    2426
    2527Sequential
    26 trials 100000000 buckets 100000 min 873 max 1140 avg 1000.0 std 31.3 rstd 3.1%
     28trials 100000000 buckets 100000 min 858 max 1147 avg 1000.0 std 31.5 rstd 3.2%
    2729
    2830Concurrent
    29 trials 100000000 buckets 100000 min 873 max 1140 avg 1000.0 std 31.3 rstd 3.1%
    30 trials 100000000 buckets 100000 min 873 max 1140 avg 1000.0 std 31.3 rstd 3.1%
    31 trials 100000000 buckets 100000 min 873 max 1140 avg 1000.0 std 31.3 rstd 3.1%
    32 trials 100000000 buckets 100000 min 873 max 1140 avg 1000.0 std 31.3 rstd 3.1%
     31trials 100000000 buckets 100000 min 858 max 1147 avg 1000.0 std 31.5 rstd 3.2%
     32trials 100000000 buckets 100000 min 858 max 1147 avg 1000.0 std 31.5 rstd 3.2%
     33trials 100000000 buckets 100000 min 858 max 1147 avg 1000.0 std 31.5 rstd 3.2%
     34trials 100000000 buckets 100000 min 858 max 1147 avg 1000.0 std 31.5 rstd 3.2%
    3335
    34        prng()   prng(5)    prng(0,5)
    35       8333105         1            2
    36    1989339636         4            5
    37     266970699         3            2
    38    1928130121         3            4
    39    1351003938         4            5
    40    1624164922         4            3
    41     363429604         1            2
    42    3355083174         1            1
    43     214422584         1            1
    44    2266729947         1            2
    45    3649702519         2            4
    46    2250875012         2            4
    47    4184653025         1            3
    48    2640851227         2            5
    49     206468178         2            3
    50    2600873108         1            3
    51    3007574582         3            3
    52     394476790         0            2
    53    1312145388         1            5
    54    2989081290         2            4
     36                    prng()     prng(5)   prng(0,5)
     37                2884683541           0           0
     38                3465286746           2           4
     39                3268922916           0           1
     40                2396374907           3           0
     41                2135076892           4           1
     42                 944377718           3           1
     43                2204845346           3           3
     44                3736609533           0           4
     45                4063231336           0           2
     46                1075394776           0           2
     47                 712844808           4           0
     48                4246343110           3           1
     49                3793873837           2           1
     50                3690340337           1           4
     51                 319207944           1           4
     52                1815791072           3           5
     53                2581617261           1           5
     54                3873329448           1           3
     55                 832631329           4           0
     56                 651551615           3           5
    5557seed 1009
    5658
    5759Sequential
    58 trials 100000000 buckets 100000 min 873 max 1140 avg 1000.0 std 31.3 rstd 3.1%
     60trials 20000000 buckets 100000 min 144 max 270 avg 200.0 std 14.1 rstd 7.1%
    5961
    6062Concurrent
    61 trials 100000000 buckets 100000 min 873 max 1140 avg 1000.0 std 31.3 rstd 3.1%
    62 trials 100000000 buckets 100000 min 873 max 1140 avg 1000.0 std 31.3 rstd 3.1%
    63 trials 100000000 buckets 100000 min 873 max 1140 avg 1000.0 std 31.3 rstd 3.1%
    64 trials 100000000 buckets 100000 min 873 max 1140 avg 1000.0 std 31.3 rstd 3.1%
     63trials 20000000 buckets 100000 min 144 max 270 avg 200.0 std 14.1 rstd 7.1%
     64trials 20000000 buckets 100000 min 144 max 270 avg 200.0 std 14.1 rstd 7.1%
     65trials 20000000 buckets 100000 min 144 max 270 avg 200.0 std 14.1 rstd 7.1%
     66trials 20000000 buckets 100000 min 144 max 270 avg 200.0 std 14.1 rstd 7.1%
    6567
    66       prng(t) prng(t,5) prng(t,0,5)
    67       8333105         1            2
    68    1989339636         4            5
    69     266970699         3            2
    70    1928130121         3            4
    71    1351003938         4            5
    72    1624164922         4            3
    73     363429604         1            2
    74    3355083174         1            1
    75     214422584         1            1
    76    2266729947         1            2
    77    3649702519         2            4
    78    2250875012         2            4
    79    4184653025         1            3
    80    2640851227         2            5
    81     206468178         2            3
    82    2600873108         1            3
    83    3007574582         3            3
    84     394476790         0            2
    85    1312145388         1            5
    86    2989081290         2            4
     68                   prng(t)   prng(t,5) prng(t,0,5)
     69                2884683541           0           0
     70                3465286746           2           4
     71                3268922916           0           1
     72                2396374907           3           0
     73                2135076892           4           1
     74                 944377718           3           1
     75                2204845346           3           3
     76                3736609533           0           4
     77                4063231336           0           2
     78                1075394776           0           2
     79                 712844808           4           0
     80                4246343110           3           1
     81                3793873837           2           1
     82                3690340337           1           4
     83                 319207944           1           4
     84                1815791072           3           5
     85                2581617261           1           5
     86                3873329448           1           3
     87                 832631329           4           0
     88                 651551615           3           5
    8789seed 1009
    8890
    8991Sequential
    90 trials 100000000 buckets 100000 min 873 max 1140 avg 1000.0 std 31.3 rstd 3.1%
     92trials 100000000 buckets 100000 min 858 max 1147 avg 1000.0 std 31.5 rstd 3.2%
    9193
    9294Concurrent
    93 trials 100000000 buckets 100000 min 873 max 1140 avg 1000.0 std 31.3 rstd 3.1%
    94 trials 100000000 buckets 100000 min 873 max 1140 avg 1000.0 std 31.3 rstd 3.1%
    95 trials 100000000 buckets 100000 min 873 max 1140 avg 1000.0 std 31.3 rstd 3.1%
    96 trials 100000000 buckets 100000 min 873 max 1140 avg 1000.0 std 31.3 rstd 3.1%
     95trials 100000000 buckets 100000 min 858 max 1147 avg 1000.0 std 31.5 rstd 3.2%
     96trials 100000000 buckets 100000 min 858 max 1147 avg 1000.0 std 31.5 rstd 3.2%
     97trials 100000000 buckets 100000 min 858 max 1147 avg 1000.0 std 31.5 rstd 3.2%
     98trials 100000000 buckets 100000 min 858 max 1147 avg 1000.0 std 31.5 rstd 3.2%
  • tests/.expect/array.txt

    r34b4268 r24d6572  
    1 array.cfa:52:25: warning: Compiled
     1array.cfa:119:25: warning: Preprocessor started
  • tests/.expect/attributes.arm64.txt

    r34b4268 r24d6572  
    2626    return _X4_retS12__anonymous0_1;
    2727}
    28 __attribute__ ((unused)) struct __anonymous0 _X5DummyS12__anonymous0_1;
     28__attribute__ ((unused)) static struct __anonymous0 _X5DummyS12__anonymous0_1;
    2929struct __attribute__ ((unused)) Agn1;
    3030struct __attribute__ ((unused)) Agn2 {
     
    13511351signed int _X4apd5Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object12)(signed int __param_0), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object13)(signed int __param_0));
    13521352signed int _X4apd6Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object14)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object15)());
    1353 signed int _X4apd7Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object16)(signed int __param_0), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object17)(signed int __param_0));
     1353signed int _X4apd7Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object16)(__attribute__ ((unused)) signed int __param_0), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object17)(__attribute__ ((unused)) signed int __param_0));
    13541354struct Vad {
    13551355    __attribute__ ((unused)) signed int :4;
  • tests/.expect/attributes.x64.txt

    r34b4268 r24d6572  
    2626    return _X4_retS12__anonymous0_1;
    2727}
    28 __attribute__ ((unused)) struct __anonymous0 _X5DummyS12__anonymous0_1;
     28__attribute__ ((unused)) static struct __anonymous0 _X5DummyS12__anonymous0_1;
    2929struct __attribute__ ((unused)) Agn1;
    3030struct __attribute__ ((unused)) Agn2 {
     
    13511351signed int _X4apd5Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object12)(signed int __param_0), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object13)(signed int __param_0));
    13521352signed int _X4apd6Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object14)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object15)());
    1353 signed int _X4apd7Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object16)(signed int __param_0), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object17)(signed int __param_0));
     1353signed int _X4apd7Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object16)(__attribute__ ((unused)) signed int __param_0), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object17)(__attribute__ ((unused)) signed int __param_0));
    13541354struct Vad {
    13551355    __attribute__ ((unused)) signed int :4;
  • tests/.expect/attributes.x86.txt

    r34b4268 r24d6572  
    2626    return _X4_retS12__anonymous0_1;
    2727}
    28 __attribute__ ((unused)) struct __anonymous0 _X5DummyS12__anonymous0_1;
     28__attribute__ ((unused)) static struct __anonymous0 _X5DummyS12__anonymous0_1;
    2929struct __attribute__ ((unused)) Agn1;
    3030struct __attribute__ ((unused)) Agn2 {
     
    13511351signed int _X4apd5Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object12)(signed int __param_0), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object13)(signed int __param_0));
    13521352signed int _X4apd6Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object14)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object15)());
    1353 signed int _X4apd7Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object16)(signed int __param_0), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object17)(signed int __param_0));
     1353signed int _X4apd7Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object16)(__attribute__ ((unused)) signed int __param_0), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object17)(__attribute__ ((unused)) signed int __param_0));
    13541354struct Vad {
    13551355    __attribute__ ((unused)) signed int :4;
  • tests/.expect/declarationSpecifier.arm64.txt

    r34b4268 r24d6572  
    5151
    5252}
    53 volatile const struct __anonymous0 _X3x10KVS12__anonymous0_1;
     53static volatile const struct __anonymous0 _X3x10KVS12__anonymous0_1;
    5454struct __anonymous1 {
    5555    signed int _X1ii_1;
     
    9696
    9797}
    98 volatile const struct __anonymous1 _X3x11KVS12__anonymous1_1;
     98static volatile const struct __anonymous1 _X3x11KVS12__anonymous1_1;
    9999struct __anonymous2 {
    100100    signed int _X1ii_1;
     
    141141
    142142}
    143 volatile const struct __anonymous2 _X3x12KVS12__anonymous2_1;
     143static volatile const struct __anonymous2 _X3x12KVS12__anonymous2_1;
    144144struct __anonymous3 {
    145145    signed int _X1ii_1;
     
    322322}
    323323static volatile const struct __anonymous6 _X3x16KVS12__anonymous6_1;
    324 struct __anonymous7 {
    325     signed int _X1ii_1;
    326 };
    327 static inline void _X12_constructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1);
    328 static inline void _X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1);
    329 static inline void _X11_destructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1);
    330 static inline struct __anonymous7 _X16_operator_assignFS12__anonymous7_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1);
    331 static inline void _X12_constructorFv_S12__anonymous7i_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, signed int _X1ii_1);
    332 static inline void _X12_constructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1){
    333     {
    334         ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1) /* ?{} */);
    335     }
    336 
    337 }
    338 static inline void _X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1){
    339     {
    340         ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1=_X4_srcS12__anonymous7_1._X1ii_1) /* ?{} */);
    341     }
    342 
    343 }
    344 static inline void _X11_destructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1){
    345     {
    346         ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1) /* ^?{} */);
    347     }
    348 
    349 }
    350 static inline struct __anonymous7 _X16_operator_assignFS12__anonymous7_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1){
    351     struct __anonymous7 _X4_retS12__anonymous7_1;
    352     {
    353         ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1=_X4_srcS12__anonymous7_1._X1ii_1));
    354     }
    355 
    356     {
    357         ((void)_X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1((&_X4_retS12__anonymous7_1), (*_X4_dstS12__anonymous7_1)));
    358     }
    359 
    360     return _X4_retS12__anonymous7_1;
    361 }
    362 static inline void _X12_constructorFv_S12__anonymous7i_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, signed int _X1ii_1){
    363     {
    364         ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1=_X1ii_1) /* ?{} */);
    365     }
    366 
    367 }
    368 static volatile const struct __anonymous7 _X3x17KVS12__anonymous7_1;
    369324volatile const signed short int _X3x20KVs_1;
    370325static volatile const signed short int _X3x21KVs_1;
     
    375330static volatile const signed short int _X3x26KVs_1;
    376331static volatile const signed short int _X3x27KVs_1;
     332struct __anonymous7 {
     333    signed short int _X1is_1;
     334};
     335static inline void _X12_constructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1);
     336static inline void _X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1);
     337static inline void _X11_destructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1);
     338static inline struct __anonymous7 _X16_operator_assignFS12__anonymous7_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1);
     339static inline void _X12_constructorFv_S12__anonymous7s_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, signed short int _X1is_1);
     340static inline void _X12_constructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1){
     341    {
     342        ((void)((*_X4_dstS12__anonymous7_1)._X1is_1) /* ?{} */);
     343    }
     344
     345}
     346static inline void _X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1){
     347    {
     348        ((void)((*_X4_dstS12__anonymous7_1)._X1is_1=_X4_srcS12__anonymous7_1._X1is_1) /* ?{} */);
     349    }
     350
     351}
     352static inline void _X11_destructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1){
     353    {
     354        ((void)((*_X4_dstS12__anonymous7_1)._X1is_1) /* ^?{} */);
     355    }
     356
     357}
     358static inline struct __anonymous7 _X16_operator_assignFS12__anonymous7_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1){
     359    struct __anonymous7 _X4_retS12__anonymous7_1;
     360    {
     361        ((void)((*_X4_dstS12__anonymous7_1)._X1is_1=_X4_srcS12__anonymous7_1._X1is_1));
     362    }
     363
     364    {
     365        ((void)_X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1((&_X4_retS12__anonymous7_1), (*_X4_dstS12__anonymous7_1)));
     366    }
     367
     368    return _X4_retS12__anonymous7_1;
     369}
     370static inline void _X12_constructorFv_S12__anonymous7s_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, signed short int _X1is_1){
     371    {
     372        ((void)((*_X4_dstS12__anonymous7_1)._X1is_1=_X1is_1) /* ?{} */);
     373    }
     374
     375}
     376static volatile const struct __anonymous7 _X3x29KVS12__anonymous7_1;
    377377struct __anonymous8 {
    378378    signed short int _X1is_1;
     
    419419
    420420}
    421 volatile const struct __anonymous8 _X3x29KVS12__anonymous8_1;
     421static volatile const struct __anonymous8 _X3x30KVS12__anonymous8_1;
    422422struct __anonymous9 {
    423423    signed short int _X1is_1;
     
    464464
    465465}
    466 volatile const struct __anonymous9 _X3x30KVS12__anonymous9_1;
     466static volatile const struct __anonymous9 _X3x31KVS12__anonymous9_1;
    467467struct __anonymous10 {
    468468    signed short int _X1is_1;
     
    509509
    510510}
    511 volatile const struct __anonymous10 _X3x31KVS13__anonymous10_1;
     511static volatile const struct __anonymous10 _X3x32KVS13__anonymous10_1;
    512512struct __anonymous11 {
    513513    signed short int _X1is_1;
     
    554554
    555555}
    556 static volatile const struct __anonymous11 _X3x32KVS13__anonymous11_1;
     556static volatile const struct __anonymous11 _X3x33KVS13__anonymous11_1;
    557557struct __anonymous12 {
    558558    signed short int _X1is_1;
     
    599599
    600600}
    601 static volatile const struct __anonymous12 _X3x33KVS13__anonymous12_1;
     601static volatile const struct __anonymous12 _X3x34KVS13__anonymous12_1;
    602602struct __anonymous13 {
    603603    signed short int _X1is_1;
     
    644644
    645645}
    646 static volatile const struct __anonymous13 _X3x34KVS13__anonymous13_1;
    647 struct __anonymous14 {
    648     signed short int _X1is_1;
    649 };
    650 static inline void _X12_constructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1);
    651 static inline void _X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1);
    652 static inline void _X11_destructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1);
    653 static inline struct __anonymous14 _X16_operator_assignFS13__anonymous14_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1);
    654 static inline void _X12_constructorFv_S13__anonymous14s_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, signed short int _X1is_1);
    655 static inline void _X12_constructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1){
    656     {
    657         ((void)((*_X4_dstS13__anonymous14_1)._X1is_1) /* ?{} */);
    658     }
    659 
    660 }
    661 static inline void _X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1){
    662     {
    663         ((void)((*_X4_dstS13__anonymous14_1)._X1is_1=_X4_srcS13__anonymous14_1._X1is_1) /* ?{} */);
    664     }
    665 
    666 }
    667 static inline void _X11_destructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1){
    668     {
    669         ((void)((*_X4_dstS13__anonymous14_1)._X1is_1) /* ^?{} */);
    670     }
    671 
    672 }
    673 static inline struct __anonymous14 _X16_operator_assignFS13__anonymous14_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1){
    674     struct __anonymous14 _X4_retS13__anonymous14_1;
    675     {
    676         ((void)((*_X4_dstS13__anonymous14_1)._X1is_1=_X4_srcS13__anonymous14_1._X1is_1));
    677     }
    678 
    679     {
    680         ((void)_X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1((&_X4_retS13__anonymous14_1), (*_X4_dstS13__anonymous14_1)));
    681     }
    682 
    683     return _X4_retS13__anonymous14_1;
    684 }
    685 static inline void _X12_constructorFv_S13__anonymous14s_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, signed short int _X1is_1){
    686     {
    687         ((void)((*_X4_dstS13__anonymous14_1)._X1is_1=_X1is_1) /* ?{} */);
    688     }
    689 
    690 }
    691 static volatile const struct __anonymous14 _X3x35KVS13__anonymous14_1;
    692 struct __anonymous15 {
    693     signed short int _X1is_1;
    694 };
    695 static inline void _X12_constructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1);
    696 static inline void _X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1);
    697 static inline void _X11_destructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1);
    698 static inline struct __anonymous15 _X16_operator_assignFS13__anonymous15_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1);
    699 static inline void _X12_constructorFv_S13__anonymous15s_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, signed short int _X1is_1);
    700 static inline void _X12_constructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1){
    701     {
    702         ((void)((*_X4_dstS13__anonymous15_1)._X1is_1) /* ?{} */);
    703     }
    704 
    705 }
    706 static inline void _X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1){
    707     {
    708         ((void)((*_X4_dstS13__anonymous15_1)._X1is_1=_X4_srcS13__anonymous15_1._X1is_1) /* ?{} */);
    709     }
    710 
    711 }
    712 static inline void _X11_destructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1){
    713     {
    714         ((void)((*_X4_dstS13__anonymous15_1)._X1is_1) /* ^?{} */);
    715     }
    716 
    717 }
    718 static inline struct __anonymous15 _X16_operator_assignFS13__anonymous15_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1){
    719     struct __anonymous15 _X4_retS13__anonymous15_1;
    720     {
    721         ((void)((*_X4_dstS13__anonymous15_1)._X1is_1=_X4_srcS13__anonymous15_1._X1is_1));
    722     }
    723 
    724     {
    725         ((void)_X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1((&_X4_retS13__anonymous15_1), (*_X4_dstS13__anonymous15_1)));
    726     }
    727 
    728     return _X4_retS13__anonymous15_1;
    729 }
    730 static inline void _X12_constructorFv_S13__anonymous15s_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, signed short int _X1is_1){
    731     {
    732         ((void)((*_X4_dstS13__anonymous15_1)._X1is_1=_X1is_1) /* ?{} */);
    733     }
    734 
    735 }
    736 static volatile const struct __anonymous15 _X3x36KVS13__anonymous15_1;
     646static volatile const struct __anonymous13 _X3x35KVS13__anonymous13_1;
    737647_Thread_local signed int _X3x37i_1;
    738648__thread signed int _X3x38i_1;
     
    753663static inline volatile const signed short int _X3f27Fs___1();
    754664static inline volatile const signed short int _X3f28Fs___1();
     665struct __anonymous14 {
     666    signed int _X1ii_1;
     667};
     668static inline void _X12_constructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1);
     669static inline void _X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1);
     670static inline void _X11_destructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1);
     671static inline struct __anonymous14 _X16_operator_assignFS13__anonymous14_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1);
     672static inline void _X12_constructorFv_S13__anonymous14i_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, signed int _X1ii_1);
     673static inline void _X12_constructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1){
     674    {
     675        ((void)((*_X4_dstS13__anonymous14_1)._X1ii_1) /* ?{} */);
     676    }
     677
     678}
     679static inline void _X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1){
     680    {
     681        ((void)((*_X4_dstS13__anonymous14_1)._X1ii_1=_X4_srcS13__anonymous14_1._X1ii_1) /* ?{} */);
     682    }
     683
     684}
     685static inline void _X11_destructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1){
     686    {
     687        ((void)((*_X4_dstS13__anonymous14_1)._X1ii_1) /* ^?{} */);
     688    }
     689
     690}
     691static inline struct __anonymous14 _X16_operator_assignFS13__anonymous14_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1){
     692    struct __anonymous14 _X4_retS13__anonymous14_1;
     693    {
     694        ((void)((*_X4_dstS13__anonymous14_1)._X1ii_1=_X4_srcS13__anonymous14_1._X1ii_1));
     695    }
     696
     697    {
     698        ((void)_X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1((&_X4_retS13__anonymous14_1), (*_X4_dstS13__anonymous14_1)));
     699    }
     700
     701    return _X4_retS13__anonymous14_1;
     702}
     703static inline void _X12_constructorFv_S13__anonymous14i_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, signed int _X1ii_1){
     704    {
     705        ((void)((*_X4_dstS13__anonymous14_1)._X1ii_1=_X1ii_1) /* ?{} */);
     706    }
     707
     708}
     709static inline volatile const struct __anonymous14 _X3f31FS13__anonymous14___1();
     710struct __anonymous15 {
     711    signed int _X1ii_1;
     712};
     713static inline void _X12_constructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1);
     714static inline void _X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1);
     715static inline void _X11_destructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1);
     716static inline struct __anonymous15 _X16_operator_assignFS13__anonymous15_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1);
     717static inline void _X12_constructorFv_S13__anonymous15i_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, signed int _X1ii_1);
     718static inline void _X12_constructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1){
     719    {
     720        ((void)((*_X4_dstS13__anonymous15_1)._X1ii_1) /* ?{} */);
     721    }
     722
     723}
     724static inline void _X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1){
     725    {
     726        ((void)((*_X4_dstS13__anonymous15_1)._X1ii_1=_X4_srcS13__anonymous15_1._X1ii_1) /* ?{} */);
     727    }
     728
     729}
     730static inline void _X11_destructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1){
     731    {
     732        ((void)((*_X4_dstS13__anonymous15_1)._X1ii_1) /* ^?{} */);
     733    }
     734
     735}
     736static inline struct __anonymous15 _X16_operator_assignFS13__anonymous15_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1){
     737    struct __anonymous15 _X4_retS13__anonymous15_1;
     738    {
     739        ((void)((*_X4_dstS13__anonymous15_1)._X1ii_1=_X4_srcS13__anonymous15_1._X1ii_1));
     740    }
     741
     742    {
     743        ((void)_X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1((&_X4_retS13__anonymous15_1), (*_X4_dstS13__anonymous15_1)));
     744    }
     745
     746    return _X4_retS13__anonymous15_1;
     747}
     748static inline void _X12_constructorFv_S13__anonymous15i_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, signed int _X1ii_1){
     749    {
     750        ((void)((*_X4_dstS13__anonymous15_1)._X1ii_1=_X1ii_1) /* ?{} */);
     751    }
     752
     753}
     754static inline volatile const struct __anonymous15 _X3f32FS13__anonymous15___1();
    755755struct __anonymous16 {
    756756    signed int _X1ii_1;
     
    797797
    798798}
    799 static inline volatile const struct __anonymous16 _X3f31FS13__anonymous16___1();
     799static inline volatile const struct __anonymous16 _X3f33FS13__anonymous16___1();
    800800struct __anonymous17 {
    801801    signed int _X1ii_1;
     
    842842
    843843}
    844 static inline volatile const struct __anonymous17 _X3f32FS13__anonymous17___1();
     844static inline volatile const struct __anonymous17 _X3f34FS13__anonymous17___1();
    845845struct __anonymous18 {
    846846    signed int _X1ii_1;
     
    887887
    888888}
    889 static inline volatile const struct __anonymous18 _X3f33FS13__anonymous18___1();
     889static inline volatile const struct __anonymous18 _X3f35FS13__anonymous18___1();
    890890struct __anonymous19 {
    891891    signed int _X1ii_1;
     
    932932
    933933}
    934 static inline volatile const struct __anonymous19 _X3f34FS13__anonymous19___1();
     934static inline volatile const struct __anonymous19 _X3f36FS13__anonymous19___1();
    935935struct __anonymous20 {
    936936    signed int _X1ii_1;
     
    977977
    978978}
    979 static inline volatile const struct __anonymous20 _X3f35FS13__anonymous20___1();
     979static inline volatile const struct __anonymous20 _X3f37FS13__anonymous20___1();
    980980struct __anonymous21 {
    981981    signed int _X1ii_1;
     
    10221022
    10231023}
    1024 static inline volatile const struct __anonymous21 _X3f36FS13__anonymous21___1();
    1025 struct __anonymous22 {
    1026     signed int _X1ii_1;
    1027 };
    1028 static inline void _X12_constructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1);
    1029 static inline void _X12_constructorFv_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1);
    1030 static inline void _X11_destructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1);
    1031 static inline struct __anonymous22 _X16_operator_assignFS13__anonymous22_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1);
    1032 static inline void _X12_constructorFv_S13__anonymous22i_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, signed int _X1ii_1);
    1033 static inline void _X12_constructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1){
    1034     {
    1035         ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1) /* ?{} */);
    1036     }
    1037 
    1038 }
    1039 static inline void _X12_constructorFv_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1){
    1040     {
    1041         ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1=_X4_srcS13__anonymous22_1._X1ii_1) /* ?{} */);
    1042     }
    1043 
    1044 }
    1045 static inline void _X11_destructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1){
    1046     {
    1047         ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1) /* ^?{} */);
    1048     }
    1049 
    1050 }
    1051 static inline struct __anonymous22 _X16_operator_assignFS13__anonymous22_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1){
    1052     struct __anonymous22 _X4_retS13__anonymous22_1;
    1053     {
    1054         ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1=_X4_srcS13__anonymous22_1._X1ii_1));
    1055     }
    1056 
    1057     {
    1058         ((void)_X12_constructorFv_S13__anonymous22S13__anonymous22_autogen___1((&_X4_retS13__anonymous22_1), (*_X4_dstS13__anonymous22_1)));
    1059     }
    1060 
    1061     return _X4_retS13__anonymous22_1;
    1062 }
    1063 static inline void _X12_constructorFv_S13__anonymous22i_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, signed int _X1ii_1){
    1064     {
    1065         ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1=_X1ii_1) /* ?{} */);
    1066     }
    1067 
    1068 }
    1069 static inline volatile const struct __anonymous22 _X3f37FS13__anonymous22___1();
    1070 struct __anonymous23 {
    1071     signed int _X1ii_1;
    1072 };
    1073 static inline void _X12_constructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1);
    1074 static inline void _X12_constructorFv_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1);
    1075 static inline void _X11_destructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1);
    1076 static inline struct __anonymous23 _X16_operator_assignFS13__anonymous23_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1);
    1077 static inline void _X12_constructorFv_S13__anonymous23i_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, signed int _X1ii_1);
    1078 static inline void _X12_constructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1){
    1079     {
    1080         ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1) /* ?{} */);
    1081     }
    1082 
    1083 }
    1084 static inline void _X12_constructorFv_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1){
    1085     {
    1086         ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1=_X4_srcS13__anonymous23_1._X1ii_1) /* ?{} */);
    1087     }
    1088 
    1089 }
    1090 static inline void _X11_destructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1){
    1091     {
    1092         ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1) /* ^?{} */);
    1093     }
    1094 
    1095 }
    1096 static inline struct __anonymous23 _X16_operator_assignFS13__anonymous23_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1){
    1097     struct __anonymous23 _X4_retS13__anonymous23_1;
    1098     {
    1099         ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1=_X4_srcS13__anonymous23_1._X1ii_1));
    1100     }
    1101 
    1102     {
    1103         ((void)_X12_constructorFv_S13__anonymous23S13__anonymous23_autogen___1((&_X4_retS13__anonymous23_1), (*_X4_dstS13__anonymous23_1)));
    1104     }
    1105 
    1106     return _X4_retS13__anonymous23_1;
    1107 }
    1108 static inline void _X12_constructorFv_S13__anonymous23i_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, signed int _X1ii_1){
    1109     {
    1110         ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1=_X1ii_1) /* ?{} */);
    1111     }
    1112 
    1113 }
    1114 static inline volatile const struct __anonymous23 _X3f38FS13__anonymous23___1();
     1024static inline volatile const struct __anonymous21 _X3f38FS13__anonymous21___1();
    11151025static inline volatile const signed short int _X3f41Fs___1();
    11161026static inline volatile const signed short int _X3f42Fs___1();
  • tests/.expect/declarationSpecifier.x64.txt

    r34b4268 r24d6572  
    5151
    5252}
    53 volatile const struct __anonymous0 _X3x10KVS12__anonymous0_1;
     53static volatile const struct __anonymous0 _X3x10KVS12__anonymous0_1;
    5454struct __anonymous1 {
    5555    signed int _X1ii_1;
     
    9696
    9797}
    98 volatile const struct __anonymous1 _X3x11KVS12__anonymous1_1;
     98static volatile const struct __anonymous1 _X3x11KVS12__anonymous1_1;
    9999struct __anonymous2 {
    100100    signed int _X1ii_1;
     
    141141
    142142}
    143 volatile const struct __anonymous2 _X3x12KVS12__anonymous2_1;
     143static volatile const struct __anonymous2 _X3x12KVS12__anonymous2_1;
    144144struct __anonymous3 {
    145145    signed int _X1ii_1;
     
    322322}
    323323static volatile const struct __anonymous6 _X3x16KVS12__anonymous6_1;
    324 struct __anonymous7 {
    325     signed int _X1ii_1;
    326 };
    327 static inline void _X12_constructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1);
    328 static inline void _X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1);
    329 static inline void _X11_destructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1);
    330 static inline struct __anonymous7 _X16_operator_assignFS12__anonymous7_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1);
    331 static inline void _X12_constructorFv_S12__anonymous7i_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, signed int _X1ii_1);
    332 static inline void _X12_constructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1){
    333     {
    334         ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1) /* ?{} */);
    335     }
    336 
    337 }
    338 static inline void _X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1){
    339     {
    340         ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1=_X4_srcS12__anonymous7_1._X1ii_1) /* ?{} */);
    341     }
    342 
    343 }
    344 static inline void _X11_destructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1){
    345     {
    346         ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1) /* ^?{} */);
    347     }
    348 
    349 }
    350 static inline struct __anonymous7 _X16_operator_assignFS12__anonymous7_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1){
    351     struct __anonymous7 _X4_retS12__anonymous7_1;
    352     {
    353         ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1=_X4_srcS12__anonymous7_1._X1ii_1));
    354     }
    355 
    356     {
    357         ((void)_X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1((&_X4_retS12__anonymous7_1), (*_X4_dstS12__anonymous7_1)));
    358     }
    359 
    360     return _X4_retS12__anonymous7_1;
    361 }
    362 static inline void _X12_constructorFv_S12__anonymous7i_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, signed int _X1ii_1){
    363     {
    364         ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1=_X1ii_1) /* ?{} */);
    365     }
    366 
    367 }
    368 static volatile const struct __anonymous7 _X3x17KVS12__anonymous7_1;
    369324volatile const signed short int _X3x20KVs_1;
    370325static volatile const signed short int _X3x21KVs_1;
     
    375330static volatile const signed short int _X3x26KVs_1;
    376331static volatile const signed short int _X3x27KVs_1;
     332struct __anonymous7 {
     333    signed short int _X1is_1;
     334};
     335static inline void _X12_constructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1);
     336static inline void _X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1);
     337static inline void _X11_destructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1);
     338static inline struct __anonymous7 _X16_operator_assignFS12__anonymous7_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1);
     339static inline void _X12_constructorFv_S12__anonymous7s_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, signed short int _X1is_1);
     340static inline void _X12_constructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1){
     341    {
     342        ((void)((*_X4_dstS12__anonymous7_1)._X1is_1) /* ?{} */);
     343    }
     344
     345}
     346static inline void _X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1){
     347    {
     348        ((void)((*_X4_dstS12__anonymous7_1)._X1is_1=_X4_srcS12__anonymous7_1._X1is_1) /* ?{} */);
     349    }
     350
     351}
     352static inline void _X11_destructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1){
     353    {
     354        ((void)((*_X4_dstS12__anonymous7_1)._X1is_1) /* ^?{} */);
     355    }
     356
     357}
     358static inline struct __anonymous7 _X16_operator_assignFS12__anonymous7_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1){
     359    struct __anonymous7 _X4_retS12__anonymous7_1;
     360    {
     361        ((void)((*_X4_dstS12__anonymous7_1)._X1is_1=_X4_srcS12__anonymous7_1._X1is_1));
     362    }
     363
     364    {
     365        ((void)_X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1((&_X4_retS12__anonymous7_1), (*_X4_dstS12__anonymous7_1)));
     366    }
     367
     368    return _X4_retS12__anonymous7_1;
     369}
     370static inline void _X12_constructorFv_S12__anonymous7s_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, signed short int _X1is_1){
     371    {
     372        ((void)((*_X4_dstS12__anonymous7_1)._X1is_1=_X1is_1) /* ?{} */);
     373    }
     374
     375}
     376static volatile const struct __anonymous7 _X3x29KVS12__anonymous7_1;
    377377struct __anonymous8 {
    378378    signed short int _X1is_1;
     
    419419
    420420}
    421 volatile const struct __anonymous8 _X3x29KVS12__anonymous8_1;
     421static volatile const struct __anonymous8 _X3x30KVS12__anonymous8_1;
    422422struct __anonymous9 {
    423423    signed short int _X1is_1;
     
    464464
    465465}
    466 volatile const struct __anonymous9 _X3x30KVS12__anonymous9_1;
     466static volatile const struct __anonymous9 _X3x31KVS12__anonymous9_1;
    467467struct __anonymous10 {
    468468    signed short int _X1is_1;
     
    509509
    510510}
    511 volatile const struct __anonymous10 _X3x31KVS13__anonymous10_1;
     511static volatile const struct __anonymous10 _X3x32KVS13__anonymous10_1;
    512512struct __anonymous11 {
    513513    signed short int _X1is_1;
     
    554554
    555555}
    556 static volatile const struct __anonymous11 _X3x32KVS13__anonymous11_1;
     556static volatile const struct __anonymous11 _X3x33KVS13__anonymous11_1;
    557557struct __anonymous12 {
    558558    signed short int _X1is_1;
     
    599599
    600600}
    601 static volatile const struct __anonymous12 _X3x33KVS13__anonymous12_1;
     601static volatile const struct __anonymous12 _X3x34KVS13__anonymous12_1;
    602602struct __anonymous13 {
    603603    signed short int _X1is_1;
     
    644644
    645645}
    646 static volatile const struct __anonymous13 _X3x34KVS13__anonymous13_1;
    647 struct __anonymous14 {
    648     signed short int _X1is_1;
    649 };
    650 static inline void _X12_constructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1);
    651 static inline void _X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1);
    652 static inline void _X11_destructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1);
    653 static inline struct __anonymous14 _X16_operator_assignFS13__anonymous14_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1);
    654 static inline void _X12_constructorFv_S13__anonymous14s_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, signed short int _X1is_1);
    655 static inline void _X12_constructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1){
    656     {
    657         ((void)((*_X4_dstS13__anonymous14_1)._X1is_1) /* ?{} */);
    658     }
    659 
    660 }
    661 static inline void _X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1){
    662     {
    663         ((void)((*_X4_dstS13__anonymous14_1)._X1is_1=_X4_srcS13__anonymous14_1._X1is_1) /* ?{} */);
    664     }
    665 
    666 }
    667 static inline void _X11_destructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1){
    668     {
    669         ((void)((*_X4_dstS13__anonymous14_1)._X1is_1) /* ^?{} */);
    670     }
    671 
    672 }
    673 static inline struct __anonymous14 _X16_operator_assignFS13__anonymous14_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1){
    674     struct __anonymous14 _X4_retS13__anonymous14_1;
    675     {
    676         ((void)((*_X4_dstS13__anonymous14_1)._X1is_1=_X4_srcS13__anonymous14_1._X1is_1));
    677     }
    678 
    679     {
    680         ((void)_X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1((&_X4_retS13__anonymous14_1), (*_X4_dstS13__anonymous14_1)));
    681     }
    682 
    683     return _X4_retS13__anonymous14_1;
    684 }
    685 static inline void _X12_constructorFv_S13__anonymous14s_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, signed short int _X1is_1){
    686     {
    687         ((void)((*_X4_dstS13__anonymous14_1)._X1is_1=_X1is_1) /* ?{} */);
    688     }
    689 
    690 }
    691 static volatile const struct __anonymous14 _X3x35KVS13__anonymous14_1;
    692 struct __anonymous15 {
    693     signed short int _X1is_1;
    694 };
    695 static inline void _X12_constructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1);
    696 static inline void _X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1);
    697 static inline void _X11_destructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1);
    698 static inline struct __anonymous15 _X16_operator_assignFS13__anonymous15_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1);
    699 static inline void _X12_constructorFv_S13__anonymous15s_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, signed short int _X1is_1);
    700 static inline void _X12_constructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1){
    701     {
    702         ((void)((*_X4_dstS13__anonymous15_1)._X1is_1) /* ?{} */);
    703     }
    704 
    705 }
    706 static inline void _X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1){
    707     {
    708         ((void)((*_X4_dstS13__anonymous15_1)._X1is_1=_X4_srcS13__anonymous15_1._X1is_1) /* ?{} */);
    709     }
    710 
    711 }
    712 static inline void _X11_destructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1){
    713     {
    714         ((void)((*_X4_dstS13__anonymous15_1)._X1is_1) /* ^?{} */);
    715     }
    716 
    717 }
    718 static inline struct __anonymous15 _X16_operator_assignFS13__anonymous15_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1){
    719     struct __anonymous15 _X4_retS13__anonymous15_1;
    720     {
    721         ((void)((*_X4_dstS13__anonymous15_1)._X1is_1=_X4_srcS13__anonymous15_1._X1is_1));
    722     }
    723 
    724     {
    725         ((void)_X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1((&_X4_retS13__anonymous15_1), (*_X4_dstS13__anonymous15_1)));
    726     }
    727 
    728     return _X4_retS13__anonymous15_1;
    729 }
    730 static inline void _X12_constructorFv_S13__anonymous15s_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, signed short int _X1is_1){
    731     {
    732         ((void)((*_X4_dstS13__anonymous15_1)._X1is_1=_X1is_1) /* ?{} */);
    733     }
    734 
    735 }
    736 static volatile const struct __anonymous15 _X3x36KVS13__anonymous15_1;
     646static volatile const struct __anonymous13 _X3x35KVS13__anonymous13_1;
    737647_Thread_local signed int _X3x37i_1;
    738648__thread signed int _X3x38i_1;
     
    753663static inline volatile const signed short int _X3f27Fs___1();
    754664static inline volatile const signed short int _X3f28Fs___1();
     665struct __anonymous14 {
     666    signed int _X1ii_1;
     667};
     668static inline void _X12_constructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1);
     669static inline void _X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1);
     670static inline void _X11_destructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1);
     671static inline struct __anonymous14 _X16_operator_assignFS13__anonymous14_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1);
     672static inline void _X12_constructorFv_S13__anonymous14i_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, signed int _X1ii_1);
     673static inline void _X12_constructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1){
     674    {
     675        ((void)((*_X4_dstS13__anonymous14_1)._X1ii_1) /* ?{} */);
     676    }
     677
     678}
     679static inline void _X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1){
     680    {
     681        ((void)((*_X4_dstS13__anonymous14_1)._X1ii_1=_X4_srcS13__anonymous14_1._X1ii_1) /* ?{} */);
     682    }
     683
     684}
     685static inline void _X11_destructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1){
     686    {
     687        ((void)((*_X4_dstS13__anonymous14_1)._X1ii_1) /* ^?{} */);
     688    }
     689
     690}
     691static inline struct __anonymous14 _X16_operator_assignFS13__anonymous14_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1){
     692    struct __anonymous14 _X4_retS13__anonymous14_1;
     693    {
     694        ((void)((*_X4_dstS13__anonymous14_1)._X1ii_1=_X4_srcS13__anonymous14_1._X1ii_1));
     695    }
     696
     697    {
     698        ((void)_X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1((&_X4_retS13__anonymous14_1), (*_X4_dstS13__anonymous14_1)));
     699    }
     700
     701    return _X4_retS13__anonymous14_1;
     702}
     703static inline void _X12_constructorFv_S13__anonymous14i_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, signed int _X1ii_1){
     704    {
     705        ((void)((*_X4_dstS13__anonymous14_1)._X1ii_1=_X1ii_1) /* ?{} */);
     706    }
     707
     708}
     709static inline volatile const struct __anonymous14 _X3f31FS13__anonymous14___1();
     710struct __anonymous15 {
     711    signed int _X1ii_1;
     712};
     713static inline void _X12_constructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1);
     714static inline void _X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1);
     715static inline void _X11_destructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1);
     716static inline struct __anonymous15 _X16_operator_assignFS13__anonymous15_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1);
     717static inline void _X12_constructorFv_S13__anonymous15i_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, signed int _X1ii_1);
     718static inline void _X12_constructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1){
     719    {
     720        ((void)((*_X4_dstS13__anonymous15_1)._X1ii_1) /* ?{} */);
     721    }
     722
     723}
     724static inline void _X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1){
     725    {
     726        ((void)((*_X4_dstS13__anonymous15_1)._X1ii_1=_X4_srcS13__anonymous15_1._X1ii_1) /* ?{} */);
     727    }
     728
     729}
     730static inline void _X11_destructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1){
     731    {
     732        ((void)((*_X4_dstS13__anonymous15_1)._X1ii_1) /* ^?{} */);
     733    }
     734
     735}
     736static inline struct __anonymous15 _X16_operator_assignFS13__anonymous15_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1){
     737    struct __anonymous15 _X4_retS13__anonymous15_1;
     738    {
     739        ((void)((*_X4_dstS13__anonymous15_1)._X1ii_1=_X4_srcS13__anonymous15_1._X1ii_1));
     740    }
     741
     742    {
     743        ((void)_X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1((&_X4_retS13__anonymous15_1), (*_X4_dstS13__anonymous15_1)));
     744    }
     745
     746    return _X4_retS13__anonymous15_1;
     747}
     748static inline void _X12_constructorFv_S13__anonymous15i_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, signed int _X1ii_1){
     749    {
     750        ((void)((*_X4_dstS13__anonymous15_1)._X1ii_1=_X1ii_1) /* ?{} */);
     751    }
     752
     753}
     754static inline volatile const struct __anonymous15 _X3f32FS13__anonymous15___1();
    755755struct __anonymous16 {
    756756    signed int _X1ii_1;
     
    797797
    798798}
    799 static inline volatile const struct __anonymous16 _X3f31FS13__anonymous16___1();
     799static inline volatile const struct __anonymous16 _X3f33FS13__anonymous16___1();
    800800struct __anonymous17 {
    801801    signed int _X1ii_1;
     
    842842
    843843}
    844 static inline volatile const struct __anonymous17 _X3f32FS13__anonymous17___1();
     844static inline volatile const struct __anonymous17 _X3f34FS13__anonymous17___1();
    845845struct __anonymous18 {
    846846    signed int _X1ii_1;
     
    887887
    888888}
    889 static inline volatile const struct __anonymous18 _X3f33FS13__anonymous18___1();
     889static inline volatile const struct __anonymous18 _X3f35FS13__anonymous18___1();
    890890struct __anonymous19 {
    891891    signed int _X1ii_1;
     
    932932
    933933}
    934 static inline volatile const struct __anonymous19 _X3f34FS13__anonymous19___1();
     934static inline volatile const struct __anonymous19 _X3f36FS13__anonymous19___1();
    935935struct __anonymous20 {
    936936    signed int _X1ii_1;
     
    977977
    978978}
    979 static inline volatile const struct __anonymous20 _X3f35FS13__anonymous20___1();
     979static inline volatile const struct __anonymous20 _X3f37FS13__anonymous20___1();
    980980struct __anonymous21 {
    981981    signed int _X1ii_1;
     
    10221022
    10231023}
    1024 static inline volatile const struct __anonymous21 _X3f36FS13__anonymous21___1();
    1025 struct __anonymous22 {
    1026     signed int _X1ii_1;
    1027 };
    1028 static inline void _X12_constructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1);
    1029 static inline void _X12_constructorFv_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1);
    1030 static inline void _X11_destructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1);
    1031 static inline struct __anonymous22 _X16_operator_assignFS13__anonymous22_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1);
    1032 static inline void _X12_constructorFv_S13__anonymous22i_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, signed int _X1ii_1);
    1033 static inline void _X12_constructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1){
    1034     {
    1035         ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1) /* ?{} */);
    1036     }
    1037 
    1038 }
    1039 static inline void _X12_constructorFv_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1){
    1040     {
    1041         ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1=_X4_srcS13__anonymous22_1._X1ii_1) /* ?{} */);
    1042     }
    1043 
    1044 }
    1045 static inline void _X11_destructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1){
    1046     {
    1047         ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1) /* ^?{} */);
    1048     }
    1049 
    1050 }
    1051 static inline struct __anonymous22 _X16_operator_assignFS13__anonymous22_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1){
    1052     struct __anonymous22 _X4_retS13__anonymous22_1;
    1053     {
    1054         ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1=_X4_srcS13__anonymous22_1._X1ii_1));
    1055     }
    1056 
    1057     {
    1058         ((void)_X12_constructorFv_S13__anonymous22S13__anonymous22_autogen___1((&_X4_retS13__anonymous22_1), (*_X4_dstS13__anonymous22_1)));
    1059     }
    1060 
    1061     return _X4_retS13__anonymous22_1;
    1062 }
    1063 static inline void _X12_constructorFv_S13__anonymous22i_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, signed int _X1ii_1){
    1064     {
    1065         ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1=_X1ii_1) /* ?{} */);
    1066     }
    1067 
    1068 }
    1069 static inline volatile const struct __anonymous22 _X3f37FS13__anonymous22___1();
    1070 struct __anonymous23 {
    1071     signed int _X1ii_1;
    1072 };
    1073 static inline void _X12_constructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1);
    1074 static inline void _X12_constructorFv_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1);
    1075 static inline void _X11_destructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1);
    1076 static inline struct __anonymous23 _X16_operator_assignFS13__anonymous23_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1);
    1077 static inline void _X12_constructorFv_S13__anonymous23i_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, signed int _X1ii_1);
    1078 static inline void _X12_constructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1){
    1079     {
    1080         ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1) /* ?{} */);
    1081     }
    1082 
    1083 }
    1084 static inline void _X12_constructorFv_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1){
    1085     {
    1086         ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1=_X4_srcS13__anonymous23_1._X1ii_1) /* ?{} */);
    1087     }
    1088 
    1089 }
    1090 static inline void _X11_destructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1){
    1091     {
    1092         ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1) /* ^?{} */);
    1093     }
    1094 
    1095 }
    1096 static inline struct __anonymous23 _X16_operator_assignFS13__anonymous23_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1){
    1097     struct __anonymous23 _X4_retS13__anonymous23_1;
    1098     {
    1099         ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1=_X4_srcS13__anonymous23_1._X1ii_1));
    1100     }
    1101 
    1102     {
    1103         ((void)_X12_constructorFv_S13__anonymous23S13__anonymous23_autogen___1((&_X4_retS13__anonymous23_1), (*_X4_dstS13__anonymous23_1)));
    1104     }
    1105 
    1106     return _X4_retS13__anonymous23_1;
    1107 }
    1108 static inline void _X12_constructorFv_S13__anonymous23i_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, signed int _X1ii_1){
    1109     {
    1110         ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1=_X1ii_1) /* ?{} */);
    1111     }
    1112 
    1113 }
    1114 static inline volatile const struct __anonymous23 _X3f38FS13__anonymous23___1();
     1024static inline volatile const struct __anonymous21 _X3f38FS13__anonymous21___1();
    11151025static inline volatile const signed short int _X3f41Fs___1();
    11161026static inline volatile const signed short int _X3f42Fs___1();
  • tests/.expect/declarationSpecifier.x86.txt

    r34b4268 r24d6572  
    5151
    5252}
    53 volatile const struct __anonymous0 _X3x10KVS12__anonymous0_1;
     53static volatile const struct __anonymous0 _X3x10KVS12__anonymous0_1;
    5454struct __anonymous1 {
    5555    signed int _X1ii_1;
     
    9696
    9797}
    98 volatile const struct __anonymous1 _X3x11KVS12__anonymous1_1;
     98static volatile const struct __anonymous1 _X3x11KVS12__anonymous1_1;
    9999struct __anonymous2 {
    100100    signed int _X1ii_1;
     
    141141
    142142}
    143 volatile const struct __anonymous2 _X3x12KVS12__anonymous2_1;
     143static volatile const struct __anonymous2 _X3x12KVS12__anonymous2_1;
    144144struct __anonymous3 {
    145145    signed int _X1ii_1;
     
    322322}
    323323static volatile const struct __anonymous6 _X3x16KVS12__anonymous6_1;
    324 struct __anonymous7 {
    325     signed int _X1ii_1;
    326 };
    327 static inline void _X12_constructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1);
    328 static inline void _X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1);
    329 static inline void _X11_destructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1);
    330 static inline struct __anonymous7 _X16_operator_assignFS12__anonymous7_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1);
    331 static inline void _X12_constructorFv_S12__anonymous7i_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, signed int _X1ii_1);
    332 static inline void _X12_constructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1){
    333     {
    334         ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1) /* ?{} */);
    335     }
    336 
    337 }
    338 static inline void _X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1){
    339     {
    340         ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1=_X4_srcS12__anonymous7_1._X1ii_1) /* ?{} */);
    341     }
    342 
    343 }
    344 static inline void _X11_destructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1){
    345     {
    346         ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1) /* ^?{} */);
    347     }
    348 
    349 }
    350 static inline struct __anonymous7 _X16_operator_assignFS12__anonymous7_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1){
    351     struct __anonymous7 _X4_retS12__anonymous7_1;
    352     {
    353         ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1=_X4_srcS12__anonymous7_1._X1ii_1));
    354     }
    355 
    356     {
    357         ((void)_X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1((&_X4_retS12__anonymous7_1), (*_X4_dstS12__anonymous7_1)));
    358     }
    359 
    360     return _X4_retS12__anonymous7_1;
    361 }
    362 static inline void _X12_constructorFv_S12__anonymous7i_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, signed int _X1ii_1){
    363     {
    364         ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1=_X1ii_1) /* ?{} */);
    365     }
    366 
    367 }
    368 static volatile const struct __anonymous7 _X3x17KVS12__anonymous7_1;
    369324volatile const signed short int _X3x20KVs_1;
    370325static volatile const signed short int _X3x21KVs_1;
     
    375330static volatile const signed short int _X3x26KVs_1;
    376331static volatile const signed short int _X3x27KVs_1;
     332struct __anonymous7 {
     333    signed short int _X1is_1;
     334};
     335static inline void _X12_constructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1);
     336static inline void _X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1);
     337static inline void _X11_destructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1);
     338static inline struct __anonymous7 _X16_operator_assignFS12__anonymous7_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1);
     339static inline void _X12_constructorFv_S12__anonymous7s_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, signed short int _X1is_1);
     340static inline void _X12_constructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1){
     341    {
     342        ((void)((*_X4_dstS12__anonymous7_1)._X1is_1) /* ?{} */);
     343    }
     344
     345}
     346static inline void _X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1){
     347    {
     348        ((void)((*_X4_dstS12__anonymous7_1)._X1is_1=_X4_srcS12__anonymous7_1._X1is_1) /* ?{} */);
     349    }
     350
     351}
     352static inline void _X11_destructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1){
     353    {
     354        ((void)((*_X4_dstS12__anonymous7_1)._X1is_1) /* ^?{} */);
     355    }
     356
     357}
     358static inline struct __anonymous7 _X16_operator_assignFS12__anonymous7_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1){
     359    struct __anonymous7 _X4_retS12__anonymous7_1;
     360    {
     361        ((void)((*_X4_dstS12__anonymous7_1)._X1is_1=_X4_srcS12__anonymous7_1._X1is_1));
     362    }
     363
     364    {
     365        ((void)_X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1((&_X4_retS12__anonymous7_1), (*_X4_dstS12__anonymous7_1)));
     366    }
     367
     368    return _X4_retS12__anonymous7_1;
     369}
     370static inline void _X12_constructorFv_S12__anonymous7s_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, signed short int _X1is_1){
     371    {
     372        ((void)((*_X4_dstS12__anonymous7_1)._X1is_1=_X1is_1) /* ?{} */);
     373    }
     374
     375}
     376static volatile const struct __anonymous7 _X3x29KVS12__anonymous7_1;
    377377struct __anonymous8 {
    378378    signed short int _X1is_1;
     
    419419
    420420}
    421 volatile const struct __anonymous8 _X3x29KVS12__anonymous8_1;
     421static volatile const struct __anonymous8 _X3x30KVS12__anonymous8_1;
    422422struct __anonymous9 {
    423423    signed short int _X1is_1;
     
    464464
    465465}
    466 volatile const struct __anonymous9 _X3x30KVS12__anonymous9_1;
     466static volatile const struct __anonymous9 _X3x31KVS12__anonymous9_1;
    467467struct __anonymous10 {
    468468    signed short int _X1is_1;
     
    509509
    510510}
    511 volatile const struct __anonymous10 _X3x31KVS13__anonymous10_1;
     511static volatile const struct __anonymous10 _X3x32KVS13__anonymous10_1;
    512512struct __anonymous11 {
    513513    signed short int _X1is_1;
     
    554554
    555555}
    556 static volatile const struct __anonymous11 _X3x32KVS13__anonymous11_1;
     556static volatile const struct __anonymous11 _X3x33KVS13__anonymous11_1;
    557557struct __anonymous12 {
    558558    signed short int _X1is_1;
     
    599599
    600600}
    601 static volatile const struct __anonymous12 _X3x33KVS13__anonymous12_1;
     601static volatile const struct __anonymous12 _X3x34KVS13__anonymous12_1;
    602602struct __anonymous13 {
    603603    signed short int _X1is_1;
     
    644644
    645645}
    646 static volatile const struct __anonymous13 _X3x34KVS13__anonymous13_1;
    647 struct __anonymous14 {
    648     signed short int _X1is_1;
    649 };
    650 static inline void _X12_constructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1);
    651 static inline void _X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1);
    652 static inline void _X11_destructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1);
    653 static inline struct __anonymous14 _X16_operator_assignFS13__anonymous14_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1);
    654 static inline void _X12_constructorFv_S13__anonymous14s_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, signed short int _X1is_1);
    655 static inline void _X12_constructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1){
    656     {
    657         ((void)((*_X4_dstS13__anonymous14_1)._X1is_1) /* ?{} */);
    658     }
    659 
    660 }
    661 static inline void _X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1){
    662     {
    663         ((void)((*_X4_dstS13__anonymous14_1)._X1is_1=_X4_srcS13__anonymous14_1._X1is_1) /* ?{} */);
    664     }
    665 
    666 }
    667 static inline void _X11_destructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1){
    668     {
    669         ((void)((*_X4_dstS13__anonymous14_1)._X1is_1) /* ^?{} */);
    670     }
    671 
    672 }
    673 static inline struct __anonymous14 _X16_operator_assignFS13__anonymous14_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1){
    674     struct __anonymous14 _X4_retS13__anonymous14_1;
    675     {
    676         ((void)((*_X4_dstS13__anonymous14_1)._X1is_1=_X4_srcS13__anonymous14_1._X1is_1));
    677     }
    678 
    679     {
    680         ((void)_X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1((&_X4_retS13__anonymous14_1), (*_X4_dstS13__anonymous14_1)));
    681     }
    682 
    683     return _X4_retS13__anonymous14_1;
    684 }
    685 static inline void _X12_constructorFv_S13__anonymous14s_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, signed short int _X1is_1){
    686     {
    687         ((void)((*_X4_dstS13__anonymous14_1)._X1is_1=_X1is_1) /* ?{} */);
    688     }
    689 
    690 }
    691 static volatile const struct __anonymous14 _X3x35KVS13__anonymous14_1;
    692 struct __anonymous15 {
    693     signed short int _X1is_1;
    694 };
    695 static inline void _X12_constructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1);
    696 static inline void _X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1);
    697 static inline void _X11_destructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1);
    698 static inline struct __anonymous15 _X16_operator_assignFS13__anonymous15_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1);
    699 static inline void _X12_constructorFv_S13__anonymous15s_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, signed short int _X1is_1);
    700 static inline void _X12_constructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1){
    701     {
    702         ((void)((*_X4_dstS13__anonymous15_1)._X1is_1) /* ?{} */);
    703     }
    704 
    705 }
    706 static inline void _X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1){
    707     {
    708         ((void)((*_X4_dstS13__anonymous15_1)._X1is_1=_X4_srcS13__anonymous15_1._X1is_1) /* ?{} */);
    709     }
    710 
    711 }
    712 static inline void _X11_destructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1){
    713     {
    714         ((void)((*_X4_dstS13__anonymous15_1)._X1is_1) /* ^?{} */);
    715     }
    716 
    717 }
    718 static inline struct __anonymous15 _X16_operator_assignFS13__anonymous15_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1){
    719     struct __anonymous15 _X4_retS13__anonymous15_1;
    720     {
    721         ((void)((*_X4_dstS13__anonymous15_1)._X1is_1=_X4_srcS13__anonymous15_1._X1is_1));
    722     }
    723 
    724     {
    725         ((void)_X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1((&_X4_retS13__anonymous15_1), (*_X4_dstS13__anonymous15_1)));
    726     }
    727 
    728     return _X4_retS13__anonymous15_1;
    729 }
    730 static inline void _X12_constructorFv_S13__anonymous15s_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, signed short int _X1is_1){
    731     {
    732         ((void)((*_X4_dstS13__anonymous15_1)._X1is_1=_X1is_1) /* ?{} */);
    733     }
    734 
    735 }
    736 static volatile const struct __anonymous15 _X3x36KVS13__anonymous15_1;
     646static volatile const struct __anonymous13 _X3x35KVS13__anonymous13_1;
    737647_Thread_local signed int _X3x37i_1;
    738648__thread signed int _X3x38i_1;
     
    753663static inline volatile const signed short int _X3f27Fs___1();
    754664static inline volatile const signed short int _X3f28Fs___1();
     665struct __anonymous14 {
     666    signed int _X1ii_1;
     667};
     668static inline void _X12_constructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1);
     669static inline void _X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1);
     670static inline void _X11_destructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1);
     671static inline struct __anonymous14 _X16_operator_assignFS13__anonymous14_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1);
     672static inline void _X12_constructorFv_S13__anonymous14i_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, signed int _X1ii_1);
     673static inline void _X12_constructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1){
     674    {
     675        ((void)((*_X4_dstS13__anonymous14_1)._X1ii_1) /* ?{} */);
     676    }
     677
     678}
     679static inline void _X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1){
     680    {
     681        ((void)((*_X4_dstS13__anonymous14_1)._X1ii_1=_X4_srcS13__anonymous14_1._X1ii_1) /* ?{} */);
     682    }
     683
     684}
     685static inline void _X11_destructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1){
     686    {
     687        ((void)((*_X4_dstS13__anonymous14_1)._X1ii_1) /* ^?{} */);
     688    }
     689
     690}
     691static inline struct __anonymous14 _X16_operator_assignFS13__anonymous14_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1){
     692    struct __anonymous14 _X4_retS13__anonymous14_1;
     693    {
     694        ((void)((*_X4_dstS13__anonymous14_1)._X1ii_1=_X4_srcS13__anonymous14_1._X1ii_1));
     695    }
     696
     697    {
     698        ((void)_X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1((&_X4_retS13__anonymous14_1), (*_X4_dstS13__anonymous14_1)));
     699    }
     700
     701    return _X4_retS13__anonymous14_1;
     702}
     703static inline void _X12_constructorFv_S13__anonymous14i_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, signed int _X1ii_1){
     704    {
     705        ((void)((*_X4_dstS13__anonymous14_1)._X1ii_1=_X1ii_1) /* ?{} */);
     706    }
     707
     708}
     709static inline volatile const struct __anonymous14 _X3f31FS13__anonymous14___1();
     710struct __anonymous15 {
     711    signed int _X1ii_1;
     712};
     713static inline void _X12_constructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1);
     714static inline void _X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1);
     715static inline void _X11_destructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1);
     716static inline struct __anonymous15 _X16_operator_assignFS13__anonymous15_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1);
     717static inline void _X12_constructorFv_S13__anonymous15i_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, signed int _X1ii_1);
     718static inline void _X12_constructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1){
     719    {
     720        ((void)((*_X4_dstS13__anonymous15_1)._X1ii_1) /* ?{} */);
     721    }
     722
     723}
     724static inline void _X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1){
     725    {
     726        ((void)((*_X4_dstS13__anonymous15_1)._X1ii_1=_X4_srcS13__anonymous15_1._X1ii_1) /* ?{} */);
     727    }
     728
     729}
     730static inline void _X11_destructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1){
     731    {
     732        ((void)((*_X4_dstS13__anonymous15_1)._X1ii_1) /* ^?{} */);
     733    }
     734
     735}
     736static inline struct __anonymous15 _X16_operator_assignFS13__anonymous15_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1){
     737    struct __anonymous15 _X4_retS13__anonymous15_1;
     738    {
     739        ((void)((*_X4_dstS13__anonymous15_1)._X1ii_1=_X4_srcS13__anonymous15_1._X1ii_1));
     740    }
     741
     742    {
     743        ((void)_X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1((&_X4_retS13__anonymous15_1), (*_X4_dstS13__anonymous15_1)));
     744    }
     745
     746    return _X4_retS13__anonymous15_1;
     747}
     748static inline void _X12_constructorFv_S13__anonymous15i_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, signed int _X1ii_1){
     749    {
     750        ((void)((*_X4_dstS13__anonymous15_1)._X1ii_1=_X1ii_1) /* ?{} */);
     751    }
     752
     753}
     754static inline volatile const struct __anonymous15 _X3f32FS13__anonymous15___1();
    755755struct __anonymous16 {
    756756    signed int _X1ii_1;
     
    797797
    798798}
    799 static inline volatile const struct __anonymous16 _X3f31FS13__anonymous16___1();
     799static inline volatile const struct __anonymous16 _X3f33FS13__anonymous16___1();
    800800struct __anonymous17 {
    801801    signed int _X1ii_1;
     
    842842
    843843}
    844 static inline volatile const struct __anonymous17 _X3f32FS13__anonymous17___1();
     844static inline volatile const struct __anonymous17 _X3f34FS13__anonymous17___1();
    845845struct __anonymous18 {
    846846    signed int _X1ii_1;
     
    887887
    888888}
    889 static inline volatile const struct __anonymous18 _X3f33FS13__anonymous18___1();
     889static inline volatile const struct __anonymous18 _X3f35FS13__anonymous18___1();
    890890struct __anonymous19 {
    891891    signed int _X1ii_1;
     
    932932
    933933}
    934 static inline volatile const struct __anonymous19 _X3f34FS13__anonymous19___1();
     934static inline volatile const struct __anonymous19 _X3f36FS13__anonymous19___1();
    935935struct __anonymous20 {
    936936    signed int _X1ii_1;
     
    977977
    978978}
    979 static inline volatile const struct __anonymous20 _X3f35FS13__anonymous20___1();
     979static inline volatile const struct __anonymous20 _X3f37FS13__anonymous20___1();
    980980struct __anonymous21 {
    981981    signed int _X1ii_1;
     
    10221022
    10231023}
    1024 static inline volatile const struct __anonymous21 _X3f36FS13__anonymous21___1();
    1025 struct __anonymous22 {
    1026     signed int _X1ii_1;
    1027 };
    1028 static inline void _X12_constructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1);
    1029 static inline void _X12_constructorFv_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1);
    1030 static inline void _X11_destructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1);
    1031 static inline struct __anonymous22 _X16_operator_assignFS13__anonymous22_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1);
    1032 static inline void _X12_constructorFv_S13__anonymous22i_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, signed int _X1ii_1);
    1033 static inline void _X12_constructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1){
    1034     {
    1035         ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1) /* ?{} */);
    1036     }
    1037 
    1038 }
    1039 static inline void _X12_constructorFv_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1){
    1040     {
    1041         ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1=_X4_srcS13__anonymous22_1._X1ii_1) /* ?{} */);
    1042     }
    1043 
    1044 }
    1045 static inline void _X11_destructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1){
    1046     {
    1047         ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1) /* ^?{} */);
    1048     }
    1049 
    1050 }
    1051 static inline struct __anonymous22 _X16_operator_assignFS13__anonymous22_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1){
    1052     struct __anonymous22 _X4_retS13__anonymous22_1;
    1053     {
    1054         ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1=_X4_srcS13__anonymous22_1._X1ii_1));
    1055     }
    1056 
    1057     {
    1058         ((void)_X12_constructorFv_S13__anonymous22S13__anonymous22_autogen___1((&_X4_retS13__anonymous22_1), (*_X4_dstS13__anonymous22_1)));
    1059     }
    1060 
    1061     return _X4_retS13__anonymous22_1;
    1062 }
    1063 static inline void _X12_constructorFv_S13__anonymous22i_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, signed int _X1ii_1){
    1064     {
    1065         ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1=_X1ii_1) /* ?{} */);
    1066     }
    1067 
    1068 }
    1069 static inline volatile const struct __anonymous22 _X3f37FS13__anonymous22___1();
    1070 struct __anonymous23 {
    1071     signed int _X1ii_1;
    1072 };
    1073 static inline void _X12_constructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1);
    1074 static inline void _X12_constructorFv_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1);
    1075 static inline void _X11_destructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1);
    1076 static inline struct __anonymous23 _X16_operator_assignFS13__anonymous23_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1);
    1077 static inline void _X12_constructorFv_S13__anonymous23i_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, signed int _X1ii_1);
    1078 static inline void _X12_constructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1){
    1079     {
    1080         ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1) /* ?{} */);
    1081     }
    1082 
    1083 }
    1084 static inline void _X12_constructorFv_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1){
    1085     {
    1086         ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1=_X4_srcS13__anonymous23_1._X1ii_1) /* ?{} */);
    1087     }
    1088 
    1089 }
    1090 static inline void _X11_destructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1){
    1091     {
    1092         ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1) /* ^?{} */);
    1093     }
    1094 
    1095 }
    1096 static inline struct __anonymous23 _X16_operator_assignFS13__anonymous23_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1){
    1097     struct __anonymous23 _X4_retS13__anonymous23_1;
    1098     {
    1099         ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1=_X4_srcS13__anonymous23_1._X1ii_1));
    1100     }
    1101 
    1102     {
    1103         ((void)_X12_constructorFv_S13__anonymous23S13__anonymous23_autogen___1((&_X4_retS13__anonymous23_1), (*_X4_dstS13__anonymous23_1)));
    1104     }
    1105 
    1106     return _X4_retS13__anonymous23_1;
    1107 }
    1108 static inline void _X12_constructorFv_S13__anonymous23i_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, signed int _X1ii_1){
    1109     {
    1110         ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1=_X1ii_1) /* ?{} */);
    1111     }
    1112 
    1113 }
    1114 static inline volatile const struct __anonymous23 _X3f38FS13__anonymous23___1();
     1024static inline volatile const struct __anonymous21 _X3f38FS13__anonymous21___1();
    11151025static inline volatile const signed short int _X3f41Fs___1();
    11161026static inline volatile const signed short int _X3f42Fs___1();
  • tests/.expect/forall.txt

    r34b4268 r24d6572  
    1 forall.cfa:244:25: warning: Compiled
     11
     2f
     397
     4f
     5g
     6f
     7f
     8g
     9fT
     10fT
     11fT
     12fTU
     13fTU
     14fTU
     151 2
     162 1
     171, 2
     18@ 0 2 0 4 6.4 6.4 6.4 6.4+3.i 4
     193. 3.
     2045
     2112 3
  • tests/.expect/nested_function.x64.txt

    r34b4268 r24d6572  
    1 total 80
     1total 145
  • tests/.expect/nested_function.x86.txt

    r34b4268 r24d6572  
    1 total 55
     1total 245
  • tests/Makefile.am

    r34b4268 r24d6572  
    1111## Created On       : Sun May 31 09:08:15 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Sat Jun  5 14:49:25 2021
    14 ## Update Count     : 92
     13## Last Modified On : Sun May 28 08:15:43 2023
     14## Update Count     : 196
    1515###############################################################################
    1616
     
    2222DEFAULT_INCLUDES = -I${abs_srcdir}
    2323
    24 debug=yes
    25 installed=no
    26 archiveerrors=
    27 
    28 DEBUG_FLAGS=-debug -g -O0
    29 
    30 quick_test=avl_test operators numericConstants expression enum array typeof cast raii/dtor-early-exit raii/init_once attributes meta/dumpable
    31 
    32 concurrent=
    33 timeouts=
     24debug ?= yes
     25installed ?= no
     26ARCH = ${if ${arch},"--arch=${arch}"}
     27arch_support = "x86/x64/arm"
     28TIMEOUT = ${if ${timeout},"--timeout=${timeout}"}
     29GLOBAL_TIMEOUT = ${if ${global-timeout},"--global-timeout=${global-timeout}"}
     30ARCHIVE_ERRORS = ${if ${archive-errors},"--archive-errors=${archive-errors}"}
     31
     32DEBUG_FLAGS = -debug -g -O0
     33
     34quick_test = avl_test operators numericConstants expression enum array typeof cast raii/dtor-early-exit raii/init_once attributes meta/dumpable
    3435
    3536TEST_PY = python3 ${builddir}/test.py
     
    3738# applies to both programs
    3839# since automake doesn't have support for CFA we have to
    39 AM_CFLAGS = $(if $(test), 2> $(test), ) \
    40         -fdebug-prefix-map=$(abspath ${abs_srcdir})= \
     40AM_CFLAGS = ${if ${test}, 2> ${test}, } \
     41        -fdebug-prefix-map=${abspath ${abs_srcdir}}= \
    4142        -fdebug-prefix-map=/tmp= \
    4243        -fno-diagnostics-show-caret \
     
    5152
    5253# get the desired cfa to test
    53 TARGET_CFA = $(if $(filter $(installed),yes), @CFACC_INSTALL@, @CFACC@)
     54TARGET_CFA = ${if ${filter ${installed},yes}, @CFACC_INSTALL@, @CFACC@}
    5455
    5556# adjust CC to current flags
    56 CC = LC_ALL=C $(if $(DISTCC_CFA_PATH),distcc $(DISTCC_CFA_PATH) ${ARCH_FLAGS} ,$(TARGET_CFA) ${DEBUG_FLAGS} ${ARCH_FLAGS})
    57 CFACC = $(CC)
     57CC = LC_ALL=C ${if ${DISTCC_CFA_PATH},distcc ${DISTCC_CFA_PATH} ${ARCH_FLAGS} ,${TARGET_CFA} ${DEBUG_FLAGS} ${ARCH_FLAGS}}
     58CFACC = ${CC}
    5859
    5960# get local binary for depedencies
     
    6162
    6263# adjusted CC but without the actual distcc call
    63 CFACCLOCAL = $(if $(DISTCC_CFA_PATH),$(DISTCC_CFA_PATH) ${ARCH_FLAGS} ,$(TARGET_CFA) ${DEBUG_FLAGS} ${ARCH_FLAGS})
    64 CFACCLINK = $(CFACCLOCAL) -quiet $(if $(test), 2> $(test), ) $($(shell echo "${@}_FLAGSLD" | sed 's/-\|\//_/g'))
    65 
    66 PRETTY_PATH=mkdir -p $(dir $(abspath ${@})) && cd ${srcdir} &&
    67 
    68 .PHONY: list .validate .test_makeflags
    69 .INTERMEDIATE: .validate .validate.cfa .test_makeflags
     64CFACCLOCAL = ${if ${DISTCC_CFA_PATH},${DISTCC_CFA_PATH} ${ARCH_FLAGS} ,${TARGET_CFA} ${DEBUG_FLAGS} ${ARCH_FLAGS}}
     65CFACCLINK = ${CFACCLOCAL} -quiet ${if ${test}, 2> ${test}, } ${${shell echo "${@}_FLAGSLD" | sed 's/-\|\//_/g'}}
     66
     67PRETTY_PATH = mkdir -p ${dir ${abspath ${@}}} && cd ${srcdir} &&
     68
     69.PHONY : concurrency list .validate .test_makeflags
     70.INTERMEDIATE : .validate .validate.cfa .test_makeflags
    7071EXTRA_PROGRAMS = avl_test linkonce linking/mangling/anon .dummy_hack # build but do not install
    7172EXTRA_DIST = test.py \
     
    7879        avltree/avl-private.h \
    7980        avltree/avl.h \
    80         concurrent/clib_tls.c \
    81         concurrent/clib.c \
    8281        configs/.in/parseconfig-all.txt \
    8382        configs/.in/parseconfig-errors.txt \
     
    8887        io/.in/many_read.data \
    8988        meta/fork+exec.hfa \
    90         unified_locking/mutex_test.hfa
     89        concurrency/clib_tls.c \
     90        concurrency/clib.c \
     91        concurrency/unified_locking/mutex_test.hfa \
     92        concurrency/channels/parallel_harness.hfa
    9193
    9294dist-hook:
     
    9496        for file in `${TEST_PY} --list-dist`; do \
    9597                if test -f ${srcdir}/$${file}; then \
    96                         $(MKDIR_P) $$(dirname ${distdir}/$${file}); \
     98                        ${MKDIR_P} $$(dirname ${distdir}/$${file}); \
    9799                        cp -df ${srcdir}/$${file} ${distdir}/$${file}; \
    98100                fi; \
     
    106108
    107109#----------------------------------------------------------------------------------------------------------------
    108 all-local :
    109         @+${TEST_PY} --debug=${debug} --install=${installed} --archive-errors=${archiveerrors} ${concurrent} ${timeouts} ${quick_test}
    110 
    111 all-tests :
    112         @+${TEST_PY} --debug=${debug} --install=${installed} --archive-errors=${archiveerrors} ${concurrent} ${timeouts} --all # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
     110
     111# '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
     112all-local : # This name is important to automake and implies the default build target.
     113        @+${TEST_PY} --debug=${debug} --install=${installed} --invariant ${ARCHIVE_ERRORS} ${TIMEOUT} ${GLOBAL_TIMEOUT} ${ARCH} --all
     114
     115tests : all-local # synonym
     116
     117install : all-local  # synonym, PAB only
     118
     119quick :
     120        @+${TEST_PY} --debug=${debug} --install=${installed} ${ARCHIVE_ERRORS} ${ARCH} ${quick_test}
     121
     122concurrency :
     123        @+${TEST_PY} --debug=${debug} --install=${installed} ${ARCHIVE_ERRORS} ${TIMEOUT} ${GLOBAL_TIMEOUT} ${ARCH} -Iconcurrency
     124
     125list :
     126        @+${TEST_PY} --list
     127
     128help :
     129        @echo "user targets:"
     130        @echo "    Run the complete test suite."
     131        @echo "    $$ make (null) / tests [debug=yes/no] [installed=yes/no] [archive-errors=dump-dir] [timeout=seconds] [global-timeout=seconds] [arch=${arch_support}]"
     132        @echo ""
     133        @echo "    Run the short (quick) test suite."
     134        @echo "    $$ make quick [debug=yes/no] [installed=yes/no] [archive-errors=dump-dir] [arch=${arch_support}]"
     135        @echo ""
     136        @echo "    Run the concurrency test suite."
     137        @echo "    $$ make concurrency [debug=yes/no] [installed=yes/no] [archive-errors=dump-dir] [timeout=seconds] [global-timeout=seconds] [arch=${arch_support}]"
     138        @echo ""
     139        @echo "    List all tests in the test suite."
     140        @echo "    $$ make list"
    113141
    114142mostlyclean-local :
     
    122150        find ${builddir} -path '*.Po' -delete
    123151
    124 list :
    125         @+${TEST_PY} --list ${concurrent}
    126 
    127152.test_makeflags:
    128153        @echo "${MAKEFLAGS}"
    129154
    130155.validate: .validate.cfa
    131         $(CFACOMPILE) .validate.cfa -fsyntax-only -Wall -Wextra -Werror
     156        ${CFACOMPILE} .validate.cfa -fsyntax-only -Wall -Wextra -Werror
    132157
    133158.validate.cfa:
     
    141166        @echo "int bar() { return 0; }" > ${@}
    142167
    143 concurrency :
    144         @+${TEST_PY} --debug=${debug}  --install=${installed} -Iconcurrent
    145 
    146168#----------------------------------------------------------------------------------------------------------------
    147169
    148170# Use for all tests, make sure the path are correct and all flags are added
    149 CFACOMPILETEST=$(PRETTY_PATH) $(CFACOMPILE) $(shell realpath --relative-to=${srcdir} ${<}) $($(shell echo "${@}_FLAGSCFA" | sed 's/-\|\//_/g'))
     171CFACOMPILETEST=${PRETTY_PATH} ${CFACOMPILE} ${shell realpath --relative-to=${srcdir} ${<}} ${${shell echo "${@}_FLAGSCFA" | sed 's/-\|\//_/g'}}
    150172
    151173#----------------------------------------------------------------------------------------------------------------
     
    154176# split into two steps to support compiling remotely using distcc
    155177# don't use distcc to do the linking because distcc doesn't do linking
    156 % : %.cfa $(CFACCBIN)
    157         $(CFACOMPILETEST) -c -o $(abspath ${@}).o -DIN_DIR="$(abspath $(dir ${<}))/.in/"
    158         $(CFACCLINK) ${@}.o -o $(abspath ${@})
    159         rm $(abspath ${@}).o
     178% : %.cfa ${CFACCBIN}
     179        ${CFACOMPILETEST} -c -o ${abspath ${@}}.o -DIN_DIR="${abspath ${dir ${<}}}/.in/"
     180        ${CFACCLINK} ${@}.o -o ${abspath ${@}}
     181        rm ${abspath ${@}}.o
    160182
    161183# implicit rule for c++ test
    162184# convient for testing the testsuite itself but not actuall used
    163185% : %.cpp
    164         $(PRETTY_PATH) $(CXXCOMPILE) $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
     186        ${PRETTY_PATH} ${CXXCOMPILE} ${shell realpath --relative-to=${srcdir} ${<}} -o ${abspath ${@}}
    165187
    166188#------------------------------------------------------------------------------
     
    173195# Generated code
    174196GENERATED_CODE = declarationSpecifier gccExtensions extension attributes functions KRfunctions
    175 $(GENERATED_CODE): % : %.cfa $(CFACCBIN)
    176         $(CFACOMPILETEST) -CFA -XCFA -p -c -fsyntax-only -o $(abspath ${@})
     197${GENERATED_CODE} : % : %.cfa ${CFACCBIN}
     198        ${CFACOMPILETEST} -CFA -XCFA -p -c -fsyntax-only -o ${abspath ${@}}
    177199
    178200#------------------------------------------------------------------------------
     
    180202#------------------------------------------------------------------------------
    181203# tests that just validate syntax and compiler output should be compared to stderr
    182 CFACOMPILE_SYNTAX = $(CFACOMPILETEST) -Wno-unused-variable -Wno-unused-label -c -fsyntax-only -o $(abspath ${@})
    183 
    184 SYNTAX_ONLY_CODE = expression typedefRedef variableDeclarator switch numericConstants identFuncDeclarator forall \
    185         init1 limits nested-types cast labelledExit array quasiKeyword include/stdincludes include/includes builtins/sync warnings/self-assignment
    186 $(SYNTAX_ONLY_CODE): % : %.cfa $(CFACCBIN)
    187         $(CFACOMPILE_SYNTAX)
    188         $(if $(test), cp $(test) $(abspath ${@}), )
     204CFACOMPILE_SYNTAX = ${CFACOMPILETEST} -Wno-unused-variable -Wno-unused-label -c -fsyntax-only -o ${abspath ${@}}
     205
     206SYNTAX_ONLY_CODE = expression typedefRedef variableDeclarator switch numericConstants identFuncDeclarator \
     207        init1 limits nested-types cast labelledExit array quasiKeyword include/stdincludes include/includes builtins/sync warnings/self-assignment concurrency/waitfor/parse
     208${SYNTAX_ONLY_CODE} : % : %.cfa ${CFACCBIN}
     209        ${CFACOMPILE_SYNTAX}
     210        ${if ${test}, cp ${test} ${abspath ${@}}, }
    189211
    190212# expected failures
    191213# use custom target since they require a custom define *and* have a name that doesn't match the file
    192 alloc-ERROR : alloc.cfa $(CFACCBIN)
    193         $(CFACOMPILE_SYNTAX) -DERR1
    194         -cp $(test) $(abspath ${@})
    195 
    196 init1-ERROR : init1.cfa $(CFACCBIN)
    197         $(CFACOMPILE_SYNTAX) -DERR1
    198         -cp $(test) $(abspath ${@})
    199 
    200 typedefRedef-ERR1 : typedefRedef.cfa $(CFACCBIN)
    201         $(CFACOMPILE_SYNTAX) -DERR1
    202         -cp $(test) $(abspath ${@})
    203 
    204 nested-types-ERR1 : nested-types.cfa $(CFACCBIN)
    205         $(CFACOMPILE_SYNTAX) -DERR1
    206         -cp $(test) $(abspath ${@})
    207 
    208 nested-types-ERR2 : nested-types.cfa $(CFACCBIN)
    209         $(CFACOMPILE_SYNTAX) -DERR2
    210         -cp $(test) $(abspath ${@})
    211 
    212 raii/memberCtors-ERR1 : raii/memberCtors.cfa $(CFACCBIN)
    213         $(CFACOMPILE_SYNTAX) -DERR1
    214         -cp $(test) $(abspath ${@})
    215 
    216 raii/ctor-autogen-ERR1 : raii/ctor-autogen.cfa $(CFACCBIN)
    217         $(CFACOMPILE_SYNTAX) -DERR1
    218         -cp $(test) $(abspath ${@})
    219 
    220 raii/dtor-early-exit-ERR1 : raii/dtor-early-exit.cfa $(CFACCBIN)
    221         $(CFACOMPILE_SYNTAX) -DERR1
    222         -cp $(test) $(abspath ${@})
    223 
    224 raii/dtor-early-exit-ERR2 : raii/dtor-early-exit.cfa $(CFACCBIN)
    225         $(CFACOMPILE_SYNTAX) -DERR2
    226         -cp $(test) $(abspath ${@})
     214
     215array-ERR1 : array.cfa ${CFACCBIN}
     216        ${CFACOMPILE_SYNTAX} -DERR1
     217        -cp ${test} ${abspath ${@}}
     218
     219array-ERR2 : array.cfa ${CFACCBIN}
     220        ${CFACOMPILE_SYNTAX} -DERR2
     221        -cp ${test} ${abspath ${@}}
     222
     223array-ERR3 : array.cfa ${CFACCBIN}
     224        ${CFACOMPILE_SYNTAX} -DERR3
     225        -cp ${test} ${abspath ${@}}
     226
     227alloc-ERROR : alloc.cfa ${CFACCBIN}
     228        ${CFACOMPILE_SYNTAX} -DERR1
     229        -cp ${test} ${abspath ${@}}
     230
     231init1-ERROR : init1.cfa ${CFACCBIN}
     232        ${CFACOMPILE_SYNTAX} -DERR1
     233        -cp ${test} ${abspath ${@}}
     234
     235typedefRedef-ERR1 : typedefRedef.cfa ${CFACCBIN}
     236        ${CFACOMPILE_SYNTAX} -DERR1
     237        -cp ${test} ${abspath ${@}}
     238
     239nested-types-ERR1 : nested-types.cfa ${CFACCBIN}
     240        ${CFACOMPILE_SYNTAX} -DERR1
     241        -cp ${test} ${abspath ${@}}
     242
     243nested-types-ERR2 : nested-types.cfa ${CFACCBIN}
     244        ${CFACOMPILE_SYNTAX} -DERR2
     245        -cp ${test} ${abspath ${@}}
     246
     247raii/memberCtors-ERR1 : raii/memberCtors.cfa ${CFACCBIN}
     248        ${CFACOMPILE_SYNTAX} -DERR1
     249        -cp ${test} ${abspath ${@}}
     250
     251raii/ctor-autogen-ERR1 : raii/ctor-autogen.cfa ${CFACCBIN}
     252        ${CFACOMPILE_SYNTAX} -DERR1
     253        -cp ${test} ${abspath ${@}}
     254
     255raii/dtor-early-exit-ERR1 : raii/dtor-early-exit.cfa ${CFACCBIN}
     256        ${CFACOMPILE_SYNTAX} -DERR1
     257        -cp ${test} ${abspath ${@}}
     258
     259raii/dtor-early-exit-ERR2 : raii/dtor-early-exit.cfa ${CFACCBIN}
     260        ${CFACOMPILE_SYNTAX} -DERR2
     261        -cp ${test} ${abspath ${@}}
    227262
    228263# Exception Tests
    229264# Test with libcfathread; it changes how storage works.
    230265
    231 exceptions/%-threads : exceptions/%.cfa $(CFACCBIN)
    232         $(CFACOMPILETEST) -include exceptions/with-threads.hfa -c -o $(abspath ${@}).o
    233         $(CFACCLOCAL) $($(shell echo "${@}_FLAGSLD" | sed 's/-\|\//_/g')) $(abspath ${@}).o -o $(abspath ${@})
     266exceptions/%-threads : exceptions/%.cfa ${CFACCBIN}
     267        ${CFACOMPILETEST} -include exceptions/with-threads.hfa -c -o ${abspath ${@}}.o
     268        ${CFACCLOCAL} ${${shell echo "${@}_FLAGSLD" | sed 's/-\|\//_/g'}} ${abspath ${@}}.o -o ${abspath ${@}}
    234269
    235270# Linking tests
    236271# Meta tests to make sure we see linking errors (can't compile with -O2 since it may multiply number of calls)
    237 linking/linkerror : linking/linkerror.cfa $(CFACCBIN)
    238         $(CFACOMPILETEST) -O0 -c -o $(abspath ${@}).o
    239         $(CFACCLINK)  -O0 ${@}.o -o $(abspath ${@})
    240         rm $(abspath ${@}).o
     272linking/linkerror : linking/linkerror.cfa ${CFACCBIN}
     273        ${CFACOMPILETEST} -O0 -c -o ${abspath ${@}}.o
     274        ${CFACCLINK}  -O0 ${@}.o -o ${abspath ${@}}
     275        rm ${abspath ${@}}.o
    241276
    242277#------------------------------------------------------------------------------
  • tests/PRNG.cfa

    r34b4268 r24d6572  
    1 //                               -*- Mode: C -*-
    2 //
     1//
    32// Cforall Version 1.0.0 Copyright (C) 2021 University of Waterloo
    4 //
    5 // PRNG.c --
    6 //
     3//
     4// PRNG.c -- high-perforamnce pseudo-random numbers
     5//
     6// The contents of this file are covered under the licence agreement in the
     7// file "LICENCE" distributed with Cforall.
     8//
    79// Author           : Peter A. Buhr
    810// Created On       : Wed Dec 29 09:38:12 2021
    911// Last Modified By : Peter A. Buhr
    10 // Last Modified On : Tue Nov 22 22:51:12 2022
    11 // Update Count     : 381
     12// Last Modified On : Thu May 25 15:39:52 2023
     13// Update Count     : 422
    1214//
    1315
     
    1517#include <stdlib.hfa>                                                                   // PRNG
    1618#include <clock.hfa>
    17 #include <thread.hfa>
    1819#include <limits.hfa>                                                                   // MAX
    1920#include <math.hfa>                                                                             // sqrt
    2021#include <malloc.h>                                                                             // malloc_stats
    2122#include <locale.h>                                                                             // setlocale
     23#include <thread.hfa>
    2224#include <mutex_stmt.hfa>
    2325
    24 #ifdef __x86_64__                                                                               // 64-bit architecture
     26#define xstr(s) str(s)
     27#define str(s) #s
     28
     29#if defined( __x86_64__ ) || defined( __aarch64__ )             // 64-bit architecture
    2530#define PRNG PRNG64
    2631#else                                                                                                   // 32-bit architecture
    2732#define PRNG PRNG32
    2833#endif // __x86_64__
     34
     35//#define TIME
    2936
    3037#ifdef TIME                                                                                             // use -O2 -nodebug
     
    3845#endif // TIME
    3946
    40 void avgstd( unsigned int buckets[] ) {
    41         unsigned int min = MAX, max = 0;
     47static void avgstd( size_t trials, size_t buckets[] ) {
     48        size_t min = MAX, max = 0;
    4249        double sum = 0.0, diff;
    4350        for ( i; BUCKETS ) {
     
    5461        } // for
    5562        double std = sqrt( sum / BUCKETS );
    56         mutex( sout ) sout | "trials"  | TRIALS | "buckets" | BUCKETS
     63        mutex( sout ) sout | "trials"  | trials | "buckets" | BUCKETS
    5764                | "min" | min | "max" | max
    5865                | "avg" | wd(0,1, avg) | "std" | wd(0,1, std) | "rstd" | wd(0,1, (avg == 0 ? 0.0 : std / avg * 100)) | "%";
     
    6067
    6168
    62 unsigned int seed = 1009;
     69size_t seed = 1009;
    6370
    6471thread T1 {};
    6572void main( T1 & ) {
    66         unsigned int * buckets = calloc( BUCKETS );                     // too big for task stack
    67         for ( TRIALS / 100 ) {
     73        size_t * buckets = calloc( BUCKETS );                           // too big for task stack
     74        for ( TRIALS / 50 ) {
    6875                buckets[rand() % BUCKETS] += 1;                                 // concurrent
    6976        } // for
    70         avgstd( buckets );
     77        avgstd( TRIALS / 50, buckets );
    7178        free( buckets );
    7279} // main
     
    7683        PRNG prng;
    7784        if ( seed != 0 ) set_seed( prng, seed );
    78         unsigned int * buckets = calloc( BUCKETS );                     // too big for task stack
     85        size_t * buckets = calloc( BUCKETS );                           // too big for task stack
    7986        for ( TRIALS ) {
    8087                buckets[prng( prng ) % BUCKETS] += 1;                   // concurrent
    8188        } // for
    82         avgstd( buckets );
     89        avgstd( TRIALS, buckets );
    8390        free( buckets );
    8491} // main
     
    8693thread T3 {};
    8794void main( T3 & th ) {
    88         unsigned int * buckets = calloc( BUCKETS );                     // too big for task stack
    89         for ( TRIALS ) {
     95        size_t * buckets = calloc( BUCKETS );                           // too big for task stack
     96        for ( TRIALS / 5 ) {
    9097                buckets[prng() % BUCKETS] += 1;                                 // concurrent
    9198        } // for
    92         avgstd( buckets );
     99        avgstd( TRIALS / 5, buckets );
    93100        free( buckets );
    94101} // main
     
    96103thread T4 {};
    97104void main( T4 & th ) {
    98         unsigned int * buckets = calloc( BUCKETS );                     // too big for task stack
     105        size_t * buckets = calloc( BUCKETS );                           // too big for task stack
    99106        for ( TRIALS ) {
    100                 buckets[prng( th ) % BUCKETS] += 1;     // concurrent
    101         } // for
    102         avgstd( buckets );
     107                buckets[prng( th ) % BUCKETS] += 1;                             // concurrent
     108        } // for
     109        avgstd( TRIALS, buckets );
    103110        free( buckets );
    104111} // main
     
    108115static void dummy( thread$ & th ) __attribute__(( noinline ));
    109116static void dummy( thread$ & th ) {
    110         unsigned int * buckets = (unsigned int *)calloc( BUCKETS, sizeof(unsigned int) ); // too big for task stack
    111         for ( unsigned int i = 0; i < TRIALS; i += 1 ) {
     117        size_t * buckets = (size_t *)calloc( BUCKETS, sizeof(size_t) ); // too big for task stack
     118        for ( size_t i = 0; i < TRIALS; i += 1 ) {
    112119                buckets[prng( th ) % BUCKETS] += 1;                             // sequential
    113120        } // for
    114         avgstd( buckets );
     121        avgstd( TRIALS, buckets );
    115122        free( buckets );
    116123} // dummy
    117124
     125
    118126int main() {
    119         // causes leaked storage message
    120 //      setlocale( LC_NUMERIC, getenv( "LANG" ) );                      // print digit separator
     127        // setlocale( LC_NUMERIC, getenv( "LANG" ) );           // causes leaked storage message
     128
     129        // only works on the current pthread thread
     130        // locale_t loc = newlocale( LC_NUMERIC_MASK, getenv( "LANG" ), (locale_t)0p );
     131        // if ( loc == (locale_t)0p ) abort( "newlocale" );
     132        // uselocale( loc );
    121133
    122134        enum { TASKS = 4 };
    123135        Time start;
     136
    124137#ifdef TIME                                                                                             // too slow for test and generates non-repeatable results
    125138#if 1
    126         unsigned int rseed;
     139        sout | "glib rand" | nl | nl;
     140
     141        size_t rseed;
    127142        if ( seed != 0 ) rseed = seed;
    128143        else rseed = rdtscl();
     
    130145
    131146        sout | sepDisable;
    132         sout | wd(13, "rand()" ) | wd(10, "rand(5)") | wd(13, "rand(0,5)" );
    133         for ( 20 ) {
    134                 sout | wd(13, rand()) | nonl;
    135                 sout | wd(10, rand() % 5) | nonl;
    136                 sout | wd(13, rand() % (5 - 0 + 1) + 0);
     147        sout | nl | wd(26, "rand()" ) | wd(12, "rand(5)") | wd(12, "rand(0,5)" );
     148        for ( 20 ) {
     149                sout | wd(26, rand()) | nonl;
     150                sout | wd(12, rand() % 5) | nonl;
     151                sout | wd(12, rand() % (5 - 0 + 1) + 0);
    137152        } // for
    138153        sout | sepEnable;
     
    142157        STARTTIME;
    143158        {
    144                 unsigned int * buckets = calloc( BUCKETS );             // too big for task stack
    145                 for ( i; TRIALS / 10 ) {
     159                size_t * buckets = calloc( BUCKETS );                   // too big for task stack
     160                for ( i; TRIALS / 5 ) {
    146161                        buckets[rand() % BUCKETS] += 1;                         // sequential
    147162                } // for
    148                 avgstd( buckets );
     163                avgstd( TRIALS / 5, buckets );
    149164                free( buckets );
    150165        }
    151         ENDTIME( " x 10 " );
     166        ENDTIME( " x 5 " );
    152167
    153168        sout | nl | "Concurrent";
     
    159174                } // wait for threads to complete
    160175        }
    161         ENDTIME( " x 100 " );
     176        ENDTIME( " x 50 " );
    162177#endif // 0
    163178#endif // TIME
     179
     180        sout | nl | "CFA " xstr(PRNG_NAME);
     181
    164182#if 1
    165183        PRNG prng;
     
    168186
    169187        sout | sepDisable;
    170         sout | nl | wd(13, "PRNG()" ) | wd(10, "PRNG(5)") | wd(13, "PRNG(0,5)" );
    171         for ( 20 ) {
    172                 sout | wd(13, prng( prng )) | nonl;                             // cascading => side-effect functions called in arbitary order
    173                 sout | wd(10, prng( prng, 5 )) | nonl;
    174                 sout | wd(13, prng( prng, 0, 5 ));
     188        sout | nl | wd(26, "PRNG()" ) | wd(12, "PRNG(5)") | wd(12, "PRNG(0,5)" );
     189        for ( 20 ) {
     190                sout | wd(26, prng( prng )) | nonl;                             // cascading => side-effect functions called in arbitary order
     191                sout | wd(12, prng( prng, 5 )) | nonl;
     192                sout | wd(12, prng( prng, 0, 5 ));
    175193        } // for
    176194        sout | sepEnable;
     
    180198        STARTTIME;
    181199        {
    182                 unsigned int * buckets = calloc( BUCKETS );             // too big for task stack
     200                size_t * buckets = calloc( BUCKETS );                   // too big for task stack
    183201                for ( TRIALS ) {
    184202                        buckets[prng( prng ) % BUCKETS] += 1;           // sequential
    185203                } // for
    186                 avgstd( buckets );
     204                avgstd( TRIALS, buckets );
    187205                free( buckets );
    188206        }
     
    203221
    204222        sout | sepDisable;
    205         sout | nl | wd(13, "prng()" ) | wd(10, "prng(5)") | wd(13, "prng(0,5)" );
    206         for ( 20 ) {
    207                 sout | wd(13, prng()) | nonl;                                   // cascading => side-effect functions called in arbitary order
    208                 sout | wd(10, prng( 5 )) | nonl;
    209                 sout | wd(13, prng( 0, 5 ));
     223        sout | nl | wd(26, "prng()" ) | wd(12, "prng(5)") | wd(12, "prng(0,5)" );
     224        for ( 20 ) {
     225                sout | wd(26, prng()) | nonl;                                   // cascading => side-effect functions called in arbitary order
     226                sout | wd(12, prng( 5 )) | nonl;
     227                sout | wd(12, prng( 0, 5 ));
    210228        } // for
    211229        sout | sepEnable;
     
    215233        STARTTIME;
    216234        {
    217                 unsigned int * buckets = calloc( BUCKETS );             // too big for task stack
    218                 for ( TRIALS ) {
     235                size_t * buckets = calloc( BUCKETS );                   // too big for task stack
     236                for ( TRIALS / 5 ) {
    219237                        buckets[prng() % BUCKETS] += 1;
    220238                } // for
    221                 avgstd( buckets );
     239                avgstd( TRIALS / 5, buckets );
    222240                free( buckets );
    223241        }
    224         ENDTIME();
     242        ENDTIME( " x 5 " );
    225243
    226244        sout | nl | "Concurrent";
     
    232250                } // wait for threads to complete
    233251        }
    234         ENDTIME();
     252        ENDTIME( " x 5 " );
    235253#endif // 0
    236254#if 1
     
    239257
    240258        sout | sepDisable;
    241         sout | nl | wd(13, "prng(t)" ) | wd(10, "prng(t,5)") | wd(13, "prng(t,0,5)" );
    242         for ( 20 ) {
    243                 sout | wd(13, prng( th )) | nonl;                               // cascading => side-effect functions called in arbitary order
    244                 sout | wd(10, prng( th, 5 )) | nonl;
    245                 sout | wd(13, prng( th, 0, 5 ));
     259        sout | nl | wd(26, "prng(t)" ) | wd(12, "prng(t,5)") | wd(12, "prng(t,0,5)" );
     260        for ( 20 ) {
     261                sout | wd(26, prng( th )) | nonl;                               // cascading => side-effect functions called in arbitary order
     262                sout | wd(12, prng( th, 5 )) | nonl;
     263                sout | wd(12, prng( th, 0, 5 ));
    246264        } // for
    247265        sout | sepEnable;
     
    266284#endif // 0
    267285//      malloc_stats();
     286        // freelocale( loc );
    268287} // main
    269288
  • tests/array.cfa

    r34b4268 r24d6572  
    1515//
    1616
    17 int a1[0];
    18 //int a2[*];
    19 //double a4[3.0];
     17// Tests syntax.  Comments explain semantics.  Test does not show semantics.
     18// Mostly illustrates facts about C (with which CFA is being tested to agree).
     19// Is a test oracle under `gcc -x c`.
    2020
    21 int m1[0][3];
    22 //int m2[*][*];
    23 int m4[3][3];
     21#ifdef ERR1
     22#define E1(...) __VA_ARGS__
     23#else
     24#define E1(...)
     25#endif
    2426
    25 typedef int T;
     27#ifdef ERR2
     28#define E2(...) __VA_ARGS__
     29#else
     30#define E2(...)
     31#endif
    2632
    27 int fred() {
    28 //      int a1[];
    29 //      int a2[*];
    30         int a4[3];
    31         int T[3];
    32 }
     33#ifdef ERR3
     34#define E3(...) __VA_ARGS__
     35#else
     36#define E3(...)
     37#endif
    3338
    34 int mary( int T[3],
    35                   int p1[const 3],
    36                   int p2[static 3],
    37                   int p3[static const 3]
    38         ) {
    39 }
     39    int a1[0];
     40E1( int a2[*];       )
     41                                                        #ifndef __cforall
     42E1( double a4[3.0];  )                                  // BUG 275: CFA accepts but should reject
     43                                                        #endif
    4044
    41 int (*tom())[3] {
    42 }
     45    int m1[0][3];
     46E1( int m2[*][*];    )
     47    int m4[3][3];
    4348
    44 int (*(jane)())( int T[3],
    45                                  int p1[const 3],
    46                                  int p2[static 3],
    47                                  int p3[static const 3]
    48         ) {
    49 }
     49    typedef int T;
     50
     51    int fred(int n) {
     52E1(     int a1[];    )
     53E1(     int a2[*];   )
     54        int a4[3];
     55        int T[3];
     56        int a5[n];
     57    }
     58
     59    int mary( int T[3],                                 // same as: int *T
     60              int p1[const 3],                          // same as: int const *p1
     61              int p2[static 3],                         // same as T, but length >=3 checked
     62              int p3[static const 3]                    // both above: 3 is static, p3 is const
     63        ) {
     64    }
     65
     66    // function taking (), returning pointer to array of ints
     67    int (*tom())[3] {
     68    }
     69
     70    // function taking (), returning pointer to function of same type as mary
     71    int (*(jane)())( int T[3],
     72                     int p1[const 3],
     73                     int p2[static 3],
     74                     int p3[static const 3]
     75        ) {
     76    }
     77
     78    // functions returning same exotic pointers, in CFA's non-onion syntax
     79    #ifdef __cforall
     80    [ * [3] int ] toms_twin(...) {
     81    }
     82    [ * [int]( [3] int T,
     83               [const 3] int p1,
     84               [static 3] int p2,
     85               [static const 3] int p3
     86             )
     87    ] janes_twin(...) {
     88    }
     89    #endif
     90
     91    // GCC 11+ gives a false warning (-Wvla-parameter) on the valid (C11 ARM p134-135) combination:
     92    // declare with type int[*], define with type int[n].
     93    // https://gcc.gnu.org/bugzilla//show_bug.cgi?id=100420 suggests the internal representation of
     94    // of a[*] is the same as a[0].
     95    // https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wno-vla-parameter explains
     96    // the purpose of -Wvla-parameter is to report conflicts between int[] and int[n], which would
     97    // understandably also include those between int[42] and int[n].
     98    // https://stackoverflow.com/questions/17371645/why-use-an-asterisk-instead-of-an-integer-for-a-vla-array-parameter-of-a-f
     99    // explains the declare-*, define-n pattern.
     100
     101    // To work around the false warning, and keep to this test's purpose of exercising CFA's
     102    // handling of exotic C array syntax, what would ideally be demonstrated as a declaration of
     103    // fm1, followed by its definition, is instead split into fm1x and fm1y.  And similarly for
     104    // fm5.
     105
     106    int fm1x( int, int, int[][*] );
     107    int fm1y( int r, int c, int m[][c] ) {}
     108    int fm2( int r, int c, int (*m)[c] ) {}             // same as fm1
     109E2( int fm3( int r, int c, int m[][static c] ) {}  )    // that's not static
     110E3( int fm4( int r, int c, int m[][] );            )    // m's immediate element type is incomplete
     111    int fm5x( int, int, int[*][*] );                    // same as fm1 decl
     112                                                        #ifndef __cforall
     113    int fm5y( int r, int c, int m[r][c] ) {}            // BUG 276: CFA chokes but should accept
     114                                                        // C: same as fm1 defn
     115                                                        #endif
     116
    50117
    51118int main() {
    52     #pragma GCC warning "Compiled"                      // force non-empty .expect file, NO TABS!!!
     119    #pragma GCC warning "Preprocessor started"          // force non-empty .expect file, NO TABS!!!
    53120}
    54121
  • tests/attributes.cfa

    r34b4268 r24d6572  
    1010// Created On       : Mon Feb  6 16:07:02 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Mar 15 13:53:31 2021
    13 // Update Count     : 38
     12// Last Modified On : Thu Feb 23 20:33:07 2023
     13// Update Count     : 39
    1414//
    1515
     
    2222
    2323// aggregate_name
    24 struct __attribute__(( unused )) {} Dummy;
     24static struct __attribute__(( unused )) {} Dummy;
    2525struct __attribute__(( unused )) Agn1;
    2626struct __attribute__(( unused )) Agn2 {};
  • tests/avltree/avl.h

    r34b4268 r24d6572  
    99// #include <lib.h>
    1010
    11 trait Comparable(T) {
     11forall(T)
     12trait Comparable {
    1213  int ?<?(T, T);
    1314};
  • tests/collections/vector-demo.cfa

    r34b4268 r24d6572  
    143143    assert( v`capacity >  5 && v`length == 5 );
    144144
    145     v[2] = -0.1;  // v is [0.0, 98.6, -0.1, 0.2, 0.3]; iter at -0.1, where only the new memory had that change
     145    v[2] = -0.1f;  // v is [0.0, 98.6, -0.1, 0.2, 0.3]; iter at -0.1, where only the new memory had that change
    146146
    147147    float val3 = iter`val;
  • tests/concurrency/.expect/ctor-check.txt

    r34b4268 r24d6572  
    1 concurrent/ctor-check.cfa:11:1 error: constructors cannot have mutex parameters
     1concurrency/ctor-check.cfa:11:1 error: constructors cannot have mutex parameters
    22?{}: function
    33... with parameters
  • tests/concurrency/barrier/gen_generation_expect.cfa

    r34b4268 r24d6572  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // gen_generation_expect.cfa -- simple 'script' generates the expect file for concurrent/barrier/generation
     7// gen_generation_expect.cfa -- simple 'script' generates the expect file for concurrency/barrier/generation
    88//
    99// Author           : Thierry Delisle
  • tests/concurrency/barrier/generation.cfa

    r34b4268 r24d6572  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // concurrent/barrier/generation.cfa -- simple test that validates barriers by printing
    8 //                                      alphabetical generations
     7// generation.cfa -- simple test that validates barriers by printing alphabetical generations
    98//
    109// Author           : Thierry Delisle
  • tests/concurrency/barrier/last.cfa

    r34b4268 r24d6572  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // concurrent/barrier/last.cfa -- validates barrier's last hook functionality
     7// last.cfa -- validates barrier's last hook functionality
    88//
    99// Author           : Thierry Delisle
  • tests/concurrency/barrier/order.cfa

    r34b4268 r24d6572  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // concurrent/barrier/order.cfa -- validates barriers the return value of
     7// order.cfa -- validates barriers the return value of
    88//                                 barrier block
    99//
  • tests/concurrency/futures/typed.cfa

    r34b4268 r24d6572  
    55thread Server {
    66        int cnt;
    7         future(int) * requests[NFUTURES];
     7        single_future(int) * requests[NFUTURES];
    88};
    99
     
    2424void process( Server & this, int i ) {
    2525        if( this.requests[i] == 0p ) return;
    26         future(int) * f = this.requests[i];
     26        single_future(int) * f = this.requests[i];
    2727        this.requests[i] = 0p;
    2828        this.cnt--;
     
    3030}
    3131
    32 void call( Server & mutex this, future(int) & f ) {
     32void call( Server & mutex this, single_future(int) & f ) {
    3333        for(i; NFUTURES) {
    3434                if( this.requests[i] == 0p ) {
     
    7070
    7171void work(void) {
    72         future(int) mine;
     72        single_future(int) mine;
    7373        call( *the_server, mine );
    7474        wait( mine );
  • tests/concurrency/mutexstmt/locks.cfa

    r34b4268 r24d6572  
    7272
    7373single_acquisition_lock l1;
    74 linear_backoff_then_block_lock l2;
     74exp_backoff_then_block_lock l2;
    7575owner_lock l3;
    7676
  • tests/concurrency/pthread/bounded_buffer.cfa

    r34b4268 r24d6572  
    6363
    6464void *producer( void *arg ) {
    65         Buffer(int) &buf = *(Buffer(int)*)arg;
    66         const int NoOfItems = rand() % 40;
     65    Buffer(int) &buf = *(Buffer(int)*)arg;
     66        const int NoOfItems = prng(*active_thread(), 40);
    6767        int item;
    6868        for ( int i = 1; i <= NoOfItems; i += 1 ) {                     // produce a bunch of items
    69                 item = rand() % 100 + 1;                                                // produce a random number
     69                item = prng(*active_thread(), 1, 101);                  // produce a random number
    7070                //sout | "Producer:" | pthread_self() | " value:" | item;
    7171                insert( buf,item );                                                             // insert element into queue
     
    101101    pthread_mutex_init(&consumer_cnt_lock, NULL);
    102102        // parallelism
    103     srandom( 1003 );
     103    set_seed( 1003 );
    104104
    105105        processor p[5];
  • tests/concurrency/readyQ/barrier_sleeper.cfa

    r34b4268 r24d6572  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // concurrent/readyQ/barrier_sleeper.cfa -- testing the ready-queue
     7// barrier_sleeper.cfa -- testing the ready-queue
    88//
    99// Author           : Thierry Delisle
  • tests/concurrency/readyQ/leader_spin.cfa

    r34b4268 r24d6572  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // concurrent/readyQ/leader_spin.cfa -- validates ready queue fairness
     7// leader_spin.cfa -- validates ready queue fairness
    88//
    99// Author           : Thierry Delisle
  • tests/concurrency/signal/disjoint.cfa

    r34b4268 r24d6572  
    3838
    3939// Use a global struct because the order needs to match with Signaller thread
    40 struct {
     40static struct {
    4141        global_t mut;
    4242        global_data_t data;
  • tests/concurrency/unified_locking/exp_backoff.cfa

    r34b4268 r24d6572  
    11#include <locks.hfa>
    22
    3 #define LOCK clh_lock
     3#define LOCK exp_backoff_then_block_lock
    44#include "mutex_test.hfa"
    55
  • tests/concurrency/unified_locking/locks.cfa

    r34b4268 r24d6572  
    1515condition_variable( owner_lock ) c_o;
    1616
    17 linear_backoff_then_block_lock l;
    18 condition_variable( linear_backoff_then_block_lock ) c_l;
     17exp_backoff_then_block_lock l;
     18condition_variable( exp_backoff_then_block_lock ) c_l;
    1919
    2020fast_block_lock f;
  • tests/concurrency/unified_locking/thread_test.cfa

    r34b4268 r24d6572  
    2525
    2626thread worker {
    27     linear_backoff_then_block_lock * locks;
     27    exp_backoff_then_block_lock * locks;
    2828    bool improved;
    2929};
    3030
    31 void ?{}( worker & w, linear_backoff_then_block_lock * locks, bool improved ) {
     31void ?{}( worker & w, exp_backoff_then_block_lock * locks, bool improved ) {
    3232        w.locks = locks;
    3333    w.improved = improved;
     
    3939    for (int i = 0; i < workBufferSize; i += 1) buffer[i] = rand() % 1024;
    4040    unsigned int lck = rand() % lockCount;
    41     linear_backoff_then_block_lock * curr_lock = &locks[lck];
     41    exp_backoff_then_block_lock * curr_lock = &locks[lck];
    4242    for (unsigned int i = 0; i < num_times; i++) {
    4343        dowork(buffer, work_unlocked);
     
    5151}
    5252
    53 
     53int doOne = 0;
    5454int main(int argc, char* argv[]) {
    5555    switch (argc) {
     56        case 8:
     57            doOne = atoi(argv[7]);
    5658        case 7:
    57             work_unlocked = atoi(argv[5]);
     59            work_unlocked = atoi(argv[6]);
    5860        case 6:
    5961            work_locked = atoi(argv[5]);
    6062        case 5:
    61             num_times = atoi(argv[4]);
     63            total_times = atoi(argv[4]);
    6264        case 4:
    6365            lockCount = atoi(argv[3]);
     
    7274    }
    7375        processor p[threadCount];
    74     linear_backoff_then_block_lock locks[lockCount];
     76    exp_backoff_then_block_lock locks[lockCount];
    7577    worker * worker_arr[taskCount];
    7678    num_times = total_times  / taskCount;
    77 
    78         //printf("Start Test: martin lock simple\n");
    79         clock_t begin = clock();
     79    //printf("%d\n", doOne);
     80        //
     81        //clock_t begin = clock();
     82    if (doOne == 1) {
     83        printf("Start Test: martin lock simple %d\n", num_times);
    8084        for (unsigned int i = 0; i < taskCount; i++) {
    8185        worker_arr[i] = new( locks, false );
     
    8488        delete( worker_arr[i] );
    8589    }
    86         clock_t end = clock();
    87         double time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
    88         printf("norm: %f\n", time_spent);
     90    }
     91        //clock_t end = clock();
     92        //double time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
     93        //printf("norm: %f\n", time_spent);
    8994
    9095    //printf("Start Test: martin lock improved\n");
    91         begin = clock();
     96        //begin = clock();
     97    if (doOne == 2) {
    9298        for (unsigned int i = 0; i < taskCount; i++) {
    9399        worker_arr[i] = new( locks, true );
     
    96102        delete( worker_arr[i] );
    97103    }
    98         end = clock();
    99         time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
    100         printf("improved: %f\n", time_spent);
     104    }
     105        //end = clock();
     106        //time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
     107        //printf("improved: %f\n", time_spent);
    101108}
  • tests/declarationSpecifier.cfa

    r34b4268 r24d6572  
    1010// Created On       : Wed Aug 17 08:21:04 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Apr 30 18:20:36 2019
    13 // Update Count     : 4
     12// Last Modified On : Thu Feb 23 20:53:31 2023
     13// Update Count     : 8
    1414//
    1515
     
    2525short int volatile static const x8;
    2626
    27 const volatile struct { int i; } x10;
    28 const struct { int i; } volatile x11;
    29 struct { int i; } const volatile x12;
    30 static const volatile struct { int i; } x13;
    31 const static struct { int i; } volatile x14;
    32 struct { int i; } static const volatile x15;
    33 struct { int i; } const static volatile x16;
    34 struct { int i; } const volatile static x17;
     27static const volatile struct { int i; } x10;
     28static const struct { int i; } volatile x11;
     29static struct { int i; } const volatile x12;
     30const static struct { int i; } volatile x13;
     31struct { int i; } static const volatile x14;
     32struct { int i; } const static volatile x15;
     33struct { int i; } const volatile static x16;
    3534
    3635const Int volatile x20;
     
    4342Int volatile static const x27;
    4443
    45 const volatile struct { Int i; } x29;
    46 const struct { Int i; } volatile x30;
    47 struct { Int i; } const volatile x31;
    48 static const volatile struct { Int i; } x32;
    49 const static struct { Int i; } volatile x33;
    50 struct { Int i; } static const volatile x34;
    51 struct { Int i; } const static volatile x35;
    52 struct { Int i; } const volatile static x36;
     44static const volatile struct { Int i; } x29;
     45static const struct { Int i; } volatile x30;
     46static struct { Int i; } const volatile x31;
     47const static struct { Int i; } volatile x32;
     48struct { Int i; } static const volatile x33;
     49struct { Int i; } const static volatile x34;
     50struct { Int i; } const volatile static x35;
    5351
    5452_Thread_local int x37;
  • tests/enum_tests/.expect/typedIntEnum.txt

    r34b4268 r24d6572  
    1 0
    2 1
    3 1000
    4 1001
    5 2000
    6 2001
    7 2002
     10=0
     21=1
     31000=1000
     41001=1001
     52000=2000
     62001=2001
     72002=2002
  • tests/enum_tests/pointerEnum.cfa

    r34b4268 r24d6572  
    1111int main() {
    1212    E * v = First;
    13     sout | "v: " | e.x;
     13    // sout | "v: " | e.x;
    1414}
  • tests/enum_tests/typedIntEnum.cfa

    r34b4268 r24d6572  
    1212
    1313int main() {
    14     printf("%d\n", zero);
    15     printf("%d\n", one);
    16     printf("%d\n", thousand);
    17     printf("%d\n", thousand_one);
    18     printf("%d\n", two_thousand);
    19     printf("%d\n", two_thousand_one);
    20     printf("%d\n", two_thousand_two);
     14    printf("0=%d\n", zero);
     15    printf("1=%d\n", one);
     16    printf("1000=%d\n", thousand);
     17    printf("1001=%d\n", thousand_one);
     18    printf("2000=%d\n", two_thousand);
     19    printf("2001=%d\n", two_thousand_one);
     20    printf("2002=%d\n", two_thousand_two);
    2121    return 0;
    2222}
  • tests/errors/.expect/declaration.txt

    r34b4268 r24d6572  
    1 errors/declaration.cfa:16:1 error: duplicate static in declaration of x1: static const volatile short int
     1errors/declaration.cfa:16:1 error: duplicate static storage class(es) in declaration of x1: static const volatile short int
    22
    3 errors/declaration.cfa:17:1 error: conflicting extern & static in declaration of x2: extern const volatile short int
     3errors/declaration.cfa:17:1 error: conflicting extern & static storage classes in declaration of x2: extern const volatile short int
    44
    5 errors/declaration.cfa:18:1 error: conflicting extern & auto, conflicting extern & static, conflicting extern & static, duplicate extern in declaration of x3: extern const volatile short int
     5errors/declaration.cfa:18:1 error: conflicting extern & auto storage classes, conflicting extern & static storage classes, conflicting extern & static storage classes, duplicate extern storage class(es) in declaration of x3: extern const volatile short int
    66
    7 errors/declaration.cfa:19:1 error: duplicate static in declaration of x4: static const volatile instance of const volatile struct __anonymous0
     7errors/declaration.cfa:19:1 error: duplicate static storage class(es) in declaration of x4: static const volatile instance of const volatile struct __anonymous0
    88  with members
    99    i: int
     
    1111
    1212
    13 errors/declaration.cfa:20:1 error: duplicate const, duplicate static, duplicate volatile in declaration of x5: static const volatile instance of const volatile struct __anonymous1
     13errors/declaration.cfa:20:1 error: duplicate const qualifier(s), duplicate static storage class(es), duplicate volatile qualifier(s) in declaration of x5: static const volatile instance of const volatile struct __anonymous1
    1414  with members
    1515    i: int
     
    1717
    1818
    19 errors/declaration.cfa:22:1 error: duplicate static in declaration of x6: static const volatile Int
     19errors/declaration.cfa:22:1 error: duplicate static storage class(es) in declaration of x6: static const volatile Int
    2020
    21 errors/declaration.cfa:24:1 error: duplicate const in declaration of f01: static inline function
     21errors/declaration.cfa:24:1 error: duplicate const qualifier(s) in declaration of f01: static inline function
    2222  with no parameters
    2323  returning const volatile int
    2424
    2525
    26 errors/declaration.cfa:25:1 error: duplicate volatile in declaration of f02: static inline function
     26errors/declaration.cfa:25:1 error: duplicate volatile qualifier(s) in declaration of f02: static inline function
    2727  with no parameters
    2828  returning const volatile int
    2929
    3030
    31 errors/declaration.cfa:26:1 error: duplicate const in declaration of f03: static inline function
     31errors/declaration.cfa:26:1 error: duplicate const qualifier(s) in declaration of f03: static inline function
    3232  with no parameters
    3333  returning const volatile int
    3434
    3535
    36 errors/declaration.cfa:27:1 error: duplicate volatile in declaration of f04: static inline function
     36errors/declaration.cfa:27:1 error: duplicate volatile qualifier(s) in declaration of f04: static inline function
    3737  with no parameters
    3838  returning const volatile int
    3939
    4040
    41 errors/declaration.cfa:28:1 error: duplicate const in declaration of f05: static inline function
     41errors/declaration.cfa:28:1 error: duplicate const qualifier(s) in declaration of f05: static inline function
    4242  with no parameters
    4343  returning const volatile int
    4444
    4545
    46 errors/declaration.cfa:29:1 error: duplicate volatile in declaration of f06: static inline function
     46errors/declaration.cfa:29:1 error: duplicate volatile qualifier(s) in declaration of f06: static inline function
    4747  with no parameters
    4848  returning const volatile int
    4949
    5050
    51 errors/declaration.cfa:30:1 error: duplicate const in declaration of f07: static inline function
     51errors/declaration.cfa:30:1 error: duplicate const qualifier(s) in declaration of f07: static inline function
    5252  with no parameters
    5353  returning const volatile int
    5454
    5555
    56 errors/declaration.cfa:31:1 error: duplicate const, duplicate volatile in declaration of f08: static inline function
     56errors/declaration.cfa:31:1 error: duplicate const volatile qualifier(s) in declaration of f08: static inline function
    5757  with no parameters
    5858  returning const volatile int
    5959
    6060
    61 errors/declaration.cfa:33:1 error: duplicate const, duplicate volatile in declaration of f09: static inline function
     61errors/declaration.cfa:33:1 error: duplicate const volatile qualifier(s) in declaration of f09: static inline function
    6262  with no parameters
    6363  returning const volatile int
    6464
    6565
    66 errors/declaration.cfa:34:1 error: duplicate const, duplicate _Atomic, duplicate _Atomic, duplicate const, duplicate restrict, duplicate volatile in declaration of f09: static inline function
     66errors/declaration.cfa:34:1 error: duplicate const qualifier(s), duplicate _Atomic qualifier(s), duplicate _Atomic qualifier(s), duplicate const restrict volatile qualifier(s) in declaration of f09: static inline function
    6767  with no parameters
    6868  returning const restrict volatile _Atomic int
  • tests/forall.cfa

    r34b4268 r24d6572  
    1010// Created On       : Wed May  9 08:48:15 2018
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun  5 10:06:08 2021
    13 // Update Count     : 36
    14 //
     12// Last Modified On : Thu Feb 23 20:29:59 2023
     13// Update Count     : 91
     14//
     15
     16#include <fstream.hfa>
    1517
    1618void g1() {
    17         forall( T ) T f( T ) {};
    18         void f( int ) {};
    19         void h( void (*p)(void) ) {};
    20 
    21         int x;
    22         void (*y)(void);
    23         char z;
    24         float w;
     19        forall( T ) T f( T p ) { sout | 'f'; return p;  };
     20        void f( int p ) { sout | p; };
     21        void g( void ) { sout | 'g'; };
     22        void h( void (*p)(void) ) { p(); };
     23
     24        int x = 1;
     25        void (*y)(void) = g;
     26        char z = 'a';
     27        float w = 3.5;
    2528
    2629        f( x );
     
    2831        f( z );
    2932        f( w );
     33        h( y );
     34        f( y );
    3035        h( f( y ) );
    3136}
    3237
    3338void g2() {
    34         forall( T ) void f( T, T ) {}
    35         forall( T, U ) void f( T, U ) {}
     39        forall( T ) void f( T, T ) { sout | "fT"; }
     40        forall( T, U ) void f( T, U ) { sout | "fTU"; }
    3641
    3742        int x;
    3843        float y;
    39         int *z;
    40         float *w;
    41 
     44        int * z;
     45        float * w;
     46
     47        f( x, x );
     48        f( y, y );
     49        f( w, w );
    4250        f( x, y );
    4351        f( z, w );
     
    5058
    5159forall( T )
    52 void swap( T left, T right ) {
    53         T temp = left;
    54         left = right;
    55         right = temp;
    56 }
    57 
    58 trait sumable( T ) {
     60void swap( T & left, T & right ) {                                              // by reference
     61    T temp = left;
     62    left = right;
     63    right = temp;
     64}
     65
     66forall( T )
     67[ T, T ] swap( T i, T j ) {                                                             // by value
     68    return [ j, i ];
     69}
     70
     71forall( T ) trait sumable {
    5972        void ?{}( T &, zero_t );                                                        // 0 literal constructor
    6073        T ?+?( T, T );                                                                          // assortment of additions
     
    6477}; // sumable
    6578
    66 forall( T | sumable( T ) )                                              // use trait
     79forall( T | sumable( T ) )                                                              // use trait
    6780T sum( size_t size, T a[] ) {
    6881        T total = 0;                                                                            // initialize by 0 constructor
     
    7285} // sum
    7386
    74 forall( T | { T ?+?( T, T ); T ?++( T & ); [T] ?+=?( T &,T ); } )
     87forall( T | { T ?+?( T, T ); T ?++( T & ); [T] ?+=?( T &, T ); } )
    7588T twice( T t ) {
    7689        return t + t;
     
    8295}
    8396
    84 int fred() {
    85         int x = 1, y = 2, a[10];
     97void fred() {
     98        int x = 1, y = 2, a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    8699        float f;
    87100
     101        sout | x | y;
    88102        swap( x, y );
    89         twice( x );
     103        sout | x | y | nl | swap( x, y );
     104        // [ x, y ] = swap( y, x );
     105        sout | twice( ' ' ) | ' ' | twice( 0hh ) | twice( 1h ) | twice( 0n ) | twice( 2 )
     106                 | twice( 3.2f ) | twice( 3.2 ) | twice( 3.2d ) | twice( 3.2+1.5i ) | twice( x );
    90107        f = min( 4.0, 3.0 );
    91         sum( 10, a );
     108        sout | f | min( 4.0, 3.0 );
     109        sout | sum( 10, a );
    92110}
    93111
     
    177195
    178196forall( T ) struct S { T t; } (int) x, y, z;
    179 forall( T ) struct { T t; } (int) a, b, c;
     197static forall( T ) struct { T t; } (int) a, b, c;
    180198
    181199forall( T ) static forall( S ) {
     
    186204
    187205forall( T ) {
    188         extern "C" {
     206//      extern "C" {
    189207                struct SS { T t; };
    190                 T foo( T ) {}
    191         }
     208                T foo( T p ) { return p; }
     209//      }
    192210}
    193211
     
    195213W(int,int) w;
    196214
    197 int jane() {
     215void jane() {
    198216//      int j = bar( 3, 4 );
    199217        int k = baz( 3, 4, 5 );
    200218        int i = foo( 3 );
     219        sout | k | i;
    201220}
    202221
     
    211230        T t;
    212231        T t2 = t;
     232        sout | &tr | tp;
    213233}
    214234
     
    242262
    243263int main( void ) {
    244     #pragma GCC warning "Compiled"                      // force non-empty .expect file, NO TABS!!!
     264        g1();
     265        g2();
     266        fred();
     267        jane();
    245268}
    246269
  • tests/function-operator.cfa

    r34b4268 r24d6572  
    1010// Created On       : Fri Aug 25 15:21:11 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Apr 11 18:27:45 2019
    13 // Update Count     : 10
     12// Last Modified On : Sat Feb 25 07:26:10 2023
     13// Update Count     : 12
    1414//
    1515
     
    2222
    2323// STL-like Algorithms
    24 trait Assignable(T &, U &) { T ?=?(T &, U); };
    25 trait Copyable(T &) { void ?{}(T &, T); };
    26 trait Destructable(T &) { void ^?{}(T &); };
     24forall(T &, U &)
     25trait Assignable { T ?=?(T &, U); };
     26forall(T &)
     27trait Copyable { void ?{}(T &, T); };
     28forall(T &)
     29trait Destructable { void ^?{}(T &); };
    2730
    2831trait Iterator(iter & | sized(iter) | Copyable(iter) | Destructable(iter), T) {
  • tests/include/includes.cfa

    r34b4268 r24d6572  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 22 08:27:20 2022
    13 // Update Count     : 779
     12// Last Modified On : Wed Feb 22 10:16:58 2023
     13// Update Count     : 811
    1414//
    1515
     
    7272#include <gshadow.h>
    7373#include <iconv.h>
    74 #include <ifaddrs.h>
     74//#include <ifaddrs.h>                                                                  // causes warning messages that break the build
    7575#include <inttypes.h>
    7676#include <langinfo.h>
     
    9797#include <ncurses_dll.h>                                                                // may not be installed, comes with ncurses
    9898#endif
    99 #include <netdb.h>
     99//#include <netdb.h>
    100100#include <nl_types.h>
    101101#include <nss.h>
     
    111111#include <pwd.h>
    112112#include <regex.h>
    113 #include <resolv.h>
     113//#include <resolv.h>
    114114#include <re_comp.h>
    115115#include <sched.h>
     
    170170#endif // __CFA__
    171171
    172 int main( int argc, char const * argv[] ) {
     172int main() {
    173173    #pragma GCC warning "Compiled"                                                      // force non-empty .expect file, NO TABS!!!
    174174}
  • tests/io/comp_basic.cfa

    r34b4268 r24d6572  
    2626#include <unistd.h>
    2727
    28 struct {
     28static struct {
    2929        barrier & bar;
    3030        int pipe[2];
    31 
    3231} globals;
    3332
  • tests/io/comp_fair.cfa

    r34b4268 r24d6572  
    2626#include <unistd.h>
    2727
    28 struct {
     28static struct {
    2929        barrier & bar;
    3030        int pipe[2];
    31 
    3231} globals;
    3332
  • tests/linking/mangling/header.hfa

    r34b4268 r24d6572  
    88extern name_but_a_typedefed_t a_typedefed_global;
    99
    10 extern struct /* anonymous */ {
    11         int some_int;
    12         int some_other_int;
    13 } a_global_with_no_type;
     10// Must be extern C to prevent name mangling.
     11extern "C" {
     12        extern struct /* anonymous */ {
     13                int some_int;
     14                int some_other_int;
     15        } a_global_with_no_type;
     16}
  • tests/linking/mangling/lib.cfa

    r34b4268 r24d6572  
    33name_but_a_typedefed_t a_typedefed_global;
    44
    5 struct {
    6         int some_int;
    7         int some_other_int;
    8 } a_global_with_no_type;
     5// Must be extern C to prevent name mangling.
     6extern "C" {
     7        // This declaration is necessary to create an instance of a_global_with_no_type.
     8        // typeof is a trick to get a_global_with_no_type's type because its type is anonymous.
     9        // Otherwise C generates conflicting types for a_global_with_no_type in .h and .c
     10        // because C uses name equivalence and the two anonymous types cannot have the same name.
     11        typeof(a_global_with_no_type) a_global_with_no_type;
     12}
  • tests/linking/mangling/main.cfa

    r34b4268 r24d6572  
    11#include <fstream.hfa>
    22
    3 struct { int a; } test; //purposefully before the include
     3static struct { int a; } test; // purposefully before the include to force anonymous name numbering
    44
    55#include "header.hfa"
     
    1313
    1414        sout | "Done!";
    15 
    16         return 0;
    1715}
  • tests/pybin/settings.py

    r34b4268 r24d6572  
    126126        global archive
    127127        global install
     128        global invariant
    128129
    129130        global continue_
     
    140141        all_install  = [Install(o)      for o in list(dict.fromkeys(options.install))]
    141142        archive      = os.path.abspath(os.path.join(original_path, options.archive_errors)) if options.archive_errors else None
     143        invariant    = options.invariant
    142144        continue_    = options.continue_
    143145        dry_run      = options.dry_run # must be called before tools.config_hash()
  • tests/quotedKeyword.cfa

    r34b4268 r24d6572  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Feb  7 19:07:07 2020
    13 // Update Count     : 25
     12// Last Modified On : Thu Feb 23 20:31:05 2023
     13// Update Count     : 26
    1414//
    1515
    1616#include <fstream.hfa>
    1717
    18 struct {
     18static struct {
    1919        int ``otype;
    2020        int ``struct;
  • tests/sum.cfa

    r34b4268 r24d6572  
    1111// Created On       : Wed May 27 17:56:53 2015
    1212// Last Modified By : Peter A. Buhr
    13 // Last Modified On : Thu Aug  5 21:27:25 2021
    14 // Update Count     : 346
     13// Last Modified On : Fri Feb 24 22:52:12 2023
     14// Update Count     : 347
    1515//
    1616
     
    1818#include <stdlib.hfa>
    1919
    20 trait sumable( T ) {
     20forall( T )
     21trait sumable {
    2122        void ?{}( T &, zero_t );                                                        // 0 literal constructor
    2223        void ?{}( T &, one_t );                                                         // 1 literal constructor
  • tests/test.py

    r34b4268 r24d6572  
    114114        parser.add_argument('--install', help='Run all tests based on installed binaries or tree binaries', type=comma_separated(yes_no), default='no')
    115115        parser.add_argument('--continue', help='When multiple specifications are passed (debug/install/arch), sets whether or not to continue if the last specification failed', type=yes_no, default='yes', dest='continue_')
     116        parser.add_argument('--invariant', help='Tell the compiler to check invariants while running.', action='store_true')
    116117        parser.add_argument('--timeout', help='Maximum duration in seconds after a single test is considered to have timed out', type=int, default=180)
    117118        parser.add_argument('--global-timeout', help='Maximum cumulative duration in seconds after the ALL tests are considered to have timed out', type=int, default=7200)
     
    172173        test.prepare()
    173174
     175        # extra flags for cfa to pass through make.
     176        cfa_flags = 'CFAFLAGS=--invariant' if settings.invariant else None
     177
    174178        # ----------
    175179        # MAKE
     
    177181        # build, skipping to next test on error
    178182        with Timed() as comp_dur:
    179                 make_ret, _, _ = make( test.target(), output_file=subprocess.DEVNULL, error=out_file, error_file = err_file )
     183                make_ret, _, _ = make(test.target(), flags=cfa_flags, output_file=subprocess.DEVNULL, error=out_file, error_file=err_file)
    180184
    181185        # ----------
Note: See TracChangeset for help on using the changeset viewer.