Andy, | > instead of | > | > Note (Tick "M" 23) e | > | > how about | > | > case tick# "M"# 23# of DEFAULT -> e | > | > where tick# is a PrimOp, and the case expression is compiled to | > inline code (ie. no extra info table / return address for e). The | > PrimOp would be marked as having side effects, so the simplifier | > wouldn't rearrange code around it. There would be nothing HPC- | > specific in CoreSyn, CorePrep, CoreToStg, or StgSyn. All you need | > to do is provide an implementation for tick# in CgPrimOp. I'm | > probably missing something! | > | > The "M"# is a Literal - a MachStr. I imagine you don't need the | > package name, because it is always the current package name (the | > code generator for tick# can prepend the package name if it needs | > to). A bit of cleverness in CgPrimOp is required to common up all | > the module names, I guess. | > | | I tried this, and the tick# M# 23# got lifted out into a CAF, and was | evaluated only once :-) Perhaps the PrimOp's side_effect flag | was off on that build, though. Does the side_effect flag stop this?
What you want is a) Return an unboxed result (can be State#) b) the side-effect flag If both these hold, then the primop won't be floated out anywhere. Please do try this. I would much, much rather use a PrimOp than a Note. Indeed I think we should do the SCC stuff via primops too. Simon _______________________________________________ Cvs-ghc mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/cvs-ghc
