digitalmars.D.bugs - [Issue 993] New: incorrect ABI documentation for float parameters
- d-bugmail puremagic.com (45/47) Feb 21 2007 http://d.puremagic.com/issues/show_bug.cgi?id=993
- d-bugmail puremagic.com (5/5) Feb 22 2007 http://d.puremagic.com/issues/show_bug.cgi?id=993
- d-bugmail puremagic.com (9/9) Mar 19 2007 http://d.puremagic.com/issues/show_bug.cgi?id=993
http://d.puremagic.com/issues/show_bug.cgi?id=993 Summary: incorrect ABI documentation for float parameters Product: D Version: 1.005 Platform: PC URL: http://www.digitalmars.com/d/abi.html OS/Version: Linux Status: NEW Severity: normal Priority: P3 Component: DMD AssignedTo: bugzilla digitalmars.com ReportedBy: thomas-dloop kuehne.cn If the last function parameter is a float it is passed via the stack and not via EAX. # The last parameter is passed in EAX rather than being pushed on # the stack if the following conditions are met: # # * It fits in EAX. # * It is not a 3 byte struct. missing condition: # * not a float/ifloat # void test(float f){ # assert(16.5 == f); # } # # void main(){ # float f = 16.5; # int i = *cast(int*)&f; # version(bug){ # asm{ # mov EAX, i; # call test; # } # }else{ # asm{ # push i; # call test; # pop i; # } # } # } dmd test.d && ./test && echo OKOKdmd -version=bug test.d && ./test && echo OKError: AssertError Failure bug.d(2)--
Feb 21 2007
http://d.puremagic.com/issues/show_bug.cgi?id=993 ------- Comment #1 from fvbommel wxs.nl 2007-02-22 03:05 ------- Nitpick: that "pop i" after the call in the else clause shouldn't be there. D functions pop their own arguments, except in case of varargs. --
Feb 22 2007
http://d.puremagic.com/issues/show_bug.cgi?id=993 bugzilla digitalmars.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED ------- Comment #2 from bugzilla digitalmars.com 2007-03-19 17:37 ------- Fixed DMD 1.009 --
Mar 19 2007