diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2012-11-29 18:56:23 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@de.ibm.com> | 2012-11-29 18:56:23 +0000 |
commit | ea5e6b0efed02c5f934df7420aa9fa55aa84b635 (patch) | |
tree | c5100cb66ec9810d96761ef4035b0ac5866a8133 /gdb/opencl-lang.c | |
parent | 0c631110f416277bb24c803a80d38f569f2deb2f (diff) | |
download | gdb-ea5e6b0efed02c5f934df7420aa9fa55aa84b635.zip gdb-ea5e6b0efed02c5f934df7420aa9fa55aa84b635.tar.gz gdb-ea5e6b0efed02c5f934df7420aa9fa55aa84b635.tar.bz2 |
ChangeLog:
* opencl-lang.c (opencl_print_type): New function.
(opencl_language_arch_info): Install it.
testsuite/ChangeLog:
* gdb.opencl/convs_casts.exp: Always expect standard vector type names.
* gdb.opencl/datatypes.exp: Likewise.
* gdb.opencl/operators.exp: Likewise.
* gdb.opencl/vec_comps.exp: Likewise.
Diffstat (limited to 'gdb/opencl-lang.c')
-rw-r--r-- | gdb/opencl-lang.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/gdb/opencl-lang.c b/gdb/opencl-lang.c index b8fd9b7..4ef4698 100644 --- a/gdb/opencl-lang.c +++ b/gdb/opencl-lang.c @@ -961,6 +961,27 @@ Cannot perform conditional operation on vectors with different sizes")); return evaluate_subexp_c (expect_type, exp, pos, noside); } +/* Print OpenCL types. */ + +static void +opencl_print_type (struct type *type, const char *varstring, + struct ui_file *stream, int show, int level, + const struct type_print_options *flags) +{ + /* We nearly always defer to C type printing, except that vector + types are considered primitive in OpenCL, and should always + be printed using their TYPE_NAME. */ + if (show > 0) + { + CHECK_TYPEDEF (type); + if (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type) + && TYPE_NAME (type) != NULL) + show = 0; + } + + c_print_type (type, varstring, stream, show, level, flags); +} + static void opencl_language_arch_info (struct gdbarch *gdbarch, struct language_arch_info *lai) @@ -1003,7 +1024,7 @@ const struct language_defn opencl_language_defn = c_printchar, /* Print a character constant */ c_printstr, /* Function to print string constant */ c_emit_char, /* Print a single char */ - c_print_type, /* Print a type using appropriate syntax */ + opencl_print_type, /* Print a type using appropriate syntax */ c_print_typedef, /* Print a typedef using appropriate syntax */ c_val_print, /* Print a value using appropriate syntax */ c_value_print, /* Print a top-level value */ |