summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2016-06-17 21:52:39 (GMT)
committerBen Gamari <ben@smart-cactus.org>2016-06-18 09:49:21 (GMT)
commit85e09b1b621840fd923971d48df62b99580be618 (patch)
tree69f4f8b5c867cbeeafd3ee1a5d2cf2a51e754560
parent2396d9bb76c11775589fc91b362a61c4a92d27fa (diff)
downloadghc-85e09b1b621840fd923971d48df62b99580be618.zip
ghc-85e09b1b621840fd923971d48df62b99580be618.tar.gz
ghc-85e09b1b621840fd923971d48df62b99580be618.tar.bz2
llvmGen: Consolidate MetaExpr pretty-printing
Previously this logic was duplicated needlessly.
-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 a50553c..3bdcd60 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 d92e3c0..47e26ab 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