Thread overview
[Issue 993] New: incorrect ABI documentation for float parameters
Feb 22, 2007
d-bugmail
Feb 22, 2007
d-bugmail
Mar 19, 2007
d-bugmail
February 22, 2007
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
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
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


--