diff options
author | Erik de Castro Lopo <erikd@mega-nerd.com> | 2015-10-10 10:47:37 +1100 |
---|---|---|
committer | Erik de Castro Lopo <erikd@mega-nerd.com> | 2015-10-10 10:49:01 +1100 |
commit | 80602af0ad8ae223d294483163fd471d80c2ccd9 (patch) | |
tree | 4bca31b375e08dcd52d76b8a6456d40b23562380 /compiler/llvmGen/Llvm | |
parent | 5dc3db743ec477978b9727a313951be44dbd170f (diff) | |
download | haskell-80602af0ad8ae223d294483163fd471d80c2ccd9.tar.gz |
Revert "Switch to LLVM version 3.7"
Pushed by mistacke before it was ready.
This reverts commit 5dc3db743ec477978b9727a313951be44dbd170f.
Diffstat (limited to 'compiler/llvmGen/Llvm')
-rw-r--r-- | compiler/llvmGen/Llvm/PpLlvm.hs | 25 | ||||
-rw-r--r-- | compiler/llvmGen/Llvm/Types.hs | 1 |
2 files changed, 10 insertions, 16 deletions
diff --git a/compiler/llvmGen/Llvm/PpLlvm.hs b/compiler/llvmGen/Llvm/PpLlvm.hs index e032a51eec..9234213203 100644 --- a/compiler/llvmGen/Llvm/PpLlvm.hs +++ b/compiler/llvmGen/Llvm/PpLlvm.hs @@ -117,7 +117,6 @@ ppLlvmMeta (MetaNamed n m) -- | Print out an LLVM metadata value. ppLlvmMetaExpr :: MetaExpr -> SDoc -ppLlvmMetaExpr (MetaVar (LMLitVar (LMNullLit _))) = text "null" ppLlvmMetaExpr (MetaStr s ) = text "!" <> doubleQuotes (ftext s) ppLlvmMetaExpr (MetaNode n ) = text "!" <> int n ppLlvmMetaExpr (MetaVar v ) = ppr v @@ -274,12 +273,17 @@ ppCall ct fptr args attrs = case fptr of ++ "local var of pointer function type." where - ppCall' (LlvmFunctionDecl _ _ cc ret _ _ _) = + ppCall' (LlvmFunctionDecl _ _ cc ret argTy params _) = let tc = if ct == TailCall then text "tail " else empty ppValues = hsep $ punctuate comma $ map ppCallMetaExpr args + ppArgTy = (ppCommaJoin $ map fst params) <> + (case argTy of + VarArgs -> text ", ..." + FixedArgs -> empty) + fnty = space <> lparen <> ppArgTy <> rparen <> char '*' attrDoc = ppSpaceJoin attrs in tc <> text "call" <+> ppr cc <+> ppr ret - <+> ppName fptr <> lparen <+> ppValues + <> fnty <+> ppName fptr <> lparen <+> ppValues <+> rparen <+> attrDoc -- Metadata needs to be marked as having the `metadata` type when used @@ -358,11 +362,8 @@ ppCmpXChg addr old new s_ord f_ord = -- of specifying alignment. ppLoad :: LlvmVar -> SDoc -ppLoad var = text "load" <+> derefType <+> ppr var <> align +ppLoad var = text "load" <+> ppr var <> align where - derefType = case getVarType var of - LMPointer x -> ppr x <> comma - _ -> empty align | isVector . pLower . getVarType $ var = text ", align 1" | otherwise = empty @@ -372,10 +373,7 @@ ppALoad ord st var = sdocWithDynFlags $ \dflags -> align = text ", align" <+> ppr alignment sThreaded | st = text " singlethread" | otherwise = empty - derefType = case getVarType var of - LMPointer x -> ppr x <> comma - _ -> empty - in text "load atomic" <+> derefType <+> ppr var <> sThreaded <+> ppSyncOrdering ord <> align + in text "load atomic" <+> ppr var <> sThreaded <+> ppSyncOrdering ord <> align ppStore :: LlvmVar -> LlvmVar -> SDoc ppStore val dst @@ -411,10 +409,7 @@ ppGetElementPtr :: Bool -> LlvmVar -> [LlvmVar] -> SDoc ppGetElementPtr inb ptr idx = let indexes = comma <+> ppCommaJoin idx inbound = if inb then text "inbounds" else empty - derefType = case getVarType ptr of - LMPointer x -> ppr x <> comma - _ -> error "ppGetElementPtr" - in text "getelementptr" <+> inbound <+> derefType <+> ppr ptr <> indexes + in text "getelementptr" <+> inbound <+> ppr ptr <> indexes ppReturn :: Maybe LlvmVar -> SDoc diff --git a/compiler/llvmGen/Llvm/Types.hs b/compiler/llvmGen/Llvm/Types.hs index 4f8d7ab4a1..9780bf39cf 100644 --- a/compiler/llvmGen/Llvm/Types.hs +++ b/compiler/llvmGen/Llvm/Types.hs @@ -581,7 +581,6 @@ instance Outputable LlvmCallConvention where ppr CC_Ccc = text "ccc" ppr CC_Fastcc = text "fastcc" ppr CC_Coldcc = text "coldcc" - ppr (CC_Ncc 10) = text "ghccc" ppr (CC_Ncc i) = text "cc " <> ppr i ppr CC_X86_Stdcc = text "x86_stdcallcc" |