[phobos] phobos commit, revision 1553

Andrei Alexandrescu andrei at erdani.com
Tue May 25 07:01:31 PDT 2010


Thanks for looking into this, Shin. For now I commented out that unittest.

My epic saga of getting things to build hasn't ended. In fact my initial 
goal was just to build the html, but that uses wine, which in turn has a 
problem. Try this:

make -f linux.mak OS=win32wine debug

to see the following error messages:

std\math.d(1611): Error: sqrt cannot be interpreted at compile time, 
because it has no available source code
std\math.d(1611): Error: sqrt cannot be interpreted at compile time, 
because it has no available source code
std\math.d(1611): Error: sqrt cannot be interpreted at compile time, 
because it has no available source code
std\math.d(1611): Error: sqrt cannot be interpreted at compile time, 
because it has no available source code
std\math.d(1611): Error: sqrt cannot be interpreted at compile time, 
because it has no available source code
std\math.d(1611): Error: sqrt cannot be interpreted at compile time, 
because it has no available source code
std\math.d(1614): Error: static assert  (2L * (1L / (0.5L * 
sqrt(0x1p-16382L)) / 2L) * (1L / (0.5L * sqrt(0x1p-16382L)) / 2L) <= 
0x1.fffffffffffffffep+16383L) is not evaluatable at compile time

It's great to have so many people contribute to Phobos, but I've never 
had such a long streak of non-builds. It looks like new scale of 
contribution asks for corresponding responsibility. Please, make sure 
everything builds before checking in, and announce to this list if you 
broke the build and are unable to fix it without help.


Andrei

On 05/25/2010 01:29 AM, Shin Fujishiro wrote:
>> Then std.functional segfaults :o/.
>
> Reproduced! unittests for toDelegate() segfault with -O.
>
> obj2asm showed that everything in toDelegate() was optimized away if
> compiled with the -O option. Then an uninitialized delegate object was
> returned.
>
> Workaround:
> --------------------
> --- phobos/std/functional.d
> +++ phobos/std/functional.d
> @@ -590,7 +590,8 @@ auto ref toDelegate(F)(auto ref F fp) if
> (isCallable!(F)) { auto dummyDel =&(dummy.doIt);
>           df.funcPtr = dummyDel.funcptr;
>
> -        return df.del;
> +        auto del = df.del;
> +        return del;
>       }
>   }
>
> --------------------
>
> toDelegate() is an auto ref function. A compiler bug allows the local
> variable df.del to be returned by reference. I'm not very sure, but it
> leads toDelegate() to return (reference to) uninitialized value.
>
> I filed the bug into bugzilla:
> http://d.puremagic.com/issues/show_bug.cgi?id=4232
>
>
> Shin
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos


More information about the phobos mailing list