Bug 10942 – ICE on 1087+ initializers (Internal error: backend\cgcv.c 203)

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
Windows
Creation time
2013-09-01T13:41:00Z
Last change time
2013-10-08T22:02:52Z
Keywords
ice
Assigned to
nobody
Creator
andrej.mitrovich

Comments

Comment #0 by andrej.mitrovich — 2013-09-01T13:41:25Z
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.
Comment #1 by k.hara.pg — 2013-10-01T19:30:25Z
To reproduce errors, -g switch is necessary. > // Linker warning: Warning 161: Unknown CV version, ignored > // mixin(getEnum(1024)); $ dmd -g -run test DMD v2.064 DEBUG OPTLINK (R) for Win32 Release 8.00.12 Copyright (C) Digital Mars 1989-2010 All rights reserved. http://www.digitalmars.com/ctg/optlink.html test.obj(test) Warning 161: Unknown CV version, ignored > // ICE > // mixin(getEnum(1087)); $ dmd -g -run test DMD v2.064 DEBUG Internal error: backend\cgcv.c 203
Comment #2 by bugzilla — 2013-10-01T22:34:36Z
Comment #3 by github-bugzilla — 2013-10-08T21:31:55Z
Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/3f1ae3ce0943678840e6066692b2124d86ba91a3 fix Issue 10942 - ICE on 1087+ initializers (Internal error: backend\cgcv.c 203) https://github.com/D-Programming-Language/dmd/commit/81249a39dc8953537455ed7d7e6109b721e09c78 Merge pull request #2614 from WalterBright/fix10942 fix Issue 10942 - ICE on 1087+ initializers (Internal error: backend\cgc...