summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2016-06-17 23:52:39 +0200
committerBen Gamari <ben@smart-cactus.org>2016-06-18 11:49:21 +0200
commit85e09b1b621840fd923971d48df62b99580be618 (patch)
tree69f4f8b5c867cbeeafd3ee1a5d2cf2a51e754560 /compiler
parent2396d9bb76c11775589fc91b362a61c4a92d27fa (diff)
downloadhaskell-85e09b1b621840fd923971d48df62b99580be618.tar.gz
llvmGen: Consolidate MetaExpr pretty-printing
Previously this logic was duplicated needlessly.
Diffstat (limited to 'compiler')
-rw-r--r--compiler/llvmGen/Llvm/MetaData.hs5
-rw-r--r--compiler/llvmGen/Llvm/PpLlvm.hs13
2 files changed, 5 insertions, 13 deletions
diff --git a/compiler/llvmGen/Llvm/MetaData.hs b/compiler/llvmGen/Llvm/MetaData.hs
index a50553ccb0..3bdcd60699 100644
--- a/compiler/llvmGen/Llvm/MetaData.hs
+++ b/compiler/llvmGen/Llvm/MetaData.hs
@@ -72,10 +72,11 @@ data MetaExpr = MetaStr LMString
deriving (Eq)
instance Outputable MetaExpr where
- ppr (MetaStr s ) = text "!\"" <> ftext s <> char '"'
+ ppr (MetaVar (LMLitVar (LMNullLit _))) = text "null"
+ ppr (MetaStr s ) = char '!' <> doubleQuotes (ftext s)
ppr (MetaNode n ) = ppr n
ppr (MetaVar v ) = ppr v
- ppr (MetaStruct es) = text "!{ " <> ppCommaJoin es <> char '}'
+ ppr (MetaStruct es) = char '!' <> braces (ppCommaJoin es)
-- | Associates some metadata with a specific label for attaching to an
-- instruction.
diff --git a/compiler/llvmGen/Llvm/PpLlvm.hs b/compiler/llvmGen/Llvm/PpLlvm.hs
index d92e3c0739..47e26ab409 100644
--- a/compiler/llvmGen/Llvm/PpLlvm.hs
+++ b/compiler/llvmGen/Llvm/PpLlvm.hs
@@ -107,22 +107,13 @@ ppLlvmMetas metas = vcat $ map ppLlvmMeta metas
-- | Print out an LLVM metadata definition.
ppLlvmMeta :: MetaDecl -> SDoc
ppLlvmMeta (MetaUnnamed n m)
- = ppr n <> text " = " <> ppLlvmMetaExpr m
+ = ppr n <+> equals <+> ppr m
ppLlvmMeta (MetaNamed n m)
- = exclamation <> ftext n <> text " = !" <> braces nodes
+ = exclamation <> ftext n <+> equals <+> exclamation <> braces nodes
where
nodes = hcat $ intersperse comma $ map ppr 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 ) = ppr n
-ppLlvmMetaExpr (MetaVar v ) = ppr v
-ppLlvmMetaExpr (MetaStruct es) =
- text "!{" <> hsep (punctuate comma (map ppLlvmMetaExpr es)) <> char '}'
-
-- | Print out a list of function definitions.
ppLlvmFunctions :: LlvmFunctions -> SDoc