D issues are now tracked on GitHub. This Bugzilla instance remains as a read-only archive.
Issue 12498 - ICE: while(string) causes compiler to crash during CTFE
Summary: ICE: while(string) causes compiler to crash during CTFE
Status: RESOLVED FIXED
Alias: None
Product: D
Classification: Unclassified
Component: dmd (show other issues)
Version: D2
Hardware: All All
: P2 normal
Assignee: No Owner
URL:
Keywords: ice, pull
Depends on:
Blocks:
 
Reported: 2014-03-31 04:48 UTC by Olav Lindekleiv
Modified: 2014-04-03 06:09 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this issue.
Description Olav Lindekleiv 2014-03-31 04:48:35 UTC
Example: http://dpaste.dzfl.pl/31b055067ef4

This fails because the while is being checked against a string. Replace "enum" with "string" in main, and it compiles and executes at runtime.

I also posted this to the forums, which contains the link to a longer example (after Dustmite, but before manual cleanups): http://forum.dlang.org/thread/jpkvrfzooezplmckofjt@forum.dlang.org#post-qxaqnmoifiubktfuyjcw:40forum.dlang.org

It works on LDC 1.076 and DMD 2.x Git (cfb5842b49) (how old is that?), according to Dpaste, but not on DMD 2.065 (both Dpaste and my Ubuntu 64bit).

- Olav.
Comment 1 Andrej Mitrovic 2014-03-31 05:17:04 UTC
Thanks for the reduced sample, but in the future please paste code samples inline (dpaste can sometimes go offline):

-----
string a()
{
    string b;
    while (b) { } // ICE
    return "";
}

void main()
{
    enum t = a();
    string x = t;
}
-----

$ dmd test.d
-----
test.d(12):        called from here: a()
test.d(12):        called from here: a()
__error
DMD v2.066 DEBUG
[] error Internal error: e2ir.c 858
-----
Comment 3 github-bugzilla 2014-04-03 05:47:58 UTC
Commits pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/fa9efd8a5e9df74209c3957ab2f15c834a8a798c
fix Issue 12498 - ICE: while(string) causes compiler to crash during CTFE

https://github.com/D-Programming-Language/dmd/commit/2c4d8ad711ccb7c94d349830523dd500580b0130
Merge pull request #3422 from 9rnsr/fix12498

Issue 12498 - ICE: while(string) causes compiler to crash during CTFE