aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjohnvg2009-07-28 13:04:44 +0000
committerjohnvg2009-07-28 13:04:44 +0000
commit8a0e5cdb04ac97379204cbd556f53bfb7de15b71 (patch)
tree7b0e09298e3348701cdec7bce890f0770b87d84c
parentmark strict vars with VI_StrictLetVar, transform case of such a var (diff)
fix uniqueness type bug (not detected because of bug in refmark)
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@1746 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
-rw-r--r--frontend/checkFunctionBodies.icl4
-rw-r--r--frontend/trans.icl7
-rw-r--r--frontend/transform.icl4
3 files changed, 6 insertions, 9 deletions
diff --git a/frontend/checkFunctionBodies.icl b/frontend/checkFunctionBodies.icl
index 3d1daf0..1f45465 100644
--- a/frontend/checkFunctionBodies.icl
+++ b/frontend/checkFunctionBodies.icl
@@ -1472,7 +1472,7 @@ checkQualifiedIdentExpression free_vars module_id ident_name is_expr_list e_inpu
| is_called_before ei_fun_index calls
-> (e_state,cs)
# entry = {entry & ste_kind = STE_DclMacroOrLocalMacroFunction [ ei_fun_index : calls ]}
- # cs = {cs & cs_symbol_table = writePtr symbol_table_ptr entry cs_symbol_table}
+ # cs = {cs & cs_symbol_table = writePtr symbol_table_ptr entry cs.cs_symbol_table}
-> ({e_state & es_calls = [MacroCall ste_mod_index ste_index ste_def_level : es_calls ]},cs)
/* also imported unqualified */
STE_DclMacroOrLocalMacroFunction calls
@@ -1480,7 +1480,7 @@ checkQualifiedIdentExpression free_vars module_id ident_name is_expr_list e_inpu
| is_called_before ei_fun_index calls
-> (e_state,cs)
# entry = {entry & ste_kind = STE_DclMacroOrLocalMacroFunction [ ei_fun_index : calls ]}
- # cs = {cs & cs_symbol_table = writePtr symbol_table_ptr entry cs_symbol_table}
+ # cs = {cs & cs_symbol_table = writePtr symbol_table_ptr entry cs.cs_symbol_table}
-> ({e_state & es_calls = [MacroCall ei_mod_index ste_index ste_def_level : es_calls ]},cs)
_
| macro_is_called_before decl_index mod_index es_calls
diff --git a/frontend/trans.icl b/frontend/trans.icl
index ae05198..357b451 100644
--- a/frontend/trans.icl
+++ b/frontend/trans.icl
@@ -17,12 +17,9 @@ SwitchCurriedFusion fuse xtra dont_fuse :== fuse
SwitchExtraCurriedFusion fuse macro :== fuse//(fuse && macro)//fuse
SwitchTrivialFusion fuse dont_fuse :== fuse
SwitchUnusedFusion fuse dont_fuse :== fuse
-SwitchReanalyseFunction rean dont_rean :== dont_rean
SwitchTransformConstants tran dont_tran :== tran
SwitchSpecialFusion fuse dont_fuse :== fuse
SwitchArityChecks check dont_check :== check
-SwitchNWayFusion fuse dont_fuse :== dont_fuse
-SwitchDirectConsumerUnfold unfold dont :== dont
SwitchAutoFoldCaseInCase fold dont :== fold
SwitchAutoFoldAppInCase fold dont :== fold
SwitchAlwaysIntroduceCaseFunction yes no :== no//yes
@@ -2428,12 +2425,12 @@ transformFunctionApplication fun_def instances cc=:{cc_size, cc_args, cc_linear_
# (expr,ti) = transformApplication { app & app_symb = app_symb, app_args = app_args } extra_args ro ti
= possiblyAddStrictLetBinds expr strict_let_binds ti
# (FI_Function {gf_fun_index, gf_fun_def}, ti_fun_heap) = readPtr fun_def_ptr ti_fun_heap
+ # ti = {ti & ti_fun_heap = ti_fun_heap}
| gf_fun_index == (-1)
= (build_application { app & app_args = app_args } extra_args, ti) // ---> ("known failed instance")
# app_symb` = { app_symb & symb_kind = SK_GeneratedFunction fun_def_ptr gf_fun_index }
(app_args, extra_args) = complete_application gf_fun_def.fun_arity new_args extra_args
- # ti = {ti & ti_fun_heap = ti_fun_heap } // ---> ("known instance",gf_fun_index)
- # (expr,ti) = transformApplication { app & app_symb = app_symb`, app_args = app_args } extra_args ro ti
+ # (expr,ti) = transformApplication { app & app_symb = app_symb`, app_args = app_args } extra_args ro ti // ---> ("known instance",gf_fun_index)
= possiblyAddStrictLetBinds expr strict_let_binds ti
| SwitchTrivialFusion ro.ro_transform_fusion False
= transform_trivial_function app app_args extra_args ro ti
diff --git a/frontend/transform.icl b/frontend/transform.icl
index 553c217..1fd8b7c 100644
--- a/frontend/transform.icl
+++ b/frontend/transform.icl
@@ -2281,7 +2281,7 @@ collectUpdateVar var=:{var_ident,var_info_ptr,var_expr_ptr} update_selectors fre
# (original, free_vars, dynamics, cos) = collectUpdateVar alias update_selectors free_vars dynamics { cos & cos_var_heap = cos_var_heap }
-> ({ original & var_expr_ptr = var_expr_ptr }, free_vars, dynamics, cos)
VI_RefFromTupleSel0 count
- -> (var, free_vars, dynamics, { cos & cos_var_heap = writePtr var_info_ptr (VI_Count (inc count) False) cos.cos_var_heap })
+ -> (var, free_vars, dynamics, { cos & cos_var_heap = writePtr var_info_ptr (VI_Count (inc count) False) cos_var_heap })
VI_RefFromArrayUpdate count selectors
| same_selections selectors update_selectors
-> (var, free_vars, dynamics, { cos & cos_var_heap = writePtr var_info_ptr (VI_RefFromArrayUpdate (inc count) update_selectors) cos_var_heap })
@@ -2291,7 +2291,7 @@ collectUpdateVar var=:{var_ident,var_info_ptr,var_expr_ptr} update_selectors fre
# cos_var_heap = writePtr var_info_ptr (VI_Count (inc count) False) cos_var_heap
-> (var, free_vars, dynamics, { cos & cos_var_heap = cos_var_heap })
VI_RefFromArrayUpdateOfTupleElem2 count _
- -> (var, free_vars, dynamics, { cos & cos_var_heap = writePtr var_info_ptr (VI_Count (inc count) False) cos.cos_var_heap })
+ -> (var, free_vars, dynamics, { cos & cos_var_heap = writePtr var_info_ptr (VI_Count (inc count) False) cos_var_heap })
collectUpdateTupleSelect2Var :: !BoundVar ![Selection] ![FreeVar] ![DynamicPtr] !*CollectState -> (!BoundVar, ![FreeVar],![DynamicPtr],!*CollectState)
collectUpdateTupleSelect2Var var=:{var_ident,var_info_ptr,var_expr_ptr} update_selectors free_vars dynamics cos=:{cos_var_heap}