%---------------------------------------------------------------------------% % vim: ts=4 sw=4 et ft=mercury %---------------------------------------------------------------------------% % % mmc -s asm_fast.gc.debug -C tci_liveness_abort.m :- module tci_liveness_abort. :- interface. :- import_module list. :- type object. :- type value. :- type kind ---> k1 ; k2 ; k3. :- pred test1(object::in, kind::in, list(value)::in, list(value)::out) is det. :- pred test2(object::in, kind::in, value::out) is semidet. %---------------------------------------------------------------------------% %---------------------------------------------------------------------------% :- implementation. :- type object ---> object( class :: object_class ). :- type object_class ---> error ; some [T] host(T) => host(T). :- type value ---> null. :- typeclass host(T) where [ pred get_value(object, T, value), mode get_value(in, in, out) is det ]. % Software Error: map.lookup: key not found % Key Type: term.var(parse_tree.prog_data.prog_var_type) % Key Value: var(14) % Value Type: ll_backend.var_locn.var_state /* Stack dump follows: 0 pred exception.throw/1-0 (erroneous) (exception.m:312) 1 pred require.error/1-0 (erroneous) (require.m:173) 2 pred require.report_lookup_error/3-0 (erroneous) (require.m:277) 3 pred map.lookup/3-0 (det) (map.m:1463) 4 pred ll_backend.var_locn.var_locn_produce_var_in_reg_or_stack/5-0 (det) (var_locn.m:1659) 5 pred ll_backend.code_loc_dep.produce_variable_in_reg_or_stack/5-0 (det) (code_loc_dep.m:3196) 6 pred ll_backend.trace_gen.trace_produce_var/9-0 (det) (trace_gen.m:1312) 7 4* pred ll_backend.trace_gen.trace_produce_vars/11-0 (det) (trace_gen.m:1301 and others) 11 pred ll_backend.trace_gen.generate_event_code/13-0 (det) (trace_gen.m:1148) 12 pred ll_backend.trace_gen.maybe_generate_internal_event_code/7-0 (det) (trace_gen.m:912) 13 pred ll_backend.ite_gen.generate_ite/10-0 (det) (ite_gen.m:216) 14 pred ll_backend.code_gen.generate_goal_expr/9-0 (det) (code_gen.m:267) 15 pred ll_backend.code_gen.generate_goal/7-0 (det) (code_gen.m:136) 16 3* pred ll_backend.switch_gen.generate_if_then_else_chain_cases/15-0 (det) (switch_gen.m:622 and others) 19 pred ll_backend.switch_gen.order_and_generate_cases/13-0 (det) (switch_gen.m:406) 20 pred ll_backend.switch_gen.generate_int_switch/16-0 (det) (switch_gen.m:254) 21 pred ll_backend.switch_gen.generate_switch/10-0 (det) (switch_gen.m:164) 22 pred ll_backend.code_gen.generate_goal_expr/9-0 (det) (code_gen.m:271) 23 pred ll_backend.code_gen.generate_goal/7-0 (det) (code_gen.m:136) 24 pred ll_backend.proc_gen.generate_det_code/10-0 (det) (proc_gen.m:748) 25 pred ll_backend.proc_gen.generate_category_code/11-0 (det) (proc_gen.m:696) 26 pred ll_backend.proc_gen.generate_proc_code/10-0 (det) (proc_gen.m:428) 27 pred top_level.mercury_compile_llds_back_end.llds_backend_pass_for_proc/14-0 (det) (mercury_compile_llds_back_end.m:469) 28 pred top_level.mercury_compile_llds_back_end.llds_backend_pass_for_pred/13-0 (det) (mercury_compile_llds_back_end.m:373) 29 pred top_level.mercury_compile_llds_back_end.llds_backend_pass_by_preds_do_one_pred/14-0 (det) (mercury_compile_llds_back_end.m:338) 30 pred top_level.mercury_compile_llds_back_end.llds_backend_pass_by_preds_loop_over_preds/13-0 (det) (mercury_compile_llds_back_end.m:281) 31 pred top_level.mercury_compile_llds_back_end.llds_backend_pass_by_preds/8-0 (det) (mercury_compile_llds_back_end.m:260) 32 pred top_level.mercury_compile_llds_back_end.hlds_to_llds/10-0 (det) (mercury_compile_llds_back_end.m:170) 33 pred top_level.mercury_compile_augment.choose_and_execute_backend_passes/15-0 (det) (mercury_compile_augment.m:514) 34 pred top_level.mercury_compile_augment.after_front_end_passes/14-0 (det) (mercury_compile_augment.m:412) 35 pred top_level.mercury_compile_augment.process_augmented_module/16-0 (det) (mercury_compile_augment.m:283) 36 pred top_level.mercury_compile_augment.augment_and_process_module/14-0 (det) (mercury_compile_augment.m:209) 37 pred list.map_foldl3/9-0 (det) (list.m:4575) 38 pred top_level.mercury_compile_augment.augment_and_process_all_submodules/15-0 (det) (mercury_compile_augment.m:158) 39 pred top_level.mercury_compile_augment.augment_and_process_source_file/17-0 (det) (mercury_compile_augment.m:136) 40 pred top_level.mercury_compile_main.read_augment_and_process_module/15-0 (det) (mercury_compile_main.m:1162) 41 pred top_level.mercury_compile_main.do_process_compiler_arg/13-0 (det) (mercury_compile_main.m:800) 42 pred top_level.mercury_compile_main.setup_and_process_compiler_arg/13-0 (det) (mercury_compile_main.m:676) 43 pred top_level.mercury_compile_main.setup_and_process_compiler_cmd_line_args/15-0 (det) (mercury_compile_main.m:588) 44 pred top_level.mercury_compile_main.do_op_mode_args/13-0 (det) (mercury_compile_main.m:423) 45 pred top_level.mercury_compile_main.do_op_mode/11-0 (det) (mercury_compile_main.m:248) 46 pred top_level.mercury_compile_main.main_after_setup/6-0 (det) (mercury_compile_main.m:203) 47 pred top_level.mercury_compile_main.real_main/2-0 (det) (mercury_compile_main.m:124) 48 pred mercury_compile.main/2-0 (det) (mercury_compile.m:32) */ test1(Ob, Kind, !List) :- ( Kind = k1 ; ( Kind = k2 ; Kind = k3 ), ( if Ob ^ class = host(HostOb) then get_value(Ob, HostOb, Value), ( Kind = k2, Item = Value ; Kind = k3, Item = null ), cons(Item, !List) else true ) ). % Software Error: predicate `ll_backend.var_locn.actually_place_var'/6: Unexpected: placing nondummy var 10 which has no state /* Stack dump follows: 0 pred exception.throw/1-0 (erroneous) (exception.m:312) 1 pred require.error/1-0 (erroneous) (require.m:173) 2 pred require.unexpected/2-0 (erroneous) (require.m:204) 3 pred ll_backend.var_locn.actually_place_var/6-0 (det) (var_locn.m:1802) 4 pred ll_backend.var_locn.var_locn_place_var/5-0 (det) (var_locn.m:1696) 5 3* pred ll_backend.var_locn.actually_place_vars/4-0 (det) (var_locn.m:1720 and others) 8 pred ll_backend.var_locn.var_locn_place_vars/4-0 (det) (var_locn.m:1712) 9 pred ll_backend.code_loc_dep.setup_call/7-0 (det) (code_loc_dep.m:3332) 10 pred ll_backend.call_gen.generate_call/10-0 (det) (call_gen.m:113) 11 pred ll_backend.code_gen.generate_goal_expr/9-0 (det) (code_gen.m:298) 12 pred ll_backend.code_gen.generate_goal/7-0 (det) (code_gen.m:136) 13 3* pred ll_backend.code_gen.generate_conj_inner/10-0 (det) (code_gen.m:355 and others) 16 pred ll_backend.code_gen.generate_conj/8-0 (det) (code_gen.m:343) 17 pred ll_backend.code_gen.generate_goal_expr/9-0 (det) (code_gen.m:253) 18 pred ll_backend.code_gen.generate_goal/7-0 (det) (code_gen.m:136) 19 2* pred ll_backend.switch_gen.generate_if_then_else_chain_cases/15-0 (det) (switch_gen.m:622 and others) 21 pred ll_backend.switch_gen.order_and_generate_cases/13-0 (det) (switch_gen.m:406) 22 pred ll_backend.switch_gen.generate_int_switch/16-0 (det) (switch_gen.m:254) 23 pred ll_backend.switch_gen.generate_switch/10-0 (det) (switch_gen.m:164) 24 pred ll_backend.code_gen.generate_goal_expr/9-0 (det) (code_gen.m:271) 25 pred ll_backend.code_gen.generate_goal/7-0 (det) (code_gen.m:136) 26 pred ll_backend.proc_gen.generate_semi_code/10-0 (det) (proc_gen.m:786) 27 pred ll_backend.proc_gen.generate_category_code/11-0 (det) (proc_gen.m:700) 28 pred ll_backend.proc_gen.generate_proc_code/10-0 (det) (proc_gen.m:428) 29 pred top_level.mercury_compile_llds_back_end.llds_backend_pass_for_proc/14-0 (det) (mercury_compile_llds_back_end.m:469) 30 pred top_level.mercury_compile_llds_back_end.llds_backend_pass_for_pred/13-0 (det) (mercury_compile_llds_back_end.m:373) 31 pred top_level.mercury_compile_llds_back_end.llds_backend_pass_by_preds_do_one_pred/14-0 (det) (mercury_compile_llds_back_end.m:338) 32 pred top_level.mercury_compile_llds_back_end.llds_backend_pass_by_preds_loop_over_preds/13-0 (det) (mercury_compile_llds_back_end.m:281) 33 pred top_level.mercury_compile_llds_back_end.llds_backend_pass_by_preds/8-0 (det) (mercury_compile_llds_back_end.m:260) 34 pred top_level.mercury_compile_llds_back_end.hlds_to_llds/10-0 (det) (mercury_compile_llds_back_end.m:170) 35 pred top_level.mercury_compile_augment.choose_and_execute_backend_passes/15-0 (det) (mercury_compile_augment.m:514) 36 pred top_level.mercury_compile_augment.after_front_end_passes/14-0 (det) (mercury_compile_augment.m:412) 37 pred top_level.mercury_compile_augment.process_augmented_module/16-0 (det) (mercury_compile_augment.m:283) 38 pred top_level.mercury_compile_augment.augment_and_process_module/14-0 (det) (mercury_compile_augment.m:209) 39 pred list.map_foldl3/9-0 (det) (list.m:4575) 40 pred top_level.mercury_compile_augment.augment_and_process_all_submodules/15-0 (det) (mercury_compile_augment.m:158) 41 pred top_level.mercury_compile_augment.augment_and_process_source_file/17-0 (det) (mercury_compile_augment.m:136) 42 pred top_level.mercury_compile_main.read_augment_and_process_module/15-0 (det) (mercury_compile_main.m:1162) 43 pred top_level.mercury_compile_main.do_process_compiler_arg/13-0 (det) (mercury_compile_main.m:800) 44 pred top_level.mercury_compile_main.setup_and_process_compiler_arg/13-0 (det) (mercury_compile_main.m:676) 45 pred top_level.mercury_compile_main.setup_and_process_compiler_cmd_line_args/15-0 (det) (mercury_compile_main.m:588) 46 pred top_level.mercury_compile_main.do_op_mode_args/13-0 (det) (mercury_compile_main.m:423) 47 pred top_level.mercury_compile_main.do_op_mode/11-0 (det) (mercury_compile_main.m:248) 48 pred top_level.mercury_compile_main.main_after_setup/6-0 (det) (mercury_compile_main.m:203) 49 pred top_level.mercury_compile_main.real_main/2-0 (det) (mercury_compile_main.m:124) 50 pred mercury_compile.main/2-0 (det) (mercury_compile.m:32) */ test2(Ob, Kind, Item) :- require_complete_switch [Kind] ( Kind = k1, fail ; ( Kind = k2 ; Kind = k3 ), Ob ^ class = host(HostOb), get_value(Ob, HostOb, Value), ( Kind = k2, Item = Value ; Kind = k3, Item = null ) ).