summaryrefslogtreecommitdiff
path: root/compiler/codeGen
diff options
context:
space:
mode:
authorBen.Lippmeier@anu.edu.au <unknown>2009-11-17 04:37:16 +0000
committerBen.Lippmeier@anu.edu.au <unknown>2009-11-17 04:37:16 +0000
commitf64aaa7b4230cec62f0679ddf998fe79e0a42820 (patch)
tree594fc7a6d1b797d2016016954d72bc64f03ca371 /compiler/codeGen
parentf5f023361796c9553933eccf82e0c066e5e30814 (diff)
downloadhaskell-f64aaa7b4230cec62f0679ddf998fe79e0a42820.tar.gz
Use opt_PIC not #defined __PIC__ in compiler source.
Diffstat (limited to 'compiler/codeGen')
-rw-r--r--compiler/codeGen/CgCon.lhs8
-rw-r--r--compiler/codeGen/StgCmmCon.hs11
2 files changed, 14 insertions, 5 deletions
diff --git a/compiler/codeGen/CgCon.lhs b/compiler/codeGen/CgCon.lhs
index 36c851d5ba..0981811ee7 100644
--- a/compiler/codeGen/CgCon.lhs
+++ b/compiler/codeGen/CgCon.lhs
@@ -171,9 +171,11 @@ because they don't support cross package data references well.
\begin{code}
-#if !(defined(__PIC__) && defined(mingw32_HOST_OS))
buildDynCon binder _ con [arg_amode]
| maybeIntLikeCon con
+#if defined(mingw32_TARGET_OS)
+ , not opt_PIC
+#endif
, (_, CmmLit (CmmInt val _)) <- arg_amode
, let val_int = (fromIntegral val) :: Int
, val_int <= mAX_INTLIKE && val_int >= mIN_INTLIKE
@@ -185,6 +187,9 @@ buildDynCon binder _ con [arg_amode]
buildDynCon binder _ con [arg_amode]
| maybeCharLikeCon con
+#if defined(mingw32_TARGET_OS)
+ , not opt_PIC
+#endif
, (_, CmmLit (CmmInt val _)) <- arg_amode
, let val_int = (fromIntegral val) :: Int
, val_int <= mAX_CHARLIKE && val_int >= mIN_CHARLIKE
@@ -193,7 +198,6 @@ buildDynCon binder _ con [arg_amode]
-- CHARLIKE closures consist of a header and one word payload
charlike_amode = CmmLit (cmmLabelOffW charlike_lbl offsetW)
; returnFC (taggedStableIdInfo binder charlike_amode (mkConLFInfo con) con) }
-#endif
\end{code}
diff --git a/compiler/codeGen/StgCmmCon.hs b/compiler/codeGen/StgCmmCon.hs
index 18c2509ccd..3226f0c111 100644
--- a/compiler/codeGen/StgCmmCon.hs
+++ b/compiler/codeGen/StgCmmCon.hs
@@ -39,6 +39,7 @@ import Literal
import PrelInfo
import Outputable
import Util ( lengthIs )
+import StaticFlags ( opt_PIC )
import Data.Char
@@ -153,9 +154,11 @@ We don't support this optimisation when compiling into Windows DLLs yet
because they don't support cross package data references well.
-}
-#if !(defined(__PIC__) && defined(mingw32_HOST_OS))
buildDynCon binder _cc con [arg]
| maybeIntLikeCon con
+#if defined(mingw32_TARGET_OS)
+ , not opt_PIC
+#endif
, StgLitArg (MachInt val) <- arg
, val <= fromIntegral mAX_INTLIKE -- Comparisons at type Integer!
, val >= fromIntegral mIN_INTLIKE -- ...ditto...
@@ -167,7 +170,10 @@ buildDynCon binder _cc con [arg]
; return (litIdInfo binder (mkConLFInfo con) intlike_amode, mkNop) }
buildDynCon binder _cc con [arg]
- | maybeCharLikeCon con
+ | maybeCharLikeCon con
+#if defined(mingw32_TARGET_OS)
+ , not opt_PIC
+#endif
, StgLitArg (MachChar val) <- arg
, let val_int = ord val :: Int
, val_int <= mAX_CHARLIKE
@@ -177,7 +183,6 @@ buildDynCon binder _cc con [arg]
-- CHARLIKE closures consist of a header and one word payload
charlike_amode = cmmLabelOffW charlike_lbl offsetW
; return (litIdInfo binder (mkConLFInfo con) charlike_amode, mkNop) }
-#endif
-------- buildDynCon: the general case -----------
buildDynCon binder ccs con args