diff libinterp/interp-core/jit-typeinfo.cc @ 15334:8125773322d4

Error on undefined an unused variables in JIT * jit-typeinfo.cc (jit_typeinfo::jit_typeinfo): Support grab_fn for all types except any and remove copy_fn initialization. * jit-typeinfo.h (jit_typeinfo::copy): Removed function. * pt-jit.cc (jit_convert::visit_identifier): Grab identifier on visit. (jit_convert::visit_index_expression): Update resolve signature. (jit_convert::resolve): Change parameters. (jit_convert::do_assign): Update resolve call. (jit_convert_llvm::visit): Remove now dead case. * pt-jit.h (jit_convert::resolve): Change resolve signature.
author Max Brister <max@2bass.com>
date Sat, 08 Sep 2012 17:20:05 -0600
parents de9bfcf637df
children 3f43e9d6d86e
line wrap: on
line diff
--- a/libinterp/interp-core/jit-typeinfo.cc	Fri Sep 07 12:24:15 2012 +0100
+++ b/libinterp/interp-core/jit-typeinfo.cc	Sat Sep 08 17:20:05 2012 -0600
@@ -1123,19 +1123,19 @@
       binary_ops[op].add_overload (fn);
     }
 
-  // grab any
-  fn = create_function (jit_convention::external, "octave_jit_grab_any", any,
-                        any);
-  fn.add_mapping (engine, &octave_jit_grab_any);
-  grab_fn.add_overload (fn);
-  grab_fn.stash_name ("grab");
-
   // grab matrix
   fn = create_function (jit_convention::external, "octave_jit_grab_matrix",
                         matrix, matrix);
   fn.add_mapping (engine, &octave_jit_grab_matrix);
   grab_fn.add_overload (fn);
 
+  grab_fn.add_overload (create_identity (scalar));
+  grab_fn.add_overload (create_identity (scalar_ptr));
+  grab_fn.add_overload (create_identity (any_ptr));
+  grab_fn.add_overload (create_identity (boolean));
+  grab_fn.add_overload (create_identity (complex));
+  grab_fn.add_overload (create_identity (index));
+
   // release any
   fn = create_function (jit_convention::external, "octave_jit_release_any", 0,
                         any);
@@ -1149,10 +1149,6 @@
   fn.add_mapping (engine, &octave_jit_release_matrix);
   release_fn.add_overload (fn);
 
-  // copy
-  copy_fn.stash_name ("copy");
-  copy_fn.add_overload (create_identity (scalar));
-
   // now for binary scalar operations
   add_binary_op (scalar, octave_value::op_add, llvm::Instruction::FAdd);
   add_binary_op (scalar, octave_value::op_sub, llvm::Instruction::FSub);
@@ -1836,6 +1832,9 @@
 
   casts.resize (next_id + 1);
   jit_function any_id = create_identity (any);
+  jit_function grab_any = create_function (jit_convention::external,
+                                           "octave_jit_grab_any", any, any);
+  grab_any.add_mapping (engine, &octave_jit_grab_any);
   jit_function release_any = get_release (any);
   std::vector<jit_type *> args;
   args.resize (1);
@@ -1846,6 +1845,7 @@
       jit_type *btype = iter->second;
       args[0] = btype;
 
+      grab_fn.add_overload (jit_function (grab_any, btype, args));
       release_fn.add_overload (jit_function (release_any, 0, args));
       casts[any->type_id ()].add_overload (jit_function (any_id, any, args));