llvmGen: Consolidate MetaExpr pretty-printing
authorBen Gamari <ben@smart-cactus.org>
Fri, 17 Jun 2016 21:52:39 +0000 (23:52 +0200)
committerBen Gamari <ben@smart-cactus.org>
Sat, 18 Jun 2016 09:49:21 +0000 (11:49 +0200)
Previously this logic was duplicated needlessly.

compiler/llvmGen/Llvm/MetaData.hs
compiler/llvmGen/Llvm/PpLlvm.hs

index a50553c..3bdcd60 100644 (file)
@@ -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.
index d92e3c0..47e26ab 100644 (file)
@@ -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