July 04, 2013 Strange error | ||||
---|---|---|---|---|
| ||||
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. |
July 04, 2013 Re: Strange error | ||||
---|---|---|---|---|
| ||||
Posted in reply to Temtaime | 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". |
Copyright © 1999-2021 by the D Language Foundation