Denis Koroskin wrote:
On Mon, 06 Jul 2009 14:12:40 +0400, Walter Bright
<[email protected]> wrote:
Denis Koroskin wrote:
Does it compare on case-by-case basis? Up to 256 comparisons?
What do you mean? Obj2asm will show what it is doing.
I mean, will it translate
switch (i) {
case 0:
..
case 9:
doSomething();
}
into
if (i == 0 || i == 1 || i == 2 || etc) doSomething();
or into
if (i >=0 || i <= 9) doSomething();
I'm sure it translate it to:
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
That's obvious from the "maximum of 256 cases allowed".
And also you can see that in the source code. :)
Statement *CaseRangeStatement::semantic(Scope *sc)
...
/* This works by replacing the CaseRange with an array of Case's.
*
* case a: .. case b: s;
* =>
* case a:
* [...]
* case b:
* s;
*/