Bug 11223 – inline ice with tuple assignment and if/else
Status
RESOLVED
Resolution
FIXED
Severity
regression
Priority
P4
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2013-10-10T21:23:00Z
Last change time
2013-10-12T12:42:12Z
Keywords
ice, pull
Assigned to
nobody
Creator
code
Comments
Comment #0 by code — 2013-10-10T21:23:13Z
cat > bug.d << CODE
struct Tuple(T...)
{
T values;
void opAssign(Tuple rhs)
{
if (0)
values = rhs.values;
else
assert(0);
}
}
void bug()
{
Tuple!string tmp;
tmp = Tuple!string();
}
CODE
dmd -c -inline bug
----
glue.c:1265: virtual unsigned int Type::totym(): Assertion `0' failed.
----
I reduced that test case from the vibe.d source code. The ICE is triggered by the opAssign in std.typecons.Tuple so this might affects a lot of code and fixing the regression is very important.