twhitehead: > Consider the following code > > data Data = Data { unData :: !Int } > > func :: Data -> Int > func x = case unData x of > 1 -> 2 > _ -> 0 > > Compiling with GHC 6.8.2 gives the following stg code > > Main.func = > \r [x_slg] > case x_slg of tpl_slx { > Main.Data ipv_slj -> > case ipv_slj of wild_sly { > GHC.Base.I# ds_slm -> > case ds_slm of ds1_slz { > __DEFAULT -> Main.lvl1; > 1 -> Main.lvl; > }; > }; > };
Note that using -funbox-strict-fields helps, A.func :: A.Data -> Int A.func = \ (x_afx :: A.Data) -> case x_afx of tpl_B2 { A.Data rb_B4 -> case rb_B4 of ds_Xg7 { __DEFAULT -> A.lvl1 1 -> A.lvl } } No I#. I'd expect if 'func' was inlined, for the return to be unboxed as well. -- Don _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users