Re: Inhibiting the specialiser?

2017-09-14 Thread Harendra Kumar
As per the GHC manual, it should be -fno-specialise for disabling all specialization, and -fno-cross-module-specialise for disabling only the specialization of imported INLINABLE functions. Both of these flags are "on" when using -O and -O2. -harendra On 15 September 2017 at 07:15, Conal Elliott

Re: Using stringize and string concatenation in ghc preprocessing

2016-08-21 Thread Harendra Kumar
ugust 2016 at 20:33, Brandon Allbery <allber...@gmail.com> wrote: > >> On Sat, Aug 20, 2016 at 2:27 PM, Harendra Kumar <harendra.ku...@gmail.com >> > wrote: >> >>> But "-optP" seems to only append to the flags that GHC already passes >>> and

Using stringize and string concatenation in ghc preprocessing

2016-08-20 Thread Harendra Kumar
Hi, To reduce boilerplate code in an FFI implementation file I am trying to use the stringizing and string concatenation features of the C preprocessor. Since ghc passes '-traditional' to the preprocessor which disables these features I thought I can pass my own flags to the preprocessor like

Re: Behavior of GHC_PACKAGE_PATH

2016-08-19 Thread Harendra Kumar
for that. -harendra On 20 August 2016 at 06:37, Albert Y. C. Lai <tre...@vex.net> wrote: > On 2016-08-16 07:08 AM, Harendra Kumar wrote: > >> As per the GHC manual >> (https://downloads.haskell.org/~ghc/master/users-guide/packa >> ges.html#the-ghc-package-path-

Behavior of GHC_PACKAGE_PATH

2016-08-16 Thread Harendra Kumar
Hi, As per the GHC manual (https://downloads.haskell. org/~ghc/master/users-guide/packages.html#the-ghc-package- path-environment-variable), packages which come earlier in the GHC_PACKAGE_PATH supersede the ones which come later. But that does not seem to be the case always. I am dealing with a

Re: CMM-to-ASM: Register allocation wierdness

2016-06-25 Thread Harendra Kumar
on ghc trac and raised two tickets: #12231 & #12232. Yay! I also added the code branch to reproduce this on github ( https://github.com/harendra-kumar/unicode-transforms/tree/ghc-trac-12231). -harendra ___ Glasgow-haskell-users mailing list Glasgow

Re: CMM-to-ASM: Register allocation wierdness

2016-06-17 Thread Harendra Kumar
ted CMM or the generation of CMM itself. > > > Very interesting, thanks for writing this down! Indeed if these checks > really are redundant then we should try to avoid them. Do you have any > code you could share that demosntrates this? > The gist that I provided in this email thread e

Re: CMM-to-ASM: Register allocation wierdness

2016-06-16 Thread Harendra Kumar
. That will be entirely free since it can be done at the llvm level. My point is that it will pay off in things like that if we invest in integrating llvm better. -harendra On 16 June 2016 at 16:48, Karel Gardas <karel.gar...@centrum.cz> wrote: > On 06/16/16 12:53 PM, Harendra Kumar wrote: > >> A

Re: CMM-to-ASM: Register allocation wierdness

2016-06-16 Thread Harendra Kumar
On 16 June 2016 at 13:59, Ben Gamari wrote: > > It actually came to my attention while researching this that the > -fregs-graph flag is currently silently ignored [2]. Unfortunately this > means you'll need to build a new compiler if you want to try using it. Yes I did try

Re: CMM-to-ASM: Register allocation wierdness

2016-06-13 Thread Harendra Kumar
with the 8.0.1 trace: https://gist.github.com/harendra-kumar/7d34c6745f604a15a872768e57cd2447 thanks, harendra On 13 June 2016 at 00:08, Harendra Kumar <harendra.ku...@gmail.com> wrote: > Hi, > > I am implementing unicode normalization in Haskell. I challenged myself to > mat

CMM-to-ASM: Register allocation wierdness

2016-06-12 Thread Harendra Kumar
level. Here is a github gist of the assembly instructions executed in the fast path of the loop, corresponding cmm snippets and also the full cmm corresponding to the loop: https://gist.github.com/harendra-kumar/7d34c6745f604a15a872768e57cd2447 I have annotated the assembly code with labels

Re: suboptimal ghc code generation in IO vs equivalent pure code case

2016-05-14 Thread Harendra Kumar
be erased altogether in > code generation. > On May 14, 2016 4:21 PM, "Tyson Whitehead" <twhiteh...@gmail.com> wrote: > >> On 14/05/16 02:31 PM, Harendra Kumar wrote: >> >>> The difference seems to be entirely due to memory pressure. At list size &g

Re: suboptimal ghc code generation in IO vs equivalent pure code case

2016-05-14 Thread Harendra Kumar
ckage if I want. > I'll try to do that this week, but no promises. I could forward his email > if you just want to try it out. > That's exactly what I was thinking about. Can you please forward it to me, I will try it out. Thanks, Harendra > On May 14, 2016 2:31 PM, "Harendra

Re: suboptimal ghc code generation in IO vs equivalent pure code case

2016-05-14 Thread Harendra Kumar
time 66.1% (61.1% elapsed) Pure case: %GC time 2.6% (3.3% elapsed) Not sure if there is a way to write this code in IO monad which can reduce this overhead. -harendra On 14 May 2016 at 17:10, Harendra Kumar <harendra.ku...@gmail.com> wrote: > > You are right a

Re: suboptimal ghc code generation in IO vs equivalent pure code case

2016-05-14 Thread Harendra Kumar
e, May 10, 2016 at 4:45 AM, Harendra Kumar > <harendra.ku...@gmail.com> wrote: > > Thanks Dan, that helped. I did notice and suspect the update frame and the > > unboxed tuple but given my limited knowledge about ghc/core/stg/cmm I was > > not sure what is going on. In

Re: suboptimal ghc code generation in IO vs equivalent pure code case

2016-05-10 Thread Harendra Kumar
> False -> > case $sa1_sn0g ipv_smUT ipv1_smV6 ipv2_imWU > of _ { (# ipv4_XmXv, ipv5_XmXx #) -> > let { > l1 = : sc_sn0b [] > l3 = ++ l1 ipv5_XmXx > } in (# ipv4_XmXv, l3 #) > > I can't say for certain that that's the only thing

suboptimal ghc code generation in IO vs equivalent pure code case

2016-05-09 Thread Harendra Kumar
I have a loop which runs millions of times. For some reason I have to run it in the IO monad. I noticed that when I convert the code from pure to IO monad the generated assembly code in essence is almost identical except one difference where it puts a piece of code in a separate block which is

Re: idea: tool to suggest adding imports

2016-03-18 Thread Harendra Kumar
That's cool, I'd love to have that feature in my editor. Have you seen this: https://hackage.haskell.org/package/halberd The readme says: ---cut--- Halberd is a tool to help you add missing imports to your Haskell source files. With it, you can write your source without imports, call Halberd,

ghci - running functions defined in a where clause

2015-12-01 Thread Harendra Kumar
In ghci, is there a way to address and run functions defined in the where clause of a function? I do not see those functions available in the scope. Is this supported? I can imagine two classes of functions in a where clause. Functions which refer to the bindings in the surrounding scope and