digitalmars.D.bugs - [Issue 5238] New: PATCH: fix return of uninitialised var in interpret.c
- d-bugmail puremagic.com (20/20) Nov 18 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5238
- d-bugmail puremagic.com (11/11) Nov 18 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5238
- d-bugmail puremagic.com (20/20) Nov 18 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5238
- d-bugmail puremagic.com (10/10) Nov 18 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5238
- d-bugmail puremagic.com (19/19) Nov 18 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5238
- d-bugmail puremagic.com (11/24) Nov 19 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5238
- d-bugmail puremagic.com (10/10) Dec 07 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5238
- d-bugmail puremagic.com (12/12) Dec 08 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5238
http://d.puremagic.com/issues/show_bug.cgi?id=5238
Summary: PATCH: fix return of uninitialised var in interpret.c
Product: D
Version: D2
Platform: Other
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody puremagic.com
ReportedBy: s.d.hammett googlemail.com
---
Created an attachment (id=820)
PATCH: fix return of uninitialised var in interpret.c
As summary:
triggered by test/runnable/interpret.d, line 2034
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 18 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5238
Brad Roberts <braddr puremagic.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
mime type| |
patch| |
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 18 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5238
Brad Roberts <braddr puremagic.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |braddr puremagic.com
---
With this patch applied on my system, I still fail to pass runnable/interpret.d
with -O, but now a few lines later at 2110:
2106 int goodfoo3()
2107 {
2108 S[4] w = void; // uninitialized array of structs
2109 w[$-2].x = 217; // initialize one member
2110 return w[2].x;
2111 }
2112 static assert(goodfoo3()==217);
Simon, did you find this due to a failure with no changes to interpret.d or
with -O added to the set of compilation flags to test?
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 18 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5238 --- changing 2109 below to just w[2] rather than w[$-2] (same array index) makes that problem go away. And with that change, the entire test passes, which is great. Just leaves one bug to find. :) Oh, and the error is: runnable/interpret.d(2110): Error: variable w used before set -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Nov 18 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5238
---
Created an attachment (id=821)
changes to runnable/interpret.d
The problem is with the optimizer, not ctfe. Switching to this form, so that
there's no code for the optimizer to chew on and complain about works:
static assert(is(typeof(Compileable!(
(){
S[4] w = void; // uninitialized array of structs
w[$-2].x = 217; // initialize one member
return w[2].x;
}()).OK
)));
I'll file a separate bug report for that.
Adding a patch for runnable/interpret.d to be applied in addition to simon's
changes.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 18 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5238
---
With this patch applied on my system, I still fail to pass runnable/interpret.d
with -O, but now a few lines later at 2110:
2106 int goodfoo3()
2107 {
2108 S[4] w = void; // uninitialized array of structs
2109 w[$-2].x = 217; // initialize one member
2110 return w[2].x;
2111 }
2112 static assert(goodfoo3()==217);
Simon, did you find this due to a failure with no changes to interpret.d or
with -O added to the set of compilation flags to test?
Neither.
I've build DMD with Visual studio; the vc compiler does a pretty good
job of detected these sorts of bugs in debug builds.
I'll run the rest of the tests when I get home, see if there are any
other gotchas lurking.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 19 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5238
Walter Bright <bugzilla digitalmars.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |bugzilla digitalmars.com
15:20:17 PST ---
http://www.dsource.org/projects/dmd/changeset/791
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 07 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5238
Walter Bright <bugzilla digitalmars.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
17:35:55 PST ---
Marking this as fixed since it passes the test suite, including the revised
interpret.d
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 08 2010









d-bugmail puremagic.com 