blob: 877a5827e4ea83054684762a274eef01cc306111 [file] [log] [blame]
commit b0cf3ab7a69b878a4335d21a347b56e4b0ca0b7b
Author: Sergei Trofimovich <slyfox@gentoo.org>
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 <slyfox@gentoo.org>
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,