[Issue 15538] wrong code with switch
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Tue Aug 9 08:02:03 PDT 2016
https://issues.dlang.org/show_bug.cgi?id=15538
ag0aep6g at gmail.com changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |ag0aep6g at gmail.com
Summary|final switch statement |wrong code with switch
|raises an exception even |
|though all cases are |
|covered under certain |
|conditions |
--- Comment #4 from ag0aep6g at gmail.com ---
Reduced a bit more:
----
struct S
{
int a = 0;
int b = 1;
}
int f1(int a)
{
switch (a)
{
case 0: return 10;
case 1: return 20;
case 2: return 30;
case 3: return 40;
default: return 99;
}
}
int f2(S s)
{
return f1(s.a);
}
void main()
{
S s;
assert(f1(s.a) == 10); /* passes */
assert(f2(s) == 10); /* fails */
}
----
(In reply to Sobirari Muhomori from comment #3)
> Does optimization flag -O affect the behavior?
No. -inline has an effect, presumably because f2 is inlined.
--
More information about the Digitalmars-d-bugs
mailing list