[CakeML-dev] compiler explorer

Magnus Myreen magnus.myreen at gmail.com
Fri Jun 30 06:50:37 UTC 2017


On 30 June 2017 at 08:39, Ramana Kumar <Ramana.Kumar at cl.cam.ac.uk> wrote:
> The compiler explorer seems to have been written prior to some changes to
> the locations type. Looking at this line in particular, I notice that the
> offset field of the locn record is not used. Is this correct?
>
>   (compile_exp t env (Lannot e (Locs st en)) =
>     let t' = if t = None then t else (Cons (Cons (Cons (Cons Empty st.row)
> st.col) en.row) en.col) in
>       compile_exp t' env e)
>
> for reference:
>
> val _ = Datatype `
>  locn = <| row : num;  col : num; offset : num |>`;
>
> val _ = Datatype `
>   locs = Locs locn locn
> `

I don't think it matters. As far as I know, the offset is just another
way of representing the same information.

By the way, the (Cons (Cons (Cons (Cons Empty st.row) pattern should
have constructor `SourceLoc num num num num` of its own in the tra
type (backend_common).

> Another problematic case, where probably I am not passing along the right
> traces in the AallocEmpty case:
>
>   (compile_exp t env (ast$App op es) =
>     if op = AallocEmpty then
>       FOLDR (Let t NONE) (modLang$App t Aalloc [Lit t (IntLit (&0)); Lit t
> (IntLit (&0))])
>         (REVERSE (compile_exps t env es))
>     else
>       modLang$App t (astOp_to_modOp op) (compile_exps t env es))

Yup, the function needs to become a little bit more complicated in
order to ensure that each constructor has a unique trace t.



More information about the Developers mailing list