comparison 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
comparison
equal deleted inserted replaced
15333:7d2eb4a01798 15334:8125773322d4
1121 fn.argument (builder, 1)); 1121 fn.argument (builder, 1));
1122 fn.do_return (builder, ret); 1122 fn.do_return (builder, ret);
1123 binary_ops[op].add_overload (fn); 1123 binary_ops[op].add_overload (fn);
1124 } 1124 }
1125 1125
1126 // grab any
1127 fn = create_function (jit_convention::external, "octave_jit_grab_any", any,
1128 any);
1129 fn.add_mapping (engine, &octave_jit_grab_any);
1130 grab_fn.add_overload (fn);
1131 grab_fn.stash_name ("grab");
1132
1133 // grab matrix 1126 // grab matrix
1134 fn = create_function (jit_convention::external, "octave_jit_grab_matrix", 1127 fn = create_function (jit_convention::external, "octave_jit_grab_matrix",
1135 matrix, matrix); 1128 matrix, matrix);
1136 fn.add_mapping (engine, &octave_jit_grab_matrix); 1129 fn.add_mapping (engine, &octave_jit_grab_matrix);
1137 grab_fn.add_overload (fn); 1130 grab_fn.add_overload (fn);
1131
1132 grab_fn.add_overload (create_identity (scalar));
1133 grab_fn.add_overload (create_identity (scalar_ptr));
1134 grab_fn.add_overload (create_identity (any_ptr));
1135 grab_fn.add_overload (create_identity (boolean));
1136 grab_fn.add_overload (create_identity (complex));
1137 grab_fn.add_overload (create_identity (index));
1138 1138
1139 // release any 1139 // release any
1140 fn = create_function (jit_convention::external, "octave_jit_release_any", 0, 1140 fn = create_function (jit_convention::external, "octave_jit_release_any", 0,
1141 any); 1141 any);
1142 fn.add_mapping (engine, &octave_jit_release_any); 1142 fn.add_mapping (engine, &octave_jit_release_any);
1146 // release matrix 1146 // release matrix
1147 fn = create_function (jit_convention::external, "octave_jit_release_matrix", 1147 fn = create_function (jit_convention::external, "octave_jit_release_matrix",
1148 0, matrix); 1148 0, matrix);
1149 fn.add_mapping (engine, &octave_jit_release_matrix); 1149 fn.add_mapping (engine, &octave_jit_release_matrix);
1150 release_fn.add_overload (fn); 1150 release_fn.add_overload (fn);
1151
1152 // copy
1153 copy_fn.stash_name ("copy");
1154 copy_fn.add_overload (create_identity (scalar));
1155 1151
1156 // now for binary scalar operations 1152 // now for binary scalar operations
1157 add_binary_op (scalar, octave_value::op_add, llvm::Instruction::FAdd); 1153 add_binary_op (scalar, octave_value::op_add, llvm::Instruction::FAdd);
1158 add_binary_op (scalar, octave_value::op_sub, llvm::Instruction::FSub); 1154 add_binary_op (scalar, octave_value::op_sub, llvm::Instruction::FSub);
1159 add_binary_op (scalar, octave_value::op_mul, llvm::Instruction::FMul); 1155 add_binary_op (scalar, octave_value::op_mul, llvm::Instruction::FMul);
1834 add_builtin ("mod"); 1830 add_builtin ("mod");
1835 register_generic ("mod", scalar, std::vector<jit_type *> (2, scalar)); 1831 register_generic ("mod", scalar, std::vector<jit_type *> (2, scalar));
1836 1832
1837 casts.resize (next_id + 1); 1833 casts.resize (next_id + 1);
1838 jit_function any_id = create_identity (any); 1834 jit_function any_id = create_identity (any);
1835 jit_function grab_any = create_function (jit_convention::external,
1836 "octave_jit_grab_any", any, any);
1837 grab_any.add_mapping (engine, &octave_jit_grab_any);
1839 jit_function release_any = get_release (any); 1838 jit_function release_any = get_release (any);
1840 std::vector<jit_type *> args; 1839 std::vector<jit_type *> args;
1841 args.resize (1); 1840 args.resize (1);
1842 1841
1843 for (std::map<std::string, jit_type *>::iterator iter = builtins.begin (); 1842 for (std::map<std::string, jit_type *>::iterator iter = builtins.begin ();
1844 iter != builtins.end (); ++iter) 1843 iter != builtins.end (); ++iter)
1845 { 1844 {
1846 jit_type *btype = iter->second; 1845 jit_type *btype = iter->second;
1847 args[0] = btype; 1846 args[0] = btype;
1848 1847
1848 grab_fn.add_overload (jit_function (grab_any, btype, args));
1849 release_fn.add_overload (jit_function (release_any, 0, args)); 1849 release_fn.add_overload (jit_function (release_any, 0, args));
1850 casts[any->type_id ()].add_overload (jit_function (any_id, any, args)); 1850 casts[any->type_id ()].add_overload (jit_function (any_id, any, args));
1851 1851
1852 args[0] = any; 1852 args[0] = any;
1853 casts[btype->type_id ()].add_overload (jit_function (any_id, btype, 1853 casts[btype->type_id ()].add_overload (jit_function (any_id, btype,