There is patch for the win32/include/math.h which removes "t", "st"
2015-01-20 18:25 GMT+03:00, Sergey Korshunoff <[email protected]>: > Because I don't know how to handle a "t" constraint right, a math.h > can be rewritten > like: > long lrint (double x) > { > long retval; > __asm__ __volatile__ ( > "fldl %1\n" > "fistpl %0\n" : "=m" (retval) : "m" (x) ); > return retval; > } > insteed of the > long lrint (double x) > { > long retval; > __asm__ __volatile__ ("fistpl %0" : "=m" (retval) : "t" (x) : "st"); > return retval; > } > > 2015-01-20 17:43 GMT+03:00, Sergey Korshunoff <[email protected]>: >> Handling of the "t" spec needs to be improved. I take patch for it >> from the this mail list (2014) >> tcc don't load a function parameter into the float stack. >> There is asm of the gcc and tcc: >> >> long lrint (double x) >> { >> long retval; >> __asm__ __volatile__ ("fistpl %0" : "=m" (retval) : "t" (x) : "st"); >> return retval; >> } >> >> gcc: >> push %ebp >> mov %esp,%ebp >> sub $0x4,%esp >> fldl 0x8(%ebp) # !!! >> fistpl -0x4(%ebp) >> mov -0x4(%ebp),%eax >> leave >> ret >> >> tcc: >> push %ebp >> mov %esp,%ebp >> sub $0x4,%esp >> fistpl -0x4(%ebp) # where is fldl ??? >> mov -0x4(%ebp),%eax >> jmp 14 <lrint+0x14> >> leave >> ret >> >
032-math-lrint.patch
Description: Binary data
_______________________________________________ Tinycc-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/tinycc-devel
