Mercury Bugs - mercury | |||||
View Issue Details | |||||
ID | Project | Category | View Status | Date Submitted | Last Update |
0000142 | mercury | Bug | public | 2010-04-06 15:07 | 2010-07-15 15:47 |
Reporter | wangp | ||||
---|---|---|---|---|---|
Assigned To | wangp | ||||
Priority | normal | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Platform | OS | OS Version | |||
Product Version | |||||
Target Version | Fixed in Version | ||||
Summary | 0000142: problem updating rtti varmaps on inlining | ||||
Description | In the following test case, higher order specialisation creates `or__ho1' from of `or'. We try to inline `or__ho1' into `orr'. In the call to `or__ho1' the same variable `TypeClassInfo_for_dcg_14' appears twice in the argument list, corresponding to the formal arguments V_22 and TypeClassInfo_for_dcg_18 in the callee. Eventually we try to rename the variables in the callee rtti varmap. We hit an assertion failure in apply_substs_to_constraint_map (hlds_rtti.m:777) as the two callee variables holding typeclass_infos map to the same variable in the caller, and supposedly it is for two different constraints. They are the same, just with different type variables. Is the fix to relax the assertion, or something else? | ||||
Additional Information | % mmc --inline-single-use --optimise-higher-order dcg Uncaught Mercury exception: Software Error: hlds_rtti.m: Unexpected: inconsistent typeclass_infos Stack dump follows: 0 pred exception.throw/1-0 (erroneous) (exception.m:411) 1 pred require.error/1-0 (erroneous) (require.m:122) 2 pred libs.compiler_util.unexpected/2-0 (erroneous) (compiler_util.m:88) 3 pred hlds.hlds_rtti.apply_substs_to_constraint_map/7-0 (det) (hlds_rtti.m:804) 4 pred tree234.foldl/4-0 (det) (tree234.m:2625) 5 pred map.foldl/4-0 (det) (map.m:962) 6 pred hlds.hlds_rtti.apply_substitutions_to_rtti_varmaps/5-0 (det) (hlds_rtti.m:679) 7 pred transform_hlds.inlining.do_inline_call/13-0 (det) (inlining.m:774) 8 pred transform_hlds.inlining.inlining_in_call/11-0 (det) (inlining.m:652) 9 pred transform_hlds.inlining.inlining_in_goal/4-0 (det) (inlining.m:558) 10 pred transform_hlds.inlining.inlining_in_conj/4-0 (det) (inlining.m:860) 11 pred transform_hlds.inlining.inlining_in_goal/4-0 (det) (inlining.m:571) 12 2* pred transform_hlds.inlining.inlining_in_conj/4-0 (det) (inlining.m:860 and others) 14 pred transform_hlds.inlining.inlining_in_goal/4-0 (det) (inlining.m:571) 15 pred transform_hlds.inlining.inline_in_proc/5-0 (det) (inlining.m:489) 16 3* pred transform_hlds.inlining.do_inlining/6-0 (det) (inlining.m:260 and others) 19 pred transform_hlds.inlining.inlining/2-0 (det) (inlining.m:249) 20 pred top_level.mercury_compile_middle_passes.maybe_do_inlining/6-0 (det) (mercury_compile_middle_passes.m:941) 21 pred top_level.mercury_compile_middle_passes.middle_pass/7-0 (det) (mercury_compile_middle_passes.m:189) 22 pred top_level.mercury_compile.mercury_compile_after_front_end/11-0 (det) (mercury_compile.m:1650) 23 pred top_level.mercury_compile.mercury_compile/11-0 (det) (mercury_compile.m:1582) 24 pred top_level.mercury_compile.compile/13-0 (det) (mercury_compile.m:1507) 25 pred list.map_foldl2/7-2 (det) (list.m:2359) 26 pred top_level.mercury_compile.compile_all_submodules/13-0 (det) (mercury_compile.m:1296) 27 pred top_level.mercury_compile.process_module_2/8-0 (det) (mercury_compile.m:1269) 28 pred top_level.mercury_compile.process_module/8-0 (det) (mercury_compile.m:1186) 29 pred top_level.mercury_compile.process_arg_2/8-0 (det) (mercury_compile.m:882) 30 pred top_level.mercury_compile.process_arg_build/10-0 (det) (mercury_compile.m:844) 31 pred make.util.build_with_module_options_args_invoked/12-0 (det) (make.util.m:987) 32 pred make.util.build_with_module_options_args/11-0 (det) (make.util.m:940) 33 pred top_level.mercury_compile.process_arg/8-0 (det) (mercury_compile.m:817) 34 pred top_level.mercury_compile.process_arg_list/10-0 (det) (mercury_compile.m:788) 35 pred top_level.mercury_compile.process_args/8-0 (det) (mercury_compile.m:740) 36 pred top_level.mercury_compile.process_all_args/8-0 (det) (mercury_compile.m:546) 37 pred top_level.mercury_compile.main_after_setup/7-0 (det) (mercury_compile.m:422) 38 pred top_level.mercury_compile.real_main_after_expansion/3-0 (det) (mercury_compile.m:308) 39 pred top_level.mercury_compile.real_main/2-0 (det) (mercury_compile.m:118) 40 pred top_level.main/2-0 (det) (top_level.m:56) | ||||
Tags | No tags attached. | ||||
Relationships | |||||
Attached Files | dcg.m (1,474) 2010-04-06 15:07 https://bugs.mercurylang.org/file_download.php?file_id=99&type=bug |
Notes | |||||
|
|||||
|
|
||||
|
|||||
|
|
Issue History | |||||
Date Modified | Username | Field | Change | ||
---|---|---|---|---|---|
2010-04-06 15:07 | wangp | New Issue | |||
2010-04-06 15:07 | wangp | File Added: dcg.m | |||
2010-04-21 11:54 | wangp | Note Added: 0000263 | |||
2010-07-15 15:47 | wangp | Note Added: 0000277 | |||
2010-07-15 15:47 | wangp | Status | new => resolved | ||
2010-07-15 15:47 | wangp | Resolution | open => fixed | ||
2010-07-15 15:47 | wangp | Assigned To | => wangp |