forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ghc-8.0.1_rc1-cgen-constify.patch
34 lines (27 loc) · 1.16 KB
/
ghc-8.0.1_rc1-cgen-constify.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
commit b0cf3ab7a69b878a4335d21a347b56e4b0ca0b7b
Author: Sergei Trofimovich <[email protected]>
Date: Mon Apr 14 19:06:24 2014 +0300
compiler/cmm/PprC.hs: constify local string literals
Consider one-line module
module B (v) where v = "hello"
in -fvia-C mode it generates code like
static char gibberish_str[] = "hello";
It uselessly eats data section (precious resource on ia64!).
The patch switches genrator to emit:
static const char gibberish_str[] = "hello";
Signed-off-by: Sergei Trofimovich <[email protected]>
diff --git a/compiler/cmm/PprC.hs b/compiler/cmm/PprC.hs
index 2398981..fdb578d 100644
--- a/compiler/cmm/PprC.hs
+++ b/compiler/cmm/PprC.hs
@@ -112,6 +112,12 @@ pprTop (CmmProc infos clbl _ graph) =
-- We only handle (a) arrays of word-sized things and (b) strings.
+pprTop (CmmData (Section ReadOnlyData _) (Statics lbl [CmmString str])) =
+ hcat [
+ pprLocalness lbl, ptext (sLit "const char "), ppr lbl,
+ ptext (sLit "[] = "), pprStringInCStyle str, semi
+ ]
+
pprTop (CmmData _section (Statics lbl [CmmString str])) =
hcat [
pprLocalness lbl, ptext (sLit "char "), ppr lbl,