Bug 9847 – ICE on CTFE literal cast(uint) on DMD 2.062

Status
RESOLVED
Resolution
DUPLICATE
Severity
regression
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
x86_64
OS
All
Creation time
2013-03-31T11:27:00Z
Last change time
2013-04-02T07:37:53Z
Assigned to
nobody
Creator
oivind.loe

Attachments

IDFilenameSummaryContent-TypeSize
1204dmd-ice.tar.gzD-code and Makefile reprodusing ICE issue that appeared in DMD 2.062application/x-gzip2225

Comments

Comment #0 by oivind.loe — 2013-03-31T11:27:03Z
Created attachment 1204 D-code and Makefile reprodusing ICE issue that appeared in DMD 2.062 I have tested the attached code on DMD 2.060 and 2.061, and there it does not give ICE, so this is a regression. At this point, ICE is also present on 'master'. Attached is a testcase reduced with 'dustmite'. It produces some other errors as well because of the reduction, but please disregard them. The exact same ICE appears in my non-reduced program. Extract and run with "make clean && make" produces: Cleaning... Compiling: src/main.d -> build/debug/src/main.o src/boss/core/addr.d(9): Error: undefined identifier procId, did you mean alias tProcId? src/boss/core/annotstruct.d(3): Error: no identifier for declarator index src/boss/core/annotstruct.d(3): Error: semicolon expected, not 'EOF' src/boss/core/annotstruct.d(3): Error: undefined identifier index src/boss/core/annotstruct.d(3): Error: constructor addr.Addr.this (_error_, uint) is not callable using argument types (uint,uint) src/boss/core/addr.d(6): Error: Internal Compiler Error: CTFE literal cast(uint)PROC_INVALID dmd: ctfeexpr.c:353: Expression* copyLiteral(Expression*): Assertion `0' failed. Aborted (core dumped)
Comment #1 by ibuclaw — 2013-03-31T14:21:18Z
Further reduction: ---- import std.array; template MsgMixin() { mixin annotStructMembers!(MsgHeader.init); } template MsgReqMixin(T ...) { mixin MsgMixin!T; } template annotStructMembers(T ...) { mixin(mixinMembers!T); } struct MsgHeader { alias uint tProcId; alias uint tNodeId; const PROC_INVALID = 0; tProcId m_procId = PROC_INVALID; tNodeId NODE_SELF; this(procId, tNodeId) {} } struct MsgLogFlush { mixin MsgReqMixin; } Ret[] iterAnnotStruct(Ret, alias Op, int index, string member, T ...)() { return [Op!(index, member, T).value]; } string mixinMembers(T ...)() { struct Op(V ...) { const value = V[0].stringof ~ V[1] ~ " = " ~ V[2].stringof; } return join(iterAnnotStruct!(string, Op, 0, "", T)); } ---- Regards Iain
Comment #2 by k.hara.pg — 2013-04-02T04:48:59Z
Sorry I cannot reproduce the bug. - Original sources in attached file does not work with dmd-make or MSYS GNU make. - Reduced test case by Iain does not cause ICE. But, this seems to me a duplicate of bug 9775 (the internal error file and error is same).
Comment #3 by ibuclaw — 2013-04-02T04:59:17Z
(In reply to comment #2) > Sorry I cannot reproduce the bug. > - Original sources in attached file does not work with dmd-make or MSYS GNU > make. > - Reduced test case by Iain does not cause ICE. > > But, this seems to me a duplicate of bug 9775 (the internal error file and > error is same). Did you test with the development branch or the most recent release?
Comment #4 by ibuclaw — 2013-04-02T05:26:30Z
(In reply to comment #3) > (In reply to comment #2) > > Sorry I cannot reproduce the bug. > > - Original sources in attached file does not work with dmd-make or MSYS GNU > > make. > > - Reduced test case by Iain does not cause ICE. > > > > But, this seems to me a duplicate of bug 9775 (the internal error file and > > error is same). > > Did you test with the development branch or the most recent release? Also, I found that the order of code affected whether or nor the bug shows itself as well, so you could try testing that too.
Comment #5 by k.hara.pg — 2013-04-02T07:37:53Z
(In reply to comment #3) > Did you test with the development branch or the most recent release? Ah, OK. I had used git head, and I reproduced the problem with 2.062 release. And I confirmed that this is really a dup of 9775. *** This issue has been marked as a duplicate of issue 9775 ***