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
