Thread overview |
---|
February 22, 2007 [Issue 993] New: incorrect ABI documentation for float parameters | ||||
---|---|---|---|---|
| ||||
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 OK > OK dmd -version=bug test.d && ./test && echo OK > Error: AssertError Failure bug.d(2) -- |
February 22, 2007 [Issue 993] incorrect ABI documentation for float parameters | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | 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. -- |
March 19, 2007 [Issue 993] incorrect ABI documentation for float parameters | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | 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 -- |
Copyright © 1999-2021 by the D Language Foundation