UNREG: add a forward declaration for local literals
authorSergei Trofimovich <siarheit@google.com>
Sun, 29 Jan 2017 21:11:40 +0000 (21:11 +0000)
committerSergei Trofimovich <siarheit@google.com>
Sun, 29 Jan 2017 21:21:42 +0000 (21:21 +0000)
When toplevel literals don't have a way to be exported
from module GHC infers their labels as static.

Example from GHC.Arr:
    static char rdVA_bytes[] = " out of range ";

When this label is used in module internally
we also need to provide it's forward declaration.

Signed-off-by: Sergei Trofimovich <siarheit@google.com>
includes/Stg.h

index e3de331..939bed6 100644 (file)
@@ -224,6 +224,7 @@ typedef StgWord StgWordArray[];
 typedef StgFunPtr       F_;
 
 #define EB_(X)    extern char X[]
+#define IB_(X)    static char X[]
 #define EI_(X)          extern StgWordArray (X) GNU_ATTRIBUTE(aligned (8))
 #define II_(X)          static StgWordArray (X) GNU_ATTRIBUTE(aligned (8))
 #define IF_(f)    static StgFunPtr GNUC3_ATTRIBUTE(used) f(void)