diff options
author | Per Bothner <per@bothner.com> | 1995-11-30 01:43:37 +0000 |
---|---|---|
committer | Per Bothner <per@bothner.com> | 1995-11-30 01:43:37 +0000 |
commit | 940d596798931962895918454d2ca6bd14b83b1b (patch) | |
tree | 0b1efd109bb8fe8f038446ea785b2dd91e35ebeb /gdb/language.c | |
parent | d1f4065e6499c42088b36a058b1de4035d051392 (diff) | |
download | gdb-940d596798931962895918454d2ca6bd14b83b1b.zip gdb-940d596798931962895918454d2ca6bd14b83b1b.tar.gz gdb-940d596798931962895918454d2ca6bd14b83b1b.tar.bz2 |
* alpha-tdep.c, c-exp.y, h8500-tdep.c, f-exp.y, f-valprint.c,
findvar.c, hppa-tdep.c, infcmd.c, language.c, printcmd.c,
rs6000-tdep.c, symmisc.c, symtab.c:
Add check_typedef/CHECK_TYPEDEF as needed.
Diffstat (limited to 'gdb/language.c')
-rw-r--r-- | gdb/language.c | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/gdb/language.c b/gdb/language.c index 6dd066e..2504f86 100644 --- a/gdb/language.c +++ b/gdb/language.c @@ -436,24 +436,26 @@ struct type * binop_result_type (v1, v2) value_ptr v1, v2; { - int l1,l2,size,uns; + int size,uns; + struct type *t1 = check_typedef (VALUE_TYPE (v1)); + struct type *t2 = check_typedef (VALUE_TYPE (v2)); - l1 = TYPE_LENGTH(VALUE_TYPE(v1)); - l2 = TYPE_LENGTH(VALUE_TYPE(v2)); + int l1 = TYPE_LENGTH (t1); + int l2 = TYPE_LENGTH (t2); switch(current_language->la_language) { case language_c: case language_cplus: - if (TYPE_CODE(VALUE_TYPE(v1))==TYPE_CODE_FLT) - return TYPE_CODE(VALUE_TYPE(v2)) == TYPE_CODE_FLT && l2 > l1 ? + if (TYPE_CODE (t1)==TYPE_CODE_FLT) + return TYPE_CODE(t2) == TYPE_CODE_FLT && l2 > l1 ? VALUE_TYPE(v2) : VALUE_TYPE(v1); - else if (TYPE_CODE(VALUE_TYPE(v2))==TYPE_CODE_FLT) - return TYPE_CODE(VALUE_TYPE(v1)) == TYPE_CODE_FLT && l1 > l2 ? + else if (TYPE_CODE(t2)==TYPE_CODE_FLT) + return TYPE_CODE(t1)) == TYPE_CODE_FLT && l1 > l2 ? VALUE_TYPE(v1) : VALUE_TYPE(v2); - else if (TYPE_UNSIGNED(VALUE_TYPE(v1)) && l1 > l2) + else if (TYPE_UNSIGNED(t1) && l1 > l2) return VALUE_TYPE(v1); - else if (TYPE_UNSIGNED(VALUE_TYPE(v2)) && l2 > l1) + else if (TYPE_UNSIGNED(t2) && l2 > l1) return VALUE_TYPE(v2); else /* Both are signed. Result is the longer type */ return l1 > l2 ? VALUE_TYPE(v1) : VALUE_TYPE(v2); @@ -548,6 +550,7 @@ local_decimal_format_custom(pre) return form; } +#if 0 /* This page contains functions that are used in type/range checking. They all return zero if the type/range check fails. @@ -569,6 +572,7 @@ int simple_type(type) struct type *type; { + CHECK_TYPEDEF (type); switch (TYPE_CODE (type)) { case TYPE_CODE_INT: case TYPE_CODE_CHAR: @@ -591,6 +595,7 @@ int ordered_type (type) struct type *type; { + CHECK_TYPEDEF (type); switch (TYPE_CODE (type)) { case TYPE_CODE_INT: case TYPE_CODE_CHAR: @@ -609,6 +614,7 @@ int same_type (arg1, arg2) struct type *arg1, *arg2; { + CHECK_TYPEDEF (type); if (structured_type(arg1) ? !structured_type(arg2) : structured_type(arg2)) /* One is structured and one isn't */ return 0; @@ -627,6 +633,7 @@ int integral_type (type) struct type *type; { + CHECK_TYPEDEF (type); switch(current_language->la_language) { case language_c: @@ -647,6 +654,7 @@ int numeric_type (type) struct type *type; { + CHECK_TYPEDEF (type); switch (TYPE_CODE (type)) { case TYPE_CODE_INT: case TYPE_CODE_FLT: @@ -662,7 +670,8 @@ int character_type (type) struct type *type; { - switch(current_language->la_language) + CHECK_TYPEDEF (type); + switch(current_language->la_language) { case language_chill: case language_m2: @@ -683,7 +692,8 @@ int string_type (type) struct type *type; { - switch(current_language->la_language) + CHECK_TYPEDEF (type); + switch(current_language->la_language) { case language_chill: case language_m2: @@ -703,6 +713,7 @@ int boolean_type (type) struct type *type; { + CHECK_TYPEDEF (type); if (TYPE_CODE (type) == TYPE_CODE_BOOL) return 1; switch(current_language->la_language) @@ -724,7 +735,8 @@ int float_type (type) struct type *type; { - return TYPE_CODE(type) == TYPE_CODE_FLT; + CHECK_TYPEDEF (type); + return TYPE_CODE(type) == TYPE_CODE_FLT; } /* Returns non-zero if the value is a pointer type */ @@ -741,6 +753,7 @@ int structured_type(type) struct type *type; { + CHECK_TYPEDEF (type); switch(current_language->la_language) { case language_c: @@ -758,6 +771,7 @@ structured_type(type) return (0); } } +#endif /* This page contains functions that return info about (struct value) values used in GDB. */ |