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".