[phobos] Can somebody with OSX please reduce the Phobos unittest failure?

Walter Bright walter at digitalmars.com
Mon Oct 25 23:38:50 PDT 2010



Brad Roberts wrote:
> On 10/25/2010 8:58 PM, Walter Bright wrote:
>   
>> Don Clugston wrote:
>>     
>>> We have an OSX-only failure, which I think is a compiler bug.
>>> It's failing in std.bigint, which only imports
>>> std.internal.math.biguintCore and std.internal.math.bignumX86.
>>> There's no dependency on anything else in Phobos, so it ought to be
>>> pretty easy to reduce.
>>> I can't reduce it, because I don't have OSX.
>>>
>>> The failing test is this one:
>>>     assert(BigInt(0x1234_5678_9ABC_5A5AL).toLong() == 0x1234_5678_9ABC_5A5AL);
>>>
>>> This is blocking a release.
>>>
>>>   
>>>       
>> Found the problem - you're right, it's a compiler bug. A bad one. Oops!
>>     
>
> An osx specific problem?
>   

Doing a signed long compare calls a function in llmath.d. That function 
is the only one that returns its result in the flags. In OSX, the stack 
must always be aligned on 16 bytes when a function is called. The 
alignment is done by adding/subtracting from ESP, which resets the 
flags. Oops! The solution was to just inline the comparison code.


More information about the phobos mailing list