* valops.c (value_cast): Handle casts to and from TYPE_CODE_CHAR.

* ch-exp.c (match_integer_literal):  Fix long long support.
	* gdbtypes.c (get_discrete_bounds):  Make TYPE_LENGTH (type) ==
	sizeof (LONGEST) case work OK.
This commit is contained in:
Per Bothner 1995-12-11 09:02:26 +00:00
parent 406477a696
commit f6d165855e
3 changed files with 16 additions and 5 deletions

View file

@ -369,7 +369,7 @@ get_discrete_bounds (type, lowp, highp)
*highp = 1;
return 0;
case TYPE_CODE_INT:
if (TYPE_LENGTH (type) >= sizeof (LONGEST)) /* Too big */
if (TYPE_LENGTH (type) > sizeof (LONGEST)) /* Too big */
return -1;
if (!TYPE_UNSIGNED (type))
{
@ -380,7 +380,11 @@ get_discrete_bounds (type, lowp, highp)
/* ... fall through for unsigned ints ... */
case TYPE_CODE_CHAR:
*lowp = 0;
*highp = (1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT)) - 1;
/* This round-about calculation is to avoid shifting by
TYPE_LENGTH (type) * TARGET_CHAR_BIT, which will not work
if TYPE_LENGTH (type) == sizeof (LONGEST). */
*highp = 1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1);
*highp = (*highp - 1) | *highp;
return 0;
default:
return -1;