mirror of
https://github.com/python/cpython.git
synced 2025-07-24 03:35:53 +00:00
Issue #23517: Try to fix test_time on "x86 Ubuntu Shared 3.x" buildbot
This commit is contained in:
parent
ead144c19b
commit
24b822e21e
1 changed files with 10 additions and 7 deletions
|
@ -64,11 +64,13 @@ _PyLong_FromTime_t(time_t t)
|
||||||
static double
|
static double
|
||||||
_PyTime_RoundHalfUp(double x)
|
_PyTime_RoundHalfUp(double x)
|
||||||
{
|
{
|
||||||
if (x >= 0.0)
|
/* volatile avoids optimization changing how numbers are rounded */
|
||||||
x = floor(x + 0.5);
|
volatile double d = x;
|
||||||
|
if (d >= 0.0)
|
||||||
|
d = floor(d + 0.5);
|
||||||
else
|
else
|
||||||
x = ceil(x - 0.5);
|
d = ceil(d - 0.5);
|
||||||
return x;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -77,7 +79,7 @@ _PyTime_DoubleToDenominator(double d, time_t *sec, long *numerator,
|
||||||
double denominator, _PyTime_round_t round)
|
double denominator, _PyTime_round_t round)
|
||||||
{
|
{
|
||||||
double intpart, err;
|
double intpart, err;
|
||||||
/* volatile avoids unsafe optimization on float enabled by gcc -O3 */
|
/* volatile avoids optimization changing how numbers are rounded */
|
||||||
volatile double floatpart;
|
volatile double floatpart;
|
||||||
|
|
||||||
floatpart = modf(d, &intpart);
|
floatpart = modf(d, &intpart);
|
||||||
|
@ -134,7 +136,8 @@ int
|
||||||
_PyTime_ObjectToTime_t(PyObject *obj, time_t *sec, _PyTime_round_t round)
|
_PyTime_ObjectToTime_t(PyObject *obj, time_t *sec, _PyTime_round_t round)
|
||||||
{
|
{
|
||||||
if (PyFloat_Check(obj)) {
|
if (PyFloat_Check(obj)) {
|
||||||
double d, intpart, err;
|
/* volatile avoids optimization changing how numbers are rounded */
|
||||||
|
volatile double d, intpart, err;
|
||||||
|
|
||||||
d = PyFloat_AsDouble(obj);
|
d = PyFloat_AsDouble(obj);
|
||||||
if (round == _PyTime_ROUND_HALF_UP)
|
if (round == _PyTime_ROUND_HALF_UP)
|
||||||
|
@ -255,7 +258,7 @@ static int
|
||||||
_PyTime_FromFloatObject(_PyTime_t *t, double value, _PyTime_round_t round,
|
_PyTime_FromFloatObject(_PyTime_t *t, double value, _PyTime_round_t round,
|
||||||
long to_nanoseconds)
|
long to_nanoseconds)
|
||||||
{
|
{
|
||||||
/* volatile avoids unsafe optimization on float enabled by gcc -O3 */
|
/* volatile avoids optimization changing how numbers are rounded */
|
||||||
volatile double d, err;
|
volatile double d, err;
|
||||||
|
|
||||||
/* convert to a number of nanoseconds */
|
/* convert to a number of nanoseconds */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue