diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/objc/objc-act.c | 82 |
2 files changed, 48 insertions, 40 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index edde6873f79..a1203e6adfa 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Mon Feb 22 08:55:05 1999 Ovidiu Predescu <ovidiu@cup.hp.com> + + * objc/objc-act.c (encode_type): Temporary revert to the old + behavior of encoding types as the new one seems to break the + encoding of bitfields. + Mon Feb 22 11:40:44 1999 Craig Burley <craig@jcb-sc.com> Sat Feb 20 09:59:36 1999 Craig Burley <craig@jcb-sc.com> diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index 2ff65d159ba..374e35b84c4 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -6782,37 +6782,38 @@ encode_type (type, curtype, format) { /* Unsigned integer types. */ - type = TYPE_MAIN_VARIANT (type); - if (type == unsigned_type_node) - obstack_1grow (&util_obstack, 'I'); - else if (type == long_unsigned_type_node) - obstack_1grow (&util_obstack, 'L'); - else if (type == unsigned_char_type_node) + if (TYPE_MODE (type) == QImode) obstack_1grow (&util_obstack, 'C'); - else if (type == short_unsigned_type_node) + else if (TYPE_MODE (type) == HImode) obstack_1grow (&util_obstack, 'S'); - else if (type == long_long_unsigned_type_node) + else if (TYPE_MODE (type) == SImode) + { + if (type == long_unsigned_type_node) + obstack_1grow (&util_obstack, 'L'); + else + obstack_1grow (&util_obstack, 'I'); + } + else if (TYPE_MODE (type) == DImode) obstack_1grow (&util_obstack, 'Q'); - else - fatal ("attempt to encode unsigned int of unknown type"); } else /* Signed integer types. */ { - type = TYPE_MAIN_VARIANT (type); - if (type == integer_type_node) - obstack_1grow (&util_obstack, 'i'); - else if (type == long_integer_type_node) - obstack_1grow (&util_obstack, 'l'); - else if (type == char_type_node || type == signed_char_type_node) + if (TYPE_MODE (type) == QImode) obstack_1grow (&util_obstack, 'c'); - else if (type == short_integer_type_node) + else if (TYPE_MODE (type) == HImode) obstack_1grow (&util_obstack, 's'); - else if (type == long_long_integer_type_node) + else if (TYPE_MODE (type) == SImode) + { + if (type == long_integer_type_node) + obstack_1grow (&util_obstack, 'l'); + else + obstack_1grow (&util_obstack, 'i'); + } + + else if (TYPE_MODE (type) == DImode) obstack_1grow (&util_obstack, 'q'); - else - fatal ("attempt to encode signed int of unknown type"); } } @@ -6857,37 +6858,38 @@ encode_complete_bitfield (int position, tree type, int size) { /* Unsigned integer types. */ - type = TYPE_MAIN_VARIANT (type); - if (type == unsigned_type_node) - charType = 'I'; - else if (type == long_unsigned_type_node) - charType = 'L'; - else if (type == unsigned_char_type_node) + if (TYPE_MODE (type) == QImode) charType = 'C'; - else if (type == short_unsigned_type_node) + else if (TYPE_MODE (type) == HImode) charType = 'S'; - else if (type == long_long_unsigned_type_node) + else if (TYPE_MODE (type) == SImode) + { + if (type == long_unsigned_type_node) + charType = 'L'; + else + charType = 'I'; + } + else if (TYPE_MODE (type) == DImode) charType = 'Q'; - else - fatal ("attempt to encode unsigned int of unknown type"); } else /* Signed integer types. */ { - type = TYPE_MAIN_VARIANT (type); - if (type == unsigned_type_node) - charType = 'i'; - else if (type == long_unsigned_type_node) - charType = 'l'; - else if (type == char_type_node || type == signed_char_type_node) + if (TYPE_MODE (type) == QImode) charType = 'c'; - else if (type == short_unsigned_type_node) + else if (TYPE_MODE (type) == HImode) charType = 's'; - else if (type == long_long_unsigned_type_node) + else if (TYPE_MODE (type) == SImode) + { + if (type == long_integer_type_node) + charType = 'l'; + else + charType = 'i'; + } + + else if (TYPE_MODE (type) == DImode) charType = 'q'; - else - fatal ("attempt to encode signed int of unknown type"); } } |