llvm-pretty 0.1.0.0 → 0.2.0.0
raw patch · 2 files changed
+23/−1 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Text.LLVM.AST: ElfMangling :: Mangling
+ Text.LLVM.AST: MachOMangling :: Mangling
+ Text.LLVM.AST: Mangling :: Mangling -> LayoutSpec
+ Text.LLVM.AST: MipsMangling :: Mangling
+ Text.LLVM.AST: WindowsCoffMangling :: Mangling
+ Text.LLVM.AST: data Mangling
+ Text.LLVM.AST: instance Eq Mangling
+ Text.LLVM.AST: instance Show Mangling
+ Text.LLVM.AST: ppMangling :: Mangling -> Doc
- Text.LLVM: (:>) :: a -> b -> :> a b
+ Text.LLVM: (:>) :: a -> b -> (:>) a b
Files
- llvm-pretty.cabal +1/−1
- src/Text/LLVM/AST.hs +22/−0
llvm-pretty.cabal view
@@ -1,5 +1,5 @@ Name: llvm-pretty-Version: 0.1.0.0+Version: 0.2.0.0 License: BSD3 License-file: LICENSE Author: Trevor Elliott
src/Text/LLVM/AST.hs view
@@ -166,8 +166,15 @@ | StackObjSize !Int !Int (Maybe Int) | NativeIntSize [Int] | StackAlign !Int+ | Mangling Mangling deriving (Show) +data Mangling = ElfMangling+ | MipsMangling+ | MachOMangling+ | WindowsCoffMangling+ deriving (Show,Eq)+ -- | Pretty print a single layout specification. ppLayoutSpec :: LayoutSpec -> Doc ppLayoutSpec BigEndian = char 'E'@@ -180,6 +187,7 @@ ppLayoutSpec (StackObjSize sz abi pref) = char 's' <> ppLayoutBody sz abi pref ppLayoutSpec (NativeIntSize szs) = char 'n' <> colons (map int szs) ppLayoutSpec (StackAlign a) = char 'S' <> int a+ppLayoutSpec (Mangling m) = char 'm' <> char ':' <> ppMangling m -- | Pretty-print the common case for data layout specifications. ppLayoutBody :: Int -> Int -> Maybe Int -> Doc@@ -189,6 +197,12 @@ Nothing -> empty Just p -> char ':' <> int p +ppMangling :: Mangling -> Doc+ppMangling ElfMangling = char 'e'+ppMangling MipsMangling = char 'm'+ppMangling MachOMangling = char 'o'+ppMangling WindowsCoffMangling = char 'w'+ -- | Parse the data layout string. parseDataLayout :: MonadPlus m => String -> m DataLayout parseDataLayout = mapM parseLayoutSpec . breaks (== '-')@@ -215,6 +229,13 @@ 'n' -> do ints <- mapM parseInt body return (NativeIntSize ints) + 'm' -> case tail body of+ ["e"] -> return (Mangling ElfMangling)+ ["m"] -> return (Mangling MipsMangling)+ ["o"] -> return (Mangling MachOMangling)+ ["w"] -> return (Mangling WindowsCoffMangling)+ _ -> mzero+ _ -> mzero ] @@ -230,6 +251,7 @@ parseInt s = case reads s of [(i,[])] -> return i _ -> mzero+ -- Inline Assembly -------------------------------------------------------------