diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1993-01-01 16:39:33 -0800 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1993-01-01 16:39:33 -0800 |
commit | aed0ae9b82d4874793cfae81d3d1fe8ddfa070f6 (patch) | |
tree | 882e159b60183a0745e05906ef0f871168d127a3 /gcc | |
parent | fcd40e959e06c5bfe91091eab9acb873a2e1ca06 (diff) | |
download | gcc-aed0ae9b82d4874793cfae81d3d1fe8ddfa070f6.zip gcc-aed0ae9b82d4874793cfae81d3d1fe8ddfa070f6.tar.gz gcc-aed0ae9b82d4874793cfae81d3d1fe8ddfa070f6.tar.bz2 |
(plain_type_1): Distinguish some C integer types by name.
From-SVN: r3046
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/sdbout.c | 28 |
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) |