www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Strange error

reply "Temtaime" <temtaime gmail.com> writes:
Hello guys !
I'm found strange error when compiling following code:

http://dpaste.1azy.net/b40ce9a4

The error is:
src\phobos\std\stdio.d(1872): Error: variable _param_1 used 
before set

Problem exists only when using following options: -inline -O
I'm using DMD 2.063.2 on Windows.

Can anybody help with it ? Also i can't minimize the test-case.
Jul 04 2013
parent "monarch_dodra" <monarchdodra gmail.com> writes:
On Thursday, 4 July 2013 at 08:34:24 UTC, Temtaime wrote:
 Hello guys !
 I'm found strange error when compiling following code:

 http://dpaste.1azy.net/b40ce9a4

 The error is:
 src\phobos\std\stdio.d(1872): Error: variable _param_1 used 
 before set

 Problem exists only when using following options: -inline -O
 I'm using DMD 2.063.2 on Windows.

 Can anybody help with it ? Also i can't minimize the test-case.
Looks like a bug related with size 0 matrices: It makes you declare an empty static array, which then does some conflicts, since the code to "initialize" it is optimized out. Reduced test case: -------- struct S { int[0] a; void do_it() { foo(a); } } void foo(Args...)(Args args) { foreach(arg; args) if (arg.ptr == null) return; bar(args); } void bar(Args...)(Args args) { baz(args); } void baz(Args...)(Args args) { foreach(arg; args) if (arg.ptr == null) return; } void main() {} -------- I've filed it: http://d.puremagic.com/issues/show_bug.cgi?id=10540 To workaround it, I'd suggest writing your code in such a way that you stop the recursion a "1", and not "0".
Jul 04 2013