aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1993-01-01 16:39:33 -0800
committerJim Wilson <wilson@gcc.gnu.org>1993-01-01 16:39:33 -0800
commitaed0ae9b82d4874793cfae81d3d1fe8ddfa070f6 (patch)
tree882e159b60183a0745e05906ef0f871168d127a3
parentfcd40e959e06c5bfe91091eab9acb873a2e1ca06 (diff)
downloadgcc-aed0ae9b82d4874793cfae81d3d1fe8ddfa070f6.zip
gcc-aed0ae9b82d4874793cfae81d3d1fe8ddfa070f6.tar.gz
gcc-aed0ae9b82d4874793cfae81d3d1fe8ddfa070f6.tar.bz2
(plain_type_1): Distinguish some C integer types by name.
From-SVN: r3046
-rw-r--r--gcc/sdbout.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/sdbout.c b/gcc/sdbout.c
index 04093a83..b932fd0 100644
--- a/gcc/sdbout.c
+++ b/gcc/sdbout.c
@@ -462,6 +462,34 @@ plain_type_1 (type)
case INTEGER_TYPE:
{
int size = int_size_in_bytes (type) * BITS_PER_UNIT;
+
+ /* Carefully distinguish all the standard types of C,
+ without messing up if the language is not C.
+ Note that we check only for the names that contain spaces;
+ other names might occur by coincidence in other languages. */
+ if (TYPE_NAME (type) != 0
+ && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
+ && DECL_NAME (TYPE_NAME (type)) != 0
+ && TREE_CODE (DECL_NAME (TYPE_NAME (type))) == IDENTIFIER_NODE)
+ {
+ char *name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type)));
+
+ if (!strcmp (name, "unsigned char"))
+ return T_UCHAR;
+ if (!strcmp (name, "signed char"))
+ return T_CHAR;
+ if (!strcmp (name, "unsigned int"))
+ return T_UINT;
+ if (!strcmp (name, "short int"))
+ return T_SHORT;
+ if (!strcmp (name, "short unsigned int"))
+ return T_USHORT;
+ if (!strcmp (name, "long int"))
+ return T_LONG;
+ if (!strcmp (name, "long unsigned int"))
+ return T_ULONG;
+ }
+
if (size == CHAR_TYPE_SIZE)
return (TREE_UNSIGNED (type) ? T_UCHAR : T_CHAR);
if (size == SHORT_TYPE_SIZE)