summaryrefslogtreecommitdiff
path: root/support/regression/COVERAGE
blob: e06e497761e77ae270a37ebdb0d4f0af74fe8ef8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
Primary goal: good coverage of the backend code generators.  The
following list was derived from the token list in SDCC.lex

Follows is a list of tokens and the test case that covers them.  If no
case is listed then the token is not yet covered.  Special cases are
listed under the token.  If the token is listed as covered then the
special cases are also covered.

The cases generally assume that on stack local variables and
parameters are accessed using the same methods and hence doesn't test
stack based parameters.

Todo
Operations:
        Shifts:
                Common cases:
                        For byte multiples (8, 16...)
                        For more than the word size
                        For negative shifts
                        For shift of 1
                >>=
                <<=
                >>
                <<

        Comparison:
                Common cases:
                        Around zero
                        Constants on either side (reversal)
                <=
                >=
                ==
                !=
                <
                >

        Basic arithmetic:
                Common cases:
                        For small constants (<3)
                ++
                --
                +=
                -=
                -
                +

        Mul/Div/Mod arithmetic:
                Common cases:
                        For powers of 2                               
                *=
                /=
                %=
                *
                /
                %

        Bitwise operations:
                &=
                ^=
                |=
                &
                ~
                ^
                |

        Logical operations:
                &&
                ||
                !

        Misc:
                ->
                        Test that members are not cached across
function calls
                =
                .
                ?
                casts
                        Test sign extension
                arrays
                        Test a[a[const]]
                pointers

        Language features (untestable):
                ;
                {
                }
                ,
                :
                (
                )
                [
                ]

Keywords:
        Specificers:
                const
                register
                signed
                static
                unsigned
                volatile

        Conditional:
                break
                case
                default
                else
                goto
                if
                switch

        Types:
                char
                double
                float
                int
                long
                short
                void

        Iterative:
                continue
                do
                for
                while

        Language features:
                enum
                extern
                sizeof
                struct
                typedef
                union

        Misc:
                return

        Unknown:
                auto
                interrupt

Optional keywords:
        banked
        bit
        flash
        code
        critical
        near
        data
        eeprom
        idata
        nonbanked
        pdata
        reentrant
        sbit
        sfr
        using
        sram
        xdata
        far
        _code
        _flash
        _eeprom
        _generic
        _idata
        _data
        _near
        _pdata
        _sram
        _xdata

Language features:
        va args (...)

Optional:
        Constants:
        	Hex, dec, oct
                Character constants	'x'
                Specials		'\n', '\0', ...