kempe 0.2.0.13 → 0.2.0.14
raw patch · 29 files changed
+27/−49 lines, 29 filesdep ~base
Dependency ranges changed: base
Files
- CHANGELOG.md +4/−0
- docs/manual.pdf binary
- kempe.cabal +2/−2
- run/Main.hs +0/−1
- src/Kempe/AST.hs +2/−2
- src/Kempe/Asm/Arm/ControlFlow.hs +0/−1
- src/Kempe/Asm/Arm/Linear.hs +0/−1
- src/Kempe/Asm/Arm/Trans.hs +0/−1
- src/Kempe/Asm/Arm/Type.hs +6/−13
- src/Kempe/Asm/Liveness.hs +0/−1
- src/Kempe/Asm/Pretty.hs +1/−2
- src/Kempe/Asm/Type.hs +0/−1
- src/Kempe/Asm/X86/ControlFlow.hs +0/−1
- src/Kempe/Asm/X86/Linear.hs +0/−1
- src/Kempe/Asm/X86/Type.hs +0/−1
- src/Kempe/Check/Pattern.hs +2/−2
- src/Kempe/Error.hs +0/−1
- src/Kempe/Error/Warning.hs +0/−1
- src/Kempe/File.hs +0/−1
- src/Kempe/IR.hs +5/−4
- src/Kempe/IR/Type.hs +0/−1
- src/Kempe/Inline.hs +2/−2
- src/Kempe/Lexer.x +0/−1
- src/Kempe/Monomorphize.hs +1/−2
- src/Kempe/Name.hs +0/−1
- src/Kempe/TyAssign.hs +0/−1
- src/Language/C/AST.hs +0/−1
- src/Prettyprinter/Debug.hs +1/−2
- src/Prettyprinter/Ext.hs +1/−1
CHANGELOG.md view
@@ -1,5 +1,9 @@ # kempe +## 0.2.0.14++ * Catch-up with `base`+ ## 0.2.0.13 * Update for latest `alex` templates
docs/manual.pdf view
binary file changed (227744 → 227743 bytes)
kempe.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: kempe-version: 0.2.0.13+version: 0.2.0.14 license: BSD-3-Clause license-file: LICENSE copyright: Copyright: (c) 2020-2022 Vanessa McHale@@ -97,7 +97,7 @@ ghc-options: -Wall build-depends:- base >=4.9 && <5,+ base >=4.19 && <5, array, bytestring, containers >=0.6.0.0,
run/Main.hs view
@@ -3,7 +3,6 @@ import Control.Exception (Exception, throwIO) import Control.Monad ((<=<)) import qualified Data.ByteString.Lazy as BSL-import Data.Semigroup ((<>)) import qualified Data.Text.Lazy.IO as TLIO import qualified Data.Version as V import Kempe.AST
src/Kempe/AST.hs view
@@ -35,10 +35,10 @@ import qualified Data.ByteString.Lazy as BSL import Data.Foldable (toList) import Data.Functor (void)+import qualified Data.Functor as Fun import Data.Int (Int64, Int8) import Data.List.NonEmpty (NonEmpty) import qualified Data.List.NonEmpty as NE-import Data.Semigroup ((<>)) import qualified Data.Set as S import Data.Text.Lazy.Encoding (decodeUtf8) import Data.Word (Word8)@@ -138,7 +138,7 @@ first f (Dip l as) = Dip l (fmap (first f) as) first f (If l as as') = If l (fmap (first f) as) (fmap (first f) as') first f (Case l ls) =- let (ps, aLs) = NE.unzip ls+ let (ps, aLs) = Fun.unzip ls in Case l $ NE.zip (fmap (first f) ps) (fmap (fmap (first f)) aLs) data BuiltinFn = Drop
src/Kempe/Asm/Arm/ControlFlow.hs view
@@ -7,7 +7,6 @@ import Data.Functor (($>)) import qualified Data.IntSet as IS import qualified Data.Map as M-import Data.Semigroup ((<>)) import Kempe.Asm.Arm.Type import Kempe.Asm.Type
src/Kempe/Asm/Arm/Linear.hs view
@@ -10,7 +10,6 @@ import qualified Data.IntMap as IM import qualified Data.IntSet as IS import Data.Maybe (fromMaybe)-import Data.Semigroup ((<>)) import qualified Data.Set as S import Kempe.Asm.Arm.Type import Kempe.Asm.Type
src/Kempe/Asm/Arm/Trans.hs view
@@ -8,7 +8,6 @@ import Data.Foldable.Ext (foldMapA) import Data.Int (Int64) import Data.List (scanl')-import Data.Semigroup ((<>)) import Kempe.Asm.Arm.Type import Kempe.AST.Size import Kempe.IR.Monad
src/Kempe/Asm/Arm/Type.hs view
@@ -17,7 +17,6 @@ import qualified Data.ByteString as BS import Data.Copointed import Data.Int (Int64, Int8)-import Data.Semigroup ((<>)) import Data.Text.Encoding (decodeUtf8) import Data.Word (Word16) import GHC.Generics (Generic)@@ -178,16 +177,8 @@ pretty (AddRCPlus r i) = brackets (pretty r <~> prettyInt i) -- | See: https://developer.arm.com/documentation/dui0068/b/arm-instruction-reference/conditional-execution?lang=en-data Cond = Eq- | Neq- | UnsignedLeq- | UnsignedGeq- | UnsignedLt- | Geq- | Lt- | Gt- | Leq- deriving (Generic, NFData)+data Cond = Eq | Neq | UnsignedLeq | UnsignedGeq | UnsignedLt+ | Geq | Lt | Gt | Leq deriving (Generic, NFData) instance Pretty Cond where pretty Eq = "EQ"@@ -240,7 +231,7 @@ deriving (Functor, Generic, NFData) -- | Don't call this on a negative number!-prettyUInt :: (Integral a, Show a) => a -> Doc b+prettyUInt :: Integral a => a -> Doc b prettyUInt i = "#" <> prettyHex i prettyInt :: (Pretty a) => a -> Doc b@@ -291,7 +282,9 @@ -- http://www.mathcs.emory.edu/~cheung/Courses/255/Syl-ARM/7-ARM/array-define.html prolegomena :: Doc ann-prolegomena = ".data" <#> "kempe_data: .skip 32768" -- 32kb+prolegomena = ".p2align 3" <#> ".data" <#> "kempe_data: .skip 32768" -- 32kb+-- see https://stackoverflow.com/questions/65748033/how-to-fix-ld-warning-arm64-function-not-4-byte-aligned-warning+-- since mine are byte-aligned macros :: Doc ann macros = prettyLines
src/Kempe/Asm/Liveness.hs view
@@ -8,7 +8,6 @@ -- this seems to be faster import qualified Data.IntMap.Lazy as IM import qualified Data.IntSet as IS-import Data.Semigroup ((<>)) import Kempe.Asm.Type emptyLiveness :: Liveness
src/Kempe/Asm/Pretty.hs view
@@ -4,8 +4,7 @@ , prettyLabel ) where -import Data.Semigroup ((<>))-import Prettyprinter (Doc, indent, pretty)+import Prettyprinter (Doc, indent, pretty) i4 :: Doc ann -> Doc ann i4 = indent 4
src/Kempe/Asm/Type.hs view
@@ -8,7 +8,6 @@ import Control.DeepSeq (NFData) import qualified Data.IntSet as IS-import Data.Semigroup ((<>)) import GHC.Generics (Generic) import Prettyprinter (Pretty (pretty), braces, punctuate, (<+>))
src/Kempe/Asm/X86/ControlFlow.hs view
@@ -8,7 +8,6 @@ import Data.Functor (($>)) import qualified Data.IntSet as IS import qualified Data.Map as M-import Data.Semigroup ((<>)) import Kempe.Asm.Type import Kempe.Asm.X86.Type
src/Kempe/Asm/X86/Linear.hs view
@@ -12,7 +12,6 @@ import qualified Data.IntMap as IM import qualified Data.IntSet as IS import Data.Maybe (fromMaybe)-import Data.Semigroup ((<>)) import qualified Data.Set as S import Kempe.Asm.Type import Kempe.Asm.X86.Type
src/Kempe/Asm/X86/Type.hs view
@@ -17,7 +17,6 @@ import qualified Data.ByteString.Lazy as BSL import Data.Copointed import Data.Int (Int64, Int8)-import Data.Semigroup ((<>)) import Data.Text.Encoding (decodeUtf8) import qualified Data.Text.Lazy.Encoding as TL import Data.Word (Word8)
src/Kempe/Check/Pattern.hs view
@@ -13,10 +13,10 @@ import Data.Coerce (coerce) import Data.Foldable (toList, traverse_) import Data.Foldable.Ext+import qualified Data.Functor as Fun import qualified Data.IntMap.Strict as IM import qualified Data.IntSet as IS import Data.List.NonEmpty (NonEmpty (..))-import qualified Data.List.NonEmpty as NE import Kempe.AST import Kempe.Error import Kempe.Name@@ -26,7 +26,7 @@ checkAtom :: PatternEnv -> Atom c b -> Maybe (Error b) checkAtom env (Case l ls) =- let (ps, as) = NE.unzip ls in+ let (ps, as) = Fun.unzip ls in if isExhaustive env ps then foldMapAlternative (foldMapAlternative (checkAtom env)) as else Just (InexhaustiveMatch l)
src/Kempe/Error.hs view
@@ -8,7 +8,6 @@ import Control.DeepSeq (NFData) import Control.Exception (Exception)-import Data.Semigroup ((<>)) import Data.Typeable (Typeable) import GHC.Generics (Generic) import Kempe.AST.Size
src/Kempe/Error/Warning.hs view
@@ -4,7 +4,6 @@ ) where import Control.Exception (Exception)-import Data.Semigroup ((<>)) import Data.Typeable (Typeable) import Kempe.AST import Kempe.Name
src/Kempe/File.hs view
@@ -21,7 +21,6 @@ import Control.Monad ((<=<)) import Data.Bifunctor (bimap) import Data.Functor (void)-import Data.Semigroup ((<>)) import Data.Tuple.Ext (fst3) import Data.Typeable (Typeable) import qualified Kempe.Asm.Arm.Type as Arm
src/Kempe/IR.hs view
@@ -6,16 +6,17 @@ , size ) where -import Data.Foldable (toList, traverse_)-import Data.List.NonEmpty (NonEmpty (..))-import qualified Data.List.NonEmpty as NE -- strict b/c it's faster according to benchmarks import Control.Monad (zipWithM) import Control.Monad.State.Strict (State, gets, modify, runState) import Data.Bifunctor (second)+import Data.Foldable (toList, traverse_) import Data.Foldable.Ext+import qualified Data.Functor as Fun import Data.Int (Int64) import qualified Data.IntMap as IM+import Data.List.NonEmpty (NonEmpty (..))+import qualified Data.List.NonEmpty as NE import Data.Text.Encoding (encodeUtf8) import Kempe.AST import Kempe.AST.Size@@ -244,7 +245,7 @@ writeAtom env l (Case _ ((_, as) :| [])) = (dataPointerDec 1:) <$> writeAtoms env l as writeAtom env l (Case (is, _) ls) =- let (ps, ass) = NE.unzip ls+ let (ps, ass) = Fun.unzip ls decSz = case last is of TyBuiltin _ TyInt -> 8 TyBuiltin _ TyWord -> 8
src/Kempe/IR/Type.hs view
@@ -17,7 +17,6 @@ import qualified Data.ByteString as BS import qualified Data.ByteString.Lazy as BSL import Data.Int (Int64, Int8)-import Data.Semigroup ((<>)) import Data.Text.Encoding (decodeUtf8) import Data.Word (Word8) import GHC.Generics (Generic)
src/Kempe/Inline.hs view
@@ -4,11 +4,11 @@ module Kempe.Inline ( inline ) where +import qualified Data.Functor as Fun import Data.Graph (Graph, Vertex, graphFromEdges, path) import qualified Data.IntMap as IM import qualified Data.List.NonEmpty as NE import Data.Maybe (fromMaybe, mapMaybe)-import Data.Semigroup ((<>)) import Data.Tuple.Ext (third3) import Kempe.AST import Kempe.Name@@ -32,7 +32,7 @@ inlineAtom declName (Dip l as) = [Dip l (inlineAtoms declName as)] inlineAtom declName (Case l ls) =- let (ps, ass) = NE.unzip ls+ let (ps, ass) = Fun.unzip ls in [Case l (NE.zip ps $ fmap (inlineAtoms declName) ass)] inlineAtom _ a = [a] fnMap = mkFnModuleMap m
src/Kempe/Lexer.x view
@@ -27,7 +27,6 @@ import Data.Int (Int8) import qualified Data.IntMap as IM import qualified Data.Map as M-import Data.Semigroup ((<>)) import qualified Data.Text as T import Data.Text.Encoding (decodeUtf8) import GHC.Generics (Generic)
src/Kempe/Monomorphize.hs view
@@ -28,7 +28,6 @@ import Data.List (elemIndex, find, groupBy, partition) import qualified Data.Map as M import Data.Maybe (fromMaybe, mapMaybe)-import Data.Semigroup ((<>)) import qualified Data.Set as S import qualified Data.Text as T import Data.Tuple (swap)@@ -219,7 +218,7 @@ insTyDecl :: KempeDecl a c b -> MonoM () insTyDecl (TyDecl _ (Name _ (Unique k) _) fv leaves) = do- leafSizes <- traverse (sizeLeaf fv) (fmap snd leaves)+ leafSizes <- traverse (sizeLeaf fv.snd) leaves let consSz = \tys -> 1 + maximum (($tys) <$> leafSizes) -- for the tag modifying szEnvLens (IM.insert k consSz) insTyDecl _ = error "Shouldn't happen."
src/Kempe/Name.hs view
@@ -8,7 +8,6 @@ ) where import Control.DeepSeq (NFData (..))-import Data.Semigroup ((<>)) import qualified Data.Text as T import Kempe.Unique import Prettyprinter (Pretty (pretty))
src/Kempe/TyAssign.hs view
@@ -17,7 +17,6 @@ import Data.Functor (void, ($>)) import qualified Data.IntMap as IM import Data.List.NonEmpty (NonEmpty (..))-import Data.Semigroup ((<>)) import qualified Data.Set as S import qualified Data.Text as T import Data.Tuple.Ext (fst3)
src/Language/C/AST.hs view
@@ -6,7 +6,6 @@ , cSettings ) where -import Data.Semigroup ((<>)) import qualified Data.Set as S import qualified Data.Text as T import Prettyprinter (Doc, LayoutOptions (..), PageWidth (..), Pretty (..), tupled, (<+>))
src/Prettyprinter/Debug.hs view
@@ -5,8 +5,7 @@ , (<#*>) ) where -import Data.Semigroup ((<>))-import Prettyprinter (Doc, Pretty (pretty), hardline, indent, (<+>))+import Prettyprinter (Doc, Pretty (pretty), hardline, indent, (<+>)) (<#*>) :: Doc a -> Doc a -> Doc a
src/Prettyprinter/Ext.hs view
@@ -26,7 +26,7 @@ (<~>) :: Doc a -> Doc a -> Doc a (<~>) x y = x <> ", " <> y -prettyHex :: (Integral a, Show a) => a -> Doc ann+prettyHex :: Integral a => a -> Doc ann prettyHex x = "0x" <> pretty (showHex x mempty) prettyLines :: [Doc ann] -> Doc ann