diff options
Diffstat (limited to 'compiler/llvmGen/Llvm/PpLlvm.hs')
-rw-r--r-- | compiler/llvmGen/Llvm/PpLlvm.hs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/compiler/llvmGen/Llvm/PpLlvm.hs b/compiler/llvmGen/Llvm/PpLlvm.hs index de7676635c..0b3deac764 100644 --- a/compiler/llvmGen/Llvm/PpLlvm.hs +++ b/compiler/llvmGen/Llvm/PpLlvm.hs @@ -117,11 +117,11 @@ ppLlvmMeta (MetaNamed n m) -- | Print out an LLVM metadata value. ppLlvmMetaExpr :: MetaExpr -> SDoc -ppLlvmMetaExpr (MetaStr s ) = text "metadata !" <> doubleQuotes (ftext s) -ppLlvmMetaExpr (MetaNode n ) = text "metadata !" <> int n +ppLlvmMetaExpr (MetaStr s ) = text "!" <> doubleQuotes (ftext s) +ppLlvmMetaExpr (MetaNode n ) = text "!" <> int n ppLlvmMetaExpr (MetaVar v ) = ppr v ppLlvmMetaExpr (MetaStruct es) = - text "metadata !{" <> hsep (punctuate comma (map ppLlvmMetaExpr es)) <> char '}' + text "!{" <> hsep (punctuate comma (map ppLlvmMetaExpr es)) <> char '}' -- | Print out a list of function definitions. @@ -272,7 +272,7 @@ ppCall ct fptr args attrs = case fptr of where ppCall' (LlvmFunctionDecl _ _ cc ret argTy params _) = let tc = if ct == TailCall then text "tail " else empty - ppValues = ppCommaJoin args + ppValues = hsep $ punctuate comma $ map ppCallMetaExpr args ppArgTy = (ppCommaJoin $ map fst params) <> (case argTy of VarArgs -> text ", ..." @@ -283,6 +283,10 @@ ppCall ct fptr args attrs = case fptr of <> fnty <+> ppName fptr <> lparen <+> ppValues <+> rparen <+> attrDoc + -- Metadata needs to be marked as having the `metadata` type when used + -- in a call argument + ppCallMetaExpr (MetaVar v) = ppr v + ppCallMetaExpr v = text "metadata" <+> ppr v ppMachOp :: LlvmMachOp -> LlvmVar -> LlvmVar -> SDoc ppMachOp op left right = |