
Hi All, I'm hoping someone here can save me some time. I'm working on something that relies on constants in the same translation unit being pooled before assembly. I've noticed GHC does some const pooling at -O1 , but this doesn't seem to be very consistent, which leads me to believe this is a byproduct of another optimization rather than an explicit thing. I couldn't find anything obvious in the sources, so does GHC intentionally do constant pooling already? Or do I need a new pass to guarantee it. Thanks, Tamar

what precisely do you mean by constant pooling? i can guess several
meanings, but what do you mean specifically?
On Sat, Sep 15, 2018 at 10:33 AM Phyx
Hi All,
I'm hoping someone here can save me some time. I'm working on something that relies on constants in the same translation unit being pooled before assembly.
I've noticed GHC does some const pooling at -O1 , but this doesn't seem to be very consistent, which leads me to believe this is a byproduct of another optimization rather than an explicit thing.
I couldn't find anything obvious in the sources, so does GHC intentionally do constant pooling already? Or do I need a new pass to guarantee it.
Thanks, Tamar _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

I simply mean that the same constant is not emitted more than once to
memory. I.e. If a constant string is used twice, there is only one value in
.rodata for it.
On Fri, Sep 21, 2018, 01:20 Carter Schonwald
what precisely do you mean by constant pooling? i can guess several meanings, but what do you mean specifically?
On Sat, Sep 15, 2018 at 10:33 AM Phyx
wrote: Hi All,
I'm hoping someone here can save me some time. I'm working on something that relies on constants in the same translation unit being pooled before assembly.
I've noticed GHC does some const pooling at -O1 , but this doesn't seem to be very consistent, which leads me to believe this is a byproduct of another optimization rather than an explicit thing.
I couldn't find anything obvious in the sources, so does GHC intentionally do constant pooling already? Or do I need a new pass to guarantee it.
Thanks, Tamar
_______________________________________________
ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

oh ok, so CSE / sharing for string and numerical literals?
On Fri, Sep 21, 2018 at 1:23 AM Phyx
I simply mean that the same constant is not emitted more than once to memory. I.e. If a constant string is used twice, there is only one value in .rodata for it.
On Fri, Sep 21, 2018, 01:20 Carter Schonwald
wrote: what precisely do you mean by constant pooling? i can guess several meanings, but what do you mean specifically?
On Sat, Sep 15, 2018 at 10:33 AM Phyx
wrote: Hi All,
I'm hoping someone here can save me some time. I'm working on something that relies on constants in the same translation unit being pooled before assembly.
I've noticed GHC does some const pooling at -O1 , but this doesn't seem to be very consistent, which leads me to believe this is a byproduct of another optimization rather than an explicit thing.
I couldn't find anything obvious in the sources, so does GHC intentionally do constant pooling already? Or do I need a new pass to guarantee it.
Thanks, Tamar
_______________________________________________
ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
participants (2)
-
Carter Schonwald
-
Phyx