packages feed

llvm-general-pure 3.2.8.2 → 3.3.7.0

raw patch · 5 files changed

+10/−187 lines, 5 filesdep +arraydep +bytestringdep +textdep ~llvm-general-pure

Dependencies added: array, bytestring, text

Dependency ranges changed: llvm-general-pure

Files

llvm-general-pure.cabal view
@@ -1,5 +1,5 @@ name: llvm-general-pure-version: 3.2.8.2+version: 3.3.7.0 license: BSD3 license-file: LICENSE author: Benjamin S.Scarlet <fgthb0@greynode.net>@@ -15,7 +15,7 @@         It includes an ADT to represent LLVM IR (<http://llvm.org/docs/LangRef.html>). The llvm-general package 	builds on this one with FFI bindings to LLVM, but llvm-general-pure does not require LLVM to be available.   .-  For haddock, see <http://bscarlet.github.io/llvm-general/3.2.8.2/doc/html/llvm-general-pure/index.html>.+  For haddock, see <http://bscarlet.github.io/llvm-general/3.3.7.0/doc/html/llvm-general-pure/index.html>.     source-repository head   type: git@@ -25,12 +25,15 @@   ghc-options: -fwarn-unused-imports   build-depends:      base >= 4.5.0.0 && < 5,+    text >= 0.11.2.1,+    bytestring >= 0.9.1.10,     transformers >= 0.3.0.0,     mtl >= 2.0.1.0,     template-haskell >= 2.5.0.0,     containers >= 0.4.2.1,-    setenv >= 0.1.0,-    parsec >= 3.1.3+    parsec >= 3.1.3,+    array >= 0.4.0.0,+    setenv >= 0.1.0   hs-source-dirs: src   extensions:     TupleSections@@ -59,7 +62,6 @@     LLVM.General.AST.RMWOperation     LLVM.General.AST.Type     LLVM.General.AST.Visibility-    LLVM.General.DataLayout     LLVM.General.PrettyPrint    other-modules:@@ -74,7 +76,7 @@     HUnit >= 1.2.4.2,     test-framework-quickcheck2 >= 0.3.0.1,     QuickCheck >= 2.5.1.1,-    llvm-general-pure == 3.2.8.2,+    llvm-general-pure == 3.3.7.0,     containers >= 0.4.2.1,     mtl >= 2.0.1.0   hs-source-dirs: test@@ -84,5 +86,4 @@     FlexibleContexts   main-is: Test.hs   other-modules:-    LLVM.General.Test.DataLayout     LLVM.General.Test.PrettyPrint
src/LLVM/General/AST/Global.hs view
@@ -45,11 +45,10 @@         returnAttributes :: [A.ParameterAttribute],         returnType :: Type,         name :: Name,-        parameters :: ([Parameter],Bool), -- ^ snd indicates varargs+        parameters :: ([Parameter],Bool),         functionAttributes :: [A.FunctionAttribute],         section :: Maybe String,         alignment :: Word32,-        garbageCollectorName :: Maybe String,         basicBlocks :: [BasicBlock]       }   deriving (Eq, Read, Show)@@ -106,6 +105,5 @@     functionAttributes = [],     section = Nothing,     alignment = 0,-    garbageCollectorName = Nothing,     basicBlocks = []   }
− src/LLVM/General/DataLayout.hs
@@ -1,95 +0,0 @@-module LLVM.General.DataLayout (- dataLayoutToString,- parseDataLayout- ) where--import Control.Applicative--import Data.Word--import qualified Data.List as List-import qualified Data.Map as Map-import qualified Data.Set as Set--import Text.ParserCombinators.Parsec hiding (many)--import LLVM.General.AST.DataLayout-import LLVM.General.AST.AddrSpace--dataLayoutToString :: DataLayout -> String-dataLayoutToString dl = -  let sTriple :: (Word32, AlignmentInfo) -> String-      sTriple (s, ai) = show s ++ ":" ++ show (abiAlignment ai) ++ (maybe "" (\p -> ":" ++ show p) (preferredAlignment ai))-      atChar at = case at of-                    IntegerAlign -> "i"-                    VectorAlign -> "v"-                    FloatAlign -> "f"-                    AggregateAlign -> "a"-                    StackAlign -> "s"-  in-  List.intercalate "-" (-    (case endianness dl of Just BigEndian -> ["E"]; Just LittleEndian -> ["e"]; _ -> [])-    ++-    (maybe [] (\s -> ["S" ++ show s]) (stackAlignment dl))-    ++-    [ "p" ++ (if a == 0 then "" else show a) ++ ":" ++ sTriple t | (AddrSpace a, t) <- Map.toList . pointerLayouts $ dl]-    ++-    [ atChar at ++ sTriple (s, ai) | ((at, s), ai) <- Map.toList . typeLayouts $ dl ]-    ++ -    (maybe [] (\ns -> ["n" ++ (List.intercalate ":" (map show . Set.toList $ ns))]) (nativeSizes dl))-  )--parseDataLayout :: String -> Maybe DataLayout-parseDataLayout "" = Nothing-parseDataLayout s = -  let-    num :: Parser Word32-    num = read <$> many digit-    triple :: Parser (Word32, AlignmentInfo)-    triple = do-      s <- num-      char ':'-      abi <- num-      pref <- optionMaybe $ do-                char ':'-                num-      return (s, (AlignmentInfo abi pref))-    parseSpec :: Parser (DataLayout -> DataLayout)-    parseSpec = choice [-      do-        char 'e'-        return $ \dl -> dl { endianness = Just LittleEndian },-      do-        char 'E' -        return $ \dl -> dl { endianness = Just BigEndian },-      do-        char 'S'-        n <- num-        return $ \dl -> dl { stackAlignment = Just n },-      do-        char 'p'-        a <- AddrSpace <$> option 0 (read <$> many1 digit)-        char ':'-        t <- triple-        return $ \dl -> dl { pointerLayouts = Map.insert a t (pointerLayouts dl) },-      do-        at <- choice [-               char 'i' >> return IntegerAlign,-               char 'v' >> return VectorAlign,-               char 'f' >> return FloatAlign,-               char 'a' >> return AggregateAlign,-               char 's' >> return StackAlign-              ]-        (sz,ai) <- triple-        return $ \dl -> dl { typeLayouts = Map.insert (at,sz) ai (typeLayouts dl) },-      do -        char 'n'-        ns <- num `sepBy` (char ':')-        return $ \dl -> dl { nativeSizes = Just (Set.fromList ns) }-     ]-  in -    case parse (parseSpec `sepBy` (char '-')) "" s of-      Left _ -> error $ "ill formed data layout: " ++ show s-      Right fs -> Just $ foldr ($) defaultDataLayout fs--
− test/LLVM/General/Test/DataLayout.hs
@@ -1,80 +0,0 @@-module LLVM.General.Test.DataLayout where--import Test.Framework-import Test.Framework.Providers.HUnit-import Test.HUnit--import Data.Maybe-import qualified Data.Set as Set-import qualified Data.Map as Map--import LLVM.General.AST-import LLVM.General.AST.DataLayout-import LLVM.General.AST.AddrSpace-import LLVM.General.DataLayout--tests = testGroup "DataLayout" [-  testCase name $ do-    (dataLayoutToString astDl, parseDataLayout strDl) @?= (strDl, Just astDl)-  | (name, astDl, strDl) <- [-    ("little-endian", defaultDataLayout { endianness = Just LittleEndian }, "e"),-    ("big-endian", defaultDataLayout { endianness = Just BigEndian }, "E"),-    ("native", defaultDataLayout { nativeSizes = Just (Set.fromList [8,32]) }, "n8:32"),-    (-     "no pref",-     defaultDataLayout {-       pointerLayouts = -         Map.singleton-         (AddrSpace 0) -         (-          8,-          AlignmentInfo {-            abiAlignment = 64,-            preferredAlignment = Nothing-          }-         )-     },-     "p:8:64"-    ), (-     "no pref",-     defaultDataLayout {-       pointerLayouts = -         Map.singleton-         (AddrSpace 1) -         (-          8,-          AlignmentInfo {-            abiAlignment = 32,-            preferredAlignment = Just 64-          }-         )-     },-     "p1:8:32:64"-    ), (-     "big",-     DataLayout {-       endianness = Just LittleEndian,-       stackAlignment = Just 128,-       pointerLayouts = Map.fromList [-         (AddrSpace 0, (64, AlignmentInfo {abiAlignment = 64, preferredAlignment = Just 64}))-        ],-       typeLayouts = Map.fromList [-         ((IntegerAlign, 1), AlignmentInfo {abiAlignment = 8, preferredAlignment = Just 8}),-         ((IntegerAlign, 8), AlignmentInfo {abiAlignment = 8, preferredAlignment = Just 8}),-         ((IntegerAlign, 16), AlignmentInfo {abiAlignment = 16, preferredAlignment = Just 16}),-         ((IntegerAlign, 32), AlignmentInfo {abiAlignment = 32, preferredAlignment = Just 32}),-         ((IntegerAlign, 64), AlignmentInfo {abiAlignment = 64, preferredAlignment = Just 64}),-         ((VectorAlign, 64), AlignmentInfo {abiAlignment = 64, preferredAlignment = Just 64}),-         ((VectorAlign, 128), AlignmentInfo {abiAlignment = 128, preferredAlignment = Just 128}),-         ((FloatAlign, 32), AlignmentInfo {abiAlignment = 32, preferredAlignment = Just 32}),-         ((FloatAlign, 64), AlignmentInfo {abiAlignment = 64, preferredAlignment = Just 64}),-         ((FloatAlign, 80), AlignmentInfo {abiAlignment = 128, preferredAlignment = Just 128}),-         ((AggregateAlign, 0), AlignmentInfo {abiAlignment = 0, preferredAlignment = Just 64}),-         ((StackAlign, 0), AlignmentInfo {abiAlignment = 64, preferredAlignment = Just 64})-        ],-       nativeSizes = Just (Set.fromList [8,16,32,64])-     },-     "e-S128-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-v64:64:64-v128:128:128-f32:32:32-f64:64:64-f80:128:128-a0:0:64-s0:64:64-n8:16:32:64"-    )-   ]- ]
test/LLVM/General/Test/PrettyPrint.hs view
@@ -18,7 +18,7 @@          GlobalDefinition $ Function L.External V.Default CC.C [] (IntegerType 32) (Name "foo") ([              Parameter (IntegerType 32) (Name "x") []             ],False)-            [] Nothing 0 Nothing+            [] Nothing 0            [            BasicBlock (UnName 0) [             UnName 1 := Mul {@@ -53,7 +53,6 @@             \      A.G.functionAttributes = [],\n\             \      A.G.section = Nothing,\n\             \      A.G.alignment = 0,\n\-            \      A.G.garbageCollectorName = Nothing,\n\             \      A.G.basicBlocks = [\n\             \        A.G.BasicBlock (A.UnName 0) [\n\             \          A.UnName 1 A.:= A.Mul {\n\