D issues are now tracked on GitHub. This Bugzilla instance remains as a read-only archive.
Issue 9847 - ICE on CTFE literal cast(uint) on DMD 2.062
Summary: ICE on CTFE literal cast(uint) on DMD 2.062
Status: RESOLVED DUPLICATE of issue 9775
Alias: None
Product: D
Classification: Unclassified
Component: dmd (show other issues)
Version: D2
Hardware: x86_64 All
: P2 regression
Assignee: No Owner
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-03-31 11:27 UTC by Øivind
Modified: 2013-04-02 07:37 UTC (History)
1 user (show)

See Also:


Attachments
D-code and Makefile reprodusing ICE issue that appeared in DMD 2.062 (2.17 KB, application/x-gzip)
2013-03-31 11:27 UTC, Øivind
Details

Note You need to log in before you can comment on or make changes to this issue.
Description Øivind 2013-03-31 11:27:03 UTC
Created attachment 1204 [details]
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 Iain Buclaw 2013-03-31 14:21:18 UTC
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 Kenji Hara 2013-04-02 04:48:59 UTC
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 Iain Buclaw 2013-04-02 04:59:17 UTC
(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 Iain Buclaw 2013-04-02 05:26:30 UTC
(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 Kenji Hara 2013-04-02 07:37:53 UTC
(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 ***