aboutsummaryrefslogtreecommitdiff
path: root/gdb/eval.c
diff options
context:
space:
mode:
authorKen Werner <ken.werner@de.ibm.com>2010-11-05 14:31:30 +0000
committerKen Werner <ken.werner@de.ibm.com>2010-11-05 14:31:30 +0000
commitf4b8a18de7f165283091323b11e9e363dadb8b62 (patch)
tree5e42a431d5add30b82af29bebc879a9c49f6ef07 /gdb/eval.c
parentaa291e2d99dd5e6be27b43c721fa92edae076138 (diff)
downloadfsf-binutils-gdb-f4b8a18de7f165283091323b11e9e363dadb8b62.zip
fsf-binutils-gdb-f4b8a18de7f165283091323b11e9e363dadb8b62.tar.gz
fsf-binutils-gdb-f4b8a18de7f165283091323b11e9e363dadb8b62.tar.bz2
gdb:
* NEWS: Mention OpenCL C language support. * Makefile.in (SFILES): Add opencl-lang.c. (COMMON_OBS): Add opencl-lang.o. * opencl-lang.c: New File * defs.h (enum language): Add language_opencl. * dwarf2read.c (read_file_scope): Handle DW_AT_producer for the IBM XL C OpenCL compiler. * c-lang.h: Include "parser-defs.h". (evaluate_subexp_c): Declare. * c-lang.c (evaluate_subexp_c): Remove the static qualifier. (c_op_print_tab): Add declaration. * eval.c (binop_promote): Handle language_opencl. * c-exp.y: Lookup the primitive types instead of referring to the builtins. gdb/testsuite: * Makefile.in (ALL_SUBDIRS): Add gdb.opencl. * configure.ac (AC_OUTPUT): Add gdb.opencl/Makefile. * configure: Regenerate. * gdb.opencl/Makefile.in: New File. * gdb.opencl/datatypes.exp: Likewise. * gdb.opencl/datatypes.cl: Likewise. * gdb.opencl/operators.exp: Likewise. * gdb.opencl/operators.cl: Likewise. * gdb.opencl/vec_comps.exp: Likewise. * gdb.opencl/vec_comps.cl: Likewise. * gdb.opencl/convs_casts.exp: Likewise. * gdb.opencl/convs_casts.cl: Likewise. * lib/opencl.exp: Likewise. * lib/opencl_hostapp.c: Likewise. * lib/opencl_kernel.cl: Likewise. * lib/cl_util.c: Likewise. * lib/cl_util.c: Likewise. * gdb.base/default.exp (set language): Add "opencl" to the list of languages. gdb/doc: * gdb.texinfo: (Summary) Add mention about OpenCL C language support. (OpenCL C): New node.
Diffstat (limited to 'gdb/eval.c')
-rw-r--r--gdb/eval.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/gdb/eval.c b/gdb/eval.c
index 71c3ff8..16e98ae 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -603,6 +603,7 @@ binop_promote (const struct language_defn *language, struct gdbarch *gdbarch,
case language_cplus:
case language_asm:
case language_objc:
+ case language_opencl:
/* No promotion required. */
break;
@@ -690,7 +691,24 @@ binop_promote (const struct language_defn *language, struct gdbarch *gdbarch,
: builtin->builtin_long_long);
}
break;
-
+ case language_opencl:
+ if (result_len <= TYPE_LENGTH (lookup_signed_typename
+ (language, gdbarch, "int")))
+ {
+ promoted_type =
+ (unsigned_operation
+ ? lookup_unsigned_typename (language, gdbarch, "int")
+ : lookup_signed_typename (language, gdbarch, "int"));
+ }
+ else if (result_len <= TYPE_LENGTH (lookup_signed_typename
+ (language, gdbarch, "long")))
+ {
+ promoted_type =
+ (unsigned_operation
+ ? lookup_unsigned_typename (language, gdbarch, "long")
+ : lookup_signed_typename (language, gdbarch,"long"));
+ }
+ break;
default:
/* For other languages the result type is unchanged from gdb
version 6.7 for backward compatibility.