diff options
author | johnvg | 2009-07-28 12:38:20 +0000 |
---|---|---|
committer | johnvg | 2009-07-28 12:38:20 +0000 |
commit | 684ed8e51e8c5ad6010c36c87b3e5c029366f644 (patch) | |
tree | 60928ff4c1b252ab2d426b3e3b84daed033fdabb /frontend/convertcases.icl | |
parent | create new fv_info_ptr's for strict lets in distributeLets, because otherwise (diff) |
mark strict vars with VI_StrictLetVar, transform case of such a var
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@1745 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/convertcases.icl')
-rw-r--r-- | frontend/convertcases.icl | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/frontend/convertcases.icl b/frontend/convertcases.icl index cd62580..171f49c 100644 --- a/frontend/convertcases.icl +++ b/frontend/convertcases.icl @@ -630,7 +630,7 @@ where = var_heap set_strict_let_expr_info lb=:{lb_dst={fv_info_ptr}} var_heap - # (new_info_ptr, var_heap) = newPtr VI_Empty var_heap + # (new_info_ptr, var_heap) = newPtr VI_StrictLetVar var_heap = ({lb & lb_dst.fv_info_ptr = new_info_ptr}, var_heap <:= (fv_info_ptr, VI_CaseOrStrictLetVar new_info_ptr)) distribute_lets_in_non_distributed_let di {lb_dst={fv_ident,fv_info_ptr}} ds=:{ds_var_heap} @@ -717,11 +717,13 @@ where is_lhs_var (Var {var_info_ptr, var_ident}) var_heap = case sreadPtr var_info_ptr var_heap of VI_LocalLetVar - -> False ->> (var_ident.id_name, "rhs1") + -> False VI_LetExpression _ - -> False ->> (var_ident.id_name, "rhs2") + -> False + VI_StrictLetVar + -> False info - -> True ->> (var_ident.id_name, "lhs", info) + -> True is_lhs_var _ _ = False |