[Issue 10942] New: ICE on 1087+ initializers (Internal error: backend\cgcv.c 203)
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Sep 1 13:41:26 PDT 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10942
Summary: ICE on 1087+ initializers (Internal error:
backend\cgcv.c 203)
Product: D
Version: D2
Platform: All
OS/Version: Windows
Status: NEW
Keywords: ice
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: andrej.mitrovich at gmail.com
--- Comment #0 from Andrej Mitrovic <andrej.mitrovich at gmail.com> 2013-09-01 13:41:25 PDT ---
Testing in 2.064 git-head:
-----
import std.string;
string getEnum(size_t count)
{
string en;
en ~= "enum KeyCode\n { \n";
foreach (i; 0 .. count)
{
en ~= format(" memb_%s = %s,\n", i+1, i+1);
}
en ~= "} ";
return en;
}
// Linker warning: Warning 161: Unknown CV version, ignored
// mixin(getEnum(1024));
// ICE
// mixin(getEnum(1087));
void main() { }
-----
Uncomment the first mixin to start getting linker warnings. Uncomment the
second one instead and an ICE is emitted:
Internal error: backend\cgcv.c 203
I ran into this while translating keycodes from another GUI library. It has
just over 1100 keycodes, and I wanted to put them all in one KeyCode enum.
I can also recreate this with structs and classes, so it's not specific to
enums (e.g. a struct with 1087 'static' fields). The workaround is to make the
keycodes all manifest constants, e.g.:
-----
enum memb_1 = 1;
enum memb_2 = 2;
enum memb_3 = 3;
...
-----
However this does lose me the ability to give the keycodes a single type to
group them under.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list