Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/ceef80b2fbd414c701bb2a346226a357475983ad

>---------------------------------------------------------------

commit ceef80b2fbd414c701bb2a346226a357475983ad
Author: Ian Lynagh <[email protected]>
Date:   Sat Oct 15 10:41:47 2011 +0100

    Remove CPP from llvmGen/LlvmCodeGen/CodeGen.hs

>---------------------------------------------------------------

 compiler/llvmGen/LlvmCodeGen/CodeGen.hs |   20 +++++++++-----------
 1 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/compiler/llvmGen/LlvmCodeGen/CodeGen.hs 
b/compiler/llvmGen/LlvmCodeGen/CodeGen.hs
index 09ccf72..b4e2790 100644
--- a/compiler/llvmGen/LlvmCodeGen/CodeGen.hs
+++ b/compiler/llvmGen/LlvmCodeGen/CodeGen.hs
@@ -22,6 +22,7 @@ import FastString
 import ForeignCall
 import Outputable hiding ( panic, pprPanic )
 import qualified Outputable
+import Platform
 import UniqSupply
 import Unique
 import Util
@@ -143,11 +144,10 @@ genCall :: LlvmEnv -> CmmCallTarget -> [HintedCmmFormal] 
-> [HintedCmmActual]
 
 -- Write barrier needs to be handled specially as it is implemented as an LLVM
 -- intrinsic function.
-#if i386_TARGET_ARCH || x86_64_TARGET_ARCH || sparc_TARGET_ARCH
-genCall env (CmmPrim MO_WriteBarrier) _ _ _ = return (env, nilOL, [])
-
-#else
-genCall env (CmmPrim MO_WriteBarrier) _ _ _ = do
+genCall env (CmmPrim MO_WriteBarrier) _ _ _
+ | platformArch (getLlvmPlatform env) `elem` [ArchX86, ArchX86_64, ArchSPARC]
+    = return (env, nilOL, [])
+ | otherwise = do
     let fname = fsLit "llvm.memory.barrier"
     let funSig = LlvmFunctionDecl fname ExternallyVisible CC_Ccc LMVoid
                     FixedArgs (tysToParams [i1, i1, i1, i1, i1]) llvmFunAlign
@@ -167,7 +167,6 @@ genCall env (CmmPrim MO_WriteBarrier) _ _ _ = do
     where
         lmTrue :: LlvmVar
         lmTrue  = mkIntLit i1 (-1)
-#endif
 
 -- Handle popcnt function specifically since GHC only really has i32 and i64
 -- types and things like Word8 are backed by an i32 and just present a logical
@@ -235,11 +234,10 @@ genCall env target res args ret = do
 
     -- translate to LLVM call convention
     let lmconv = case cconv of
-#if i386_TARGET_ARCH || x86_64_TARGET_ARCH
-            StdCallConv  -> CC_X86_Stdcc
-#else
-            StdCallConv  -> CC_Ccc
-#endif
+            StdCallConv  -> case platformArch (getLlvmPlatform env) of
+                            ArchX86    -> CC_X86_Stdcc
+                            ArchX86_64 -> CC_X86_Stdcc
+                            _          -> CC_Ccc
             CCallConv    -> CC_Ccc
             PrimCallConv -> CC_Ccc
             CmmCallConv  -> panic "CmmCallConv not supported here!"



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to