digitalmars.D.bugs - [Issue 5708] New: Error in std.typecons when -release, -inline, and -noboundscheck are all enabled
- d-bugmail puremagic.com (75/75) Mar 05 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
- d-bugmail puremagic.com (17/17) Mar 05 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
- d-bugmail puremagic.com (12/12) Mar 05 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
- d-bugmail puremagic.com (13/13) Mar 05 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
- d-bugmail puremagic.com (7/8) Mar 05 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
- d-bugmail puremagic.com (20/20) Mar 06 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
- d-bugmail puremagic.com (19/19) Mar 06 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
- d-bugmail puremagic.com (20/20) Mar 06 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
- d-bugmail puremagic.com (13/13) Mar 15 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
- d-bugmail puremagic.com (11/11) Apr 08 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
- d-bugmail puremagic.com (17/19) Apr 08 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
- d-bugmail puremagic.com (11/11) May 29 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
- d-bugmail puremagic.com (7/9) May 29 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
- d-bugmail puremagic.com (7/7) May 29 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
- d-bugmail puremagic.com (10/10) May 29 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
- d-bugmail puremagic.com (19/19) May 30 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
- d-bugmail puremagic.com (19/19) Jun 26 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5708
http://d.puremagic.com/issues/show_bug.cgi?id=5708 Summary: Error in std.typecons when -release, -inline, and -noboundscheck are all enabled Product: D Version: unspecified Platform: All OS/Version: All Status: NEW Severity: major Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: jmdavisProg gmx.com --- Comment #0 from Jonathan M Davis <jmdavisProg gmx.com> 2011-03-05 17:00:59 PST --- From Tom on D.Learn (and I've confirmed it on Linux with both -m32 and -m64): Minimal test case: import std.stdio; import std.conv; int main(string[] args) { int[string] t; writeln(text(t)); return 0; } Tried: dmd -O -release -inline -noboundscheck -c -Isrc src\main.d -> ERROR dmd -release -inline -noboundscheck -c -Isrc src\main.d -> ERROR dmd -O -inline -noboundscheck -c -Isrc src\main.d -> OK dmd -O -release -noboundscheck -c -Isrc src\main.d -> OK dmd -O -release -inline -c -Isrc src\main.d -> OK Where ERROR is: E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): expression expected, not 'EOF' E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ']' E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ')' following template argument list E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ']' E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ')' following template argument list E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ']' E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ')' following template argument list E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ']' E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ')' following template argument list E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ']' E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ')' following template argument list E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ']' E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ')' following template argument list E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ']' E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ')' following template argument list E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ']' E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ')' following template argument list E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ']' E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ')' following template argument list E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ']' E:\d\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(364): found 'EOF' when expecting ')' following template argument list -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 05 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5708 bearophile_hugs eml.cc changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bearophile_hugs eml.cc --- Comment #1 from bearophile_hugs eml.cc 2011-03-05 17:19:25 PST --- Problem confirmed on Windows, DMD 2.052, compiled with: -inline -release -noboundscheck A bit reduced code: import std.conv: to; void main() { int[string] aa; to!string(aa); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 05 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5708 --- Comment #2 from bearophile_hugs eml.cc 2011-03-05 17:39:42 PST --- More reduction: import std.conv: to; void main() { int[int] aa; foreach (v; aa) to!string(""); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 05 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5708 --- Comment #3 from Jonathan M Davis <jmdavisProg gmx.com> 2011-03-05 17:59:42 PST --- Well, given the error, it involves creating a tuple, which none of the code here is doing directly, so in theory, it should be possible to reduce it to code which creates a tuple, but I don't know how you'd do that in this case. I assume that v in the foreach loop is a tuple of the key and value, and that's probably where the problem is, but I don't use associative arrays all that often, and when I do, I rarely iterate over them, so I'm not sure. Regardless, if you're really trying to reuduce it, in theory, you should be able to reduce it down to the creation of a tuple with a particular set of types. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 05 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5708 --- Comment #4 from bearophile_hugs eml.cc 2011-03-05 18:41:43 PST --- (In reply to comment #3)I assume that v in the foreach loop is a tuple of the key and value,It's just a value, so it's an int. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 05 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5708 kennytm gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kennytm gmail.com --- Comment #5 from kennytm gmail.com 2011-03-06 00:43:01 PST --- It has nothing to do with the AA. Also, -inline alone is actually enough to trigger this bug. This seems to be a problem in string pooling in compile time. import std.conv; import std.typecons; void ik(T,U)(T t, U u) { Tuple!(T,U) x; } pragma(msg, ik!(string,string)); void main() { () { to!string("lit"); } (); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 06 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5708 --- Comment #6 from kennytm gmail.com 2011-03-06 00:53:53 PST --- Further removing the Tuple: import std.conv; void ik(T)(T) { enum a = to!string("foo") ~ to!string("bar"); static assert(a == "foobar"); } alias ik!int ik2; void main() { cast(void) () { to!string("lit"); }; } As of 2.052 it asserts: ~/Downloads:911$ dmd -inline y.d y.d(5): Error: static assert ("foofoo" == "foobar") is false y.d(7): instantiated from here: ik!(int) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 06 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5708 --- Comment #7 from kennytm gmail.com 2011-03-06 01:02:07 PST --- Further removing all Phobos dependency: string b(string s) { return s; } string a(string s) { return b(s); } void ik(T)(T) { enum p = a("foo"); enum q = a("bar"); static assert(q == "bar"); } alias ik!int ik2; void main() { cast(void) () { a("lit"); }; } Currently asserts: y.d(7): Error: static assert ("foo" == "bar") is false y.d(9): instantiated from here: ik!(int) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 06 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5708 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |clugdbug yahoo.com.au Summary|Error in std.typecons when |Incorrect string constant |-release, -inline, and |folding with -inline |-noboundscheck are all | |enabled | Severity|major |critical -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 15 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5708 Nick Sabalausky <cbkbbejeap mailinator.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |cbkbbejeap mailinator.com --- Comment #8 from Nick Sabalausky <cbkbbejeap mailinator.com> 2011-04-08 03:33:16 PDT --- Don's still-in-progress CTFE overhaul seems to fix this: https://github.com/donc/dmd/tree/ctfemem -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 08 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5708 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED --- Comment #9 from Don <clugdbug yahoo.com.au> 2011-04-08 21:22:35 PDT --- (In reply to comment #8)Don's still-in-progress CTFE overhaul seems to fix this: https://github.com/donc/dmd/tree/ctfememYes, it fixes almost all CTFE bugs involving arrays. Fixed. D1: https://github.com/D-Programming-Language/dmd/commit/ef2a0f1da10331c4de102ca3e029ea1c1c1a46bf D2: https://github.com/D-Programming-Language/dmd/commit/0219a5f0dcc88076759a4c472582954d0fb804b0 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 08 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5708 Jimmy Cao <jcao219 gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jcao219 gmail.com --- Comment #10 from Jimmy Cao <jcao219 gmail.com> 2011-05-29 19:02:16 PDT --- It doesn't seem like this is fixed in dmd 2.053, but it should be according to the changelog. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 29 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5708 --- Comment #11 from Don <clugdbug yahoo.com.au> 2011-05-29 21:19:24 PDT --- (In reply to comment #10)It doesn't seem like this is fixed in dmd 2.053, but it should be according to the changelog.Can you describe what's failing? The test in comment 7 works for me. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 29 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5708 --- Comment #12 from Jimmy Cao <jcao219 gmail.com> 2011-05-29 21:31:41 PDT --- The test in comment 7 asserts for me. I'm using dmd 2.053 on Windows. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 29 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5708 --- Comment #13 from Jimmy Cao <jcao219 gmail.com> 2011-05-29 22:32:24 PDT --- It doesn't work on Fedora 15 either. I'm using dmd 2.053 directly from the zip file on the digitalmars site (for both Fedora 15 and Windows). Don, is your dmd built from source? Maybe there's a difference between mine and yours. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 29 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5708 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|FIXED | --- Comment #14 from Don <clugdbug yahoo.com.au> 2011-05-30 07:54:25 PDT --- I think there was something wrong with that test case, it wasn't instantiating the template. Here's a reduced test case: string b(string s) { return s; } string a(string s) { return b(s); } void bug5708() { void m() { a("lit"); } static assert(a("foo") == "foo"); static assert(a("bar") == "bar"); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 30 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5708 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |RESOLVED Resolution| |FIXED Summary|Incorrect string constant |[CTFE] Incorrect string |folding with -inline |constant folding with | |-inline --- Comment #15 from Don <clugdbug yahoo.com.au> 2011-06-26 14:56:40 PDT --- It was accidentally fixed in this commit: 6072 - [CTFE] Regression(git master): Cannot declare variable inside an 'if' condition which actually fixed the treatment of comma expressions in CTFE. https://github.com/D-Programming-Language/dmd/commit/1bcae90e09f5eb6988fcd6df4309a137c9901084 I'm adding this to the test suite so it stays fixed. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 26 2011