* valops.c (value_cast): Allow cast from INT, ENUM or RANGE to

POINTER.
This commit is contained in:
Andrew Cagney 2000-07-12 08:31:49 +00:00
parent 0ba2a60ea9
commit 634acd5f8a
2 changed files with 19 additions and 0 deletions

View File

@ -1,3 +1,8 @@
Tue Jul 11 19:45:42 2000 Andrew Cagney <cagney@b1.cygnus.com>
* valops.c (value_cast): Allow cast from INT, ENUM or RANGE to
POINTER.
2000-07-11 Scott Bambrough <scottb@netwinder.org>
* command.c (do_setshow_command): Fix typo in var_auto_boolean

View File

@ -290,6 +290,20 @@ value_cast (type, arg2)
return value_from_longest (type, convert_to_boolean ?
(LONGEST) (longest ? 1 : 0) : longest);
}
else if (code1 == TYPE_CODE_PTR && (code2 == TYPE_CODE_INT ||
code2 == TYPE_CODE_ENUM ||
code2 == TYPE_CODE_RANGE))
{
int ptr_bit = HOST_CHAR_BIT * TYPE_LENGTH (type);
LONGEST longest = value_as_long (arg2);
if (ptr_bit < sizeof (LONGEST) * HOST_CHAR_BIT)
{
if (longest >= ((LONGEST) 1 << ptr_bit)
|| longest <= -((LONGEST) 1 << ptr_bit))
warning ("value truncated");
}
return value_from_longest (type, longest);
}
else if (TYPE_LENGTH (type) == TYPE_LENGTH (type2))
{
if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)