On Thu, Oct 23, 2014 at 02:26:52PM -0400, Steven Schveighoffer via Digitalmars-d-learn wrote: > On 10/23/14 2:18 PM, deed wrote: [...] > >Now, if fun's body is { return sin(a); }, the behaviour changes to: > > > >auto c = fun(100); > >auto d = fun(100); > > > >assert (c == d); // Ok > >assert (fun(100) != fun(100)) // I have a hard time understanding > > // this is correct behaviour > > Tried that out, it does not fail on my machine. Can you be more > specific on your testing? What compiler/platform? Stock compiler, or > did you build it yourself? [...]
A similar problem was recently (about 2-3 weeks ago IIRC) seen in one of the Phobos PR's. It appears to be related to the autoextension of float to double (or double to real, I forget which) in certain contexts on Windows. @deed Could you please try to reduce the failing test to a minimal code example, and post a disassembly of the concerned function(s)? This could either be a subtle codegen bug, or something more fundamentally broken with 80-bit real support. T -- Making non-nullable pointers is just plugging one hole in a cheese grater. -- Walter Bright