* valarith.c (value_equal, value_less): Avoid compiler bug on

systems where `long double' values are returned in static storage.
This commit is contained in:
Mark Kettenis 2005-08-21 09:33:11 +00:00
parent e764ed5ba9
commit d067a990c8
2 changed files with 19 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2005-08-21 Mark Kettenis <kettenis@gnu.org>
* valarith.c (value_equal, value_less): Avoid compiler bug on
systems where `long double' values are returned in static storage.
2005-08-18 Mark Kettenis <kettenis@gnu.org>
* stack.c: Reformat. Improve comments. Include "valprint.h".

View File

@ -1,8 +1,8 @@
/* Perform arithmetic and other operations on values, for GDB.
Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free
Software Foundation, Inc.
1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This file is part of GDB.
@ -1248,7 +1248,12 @@ value_equal (struct value *arg1, struct value *arg2)
BINOP_EQUAL)));
else if ((code1 == TYPE_CODE_FLT || is_int1)
&& (code2 == TYPE_CODE_FLT || is_int2))
return value_as_double (arg1) == value_as_double (arg2);
{
/* NOTE: kettenis/20050816: Avoid compiler bug on systems where
`long double' values are returned in static storage (m68k). */
DOUBLEST d = value_as_double (arg1);
return d == value_as_double (arg2);
}
/* FIXME: Need to promote to either CORE_ADDR or LONGEST, whichever
is bigger. */
@ -1307,7 +1312,12 @@ value_less (struct value *arg1, struct value *arg2)
BINOP_LESS)));
else if ((code1 == TYPE_CODE_FLT || is_int1)
&& (code2 == TYPE_CODE_FLT || is_int2))
return value_as_double (arg1) < value_as_double (arg2);
{
/* NOTE: kettenis/20050816: Avoid compiler bug on systems where
`long double' values are returned in static storage (m68k). */
DOUBLEST d = value_as_double (arg1);
return d < value_as_double (arg2);
}
else if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
return value_as_address (arg1) < value_as_address (arg2);