From 4961f3a1b759021fae31aaea2ac09c9d73d4aba9 Mon Sep 17 00:00:00 2001 From: Owen Shepherd Date: Wed, 12 Jan 2022 18:22:00 +0000 Subject: [PATCH 1/4] Remove functor-infix --- grin/grin.cabal | 6 +++--- .../AbstractInterpretation/EffectTracking/CodeGenBase.hs | 2 +- .../ExtendedSyntax/EffectTracking/CodeGenBase.hs | 2 +- grin/src/Grin/ExtendedSyntax/Lint.hs | 2 +- grin/src/Grin/ExtendedSyntax/TypeEnv.hs | 1 - grin/src/Grin/Lint.hs | 2 +- grin/src/Grin/Research.hs | 2 +- grin/src/Grin/TypeEnv.hs | 2 +- grin/src/Lens/Micro/Extra.hs | 2 +- grin/src/Pipeline/Pipeline.hs | 6 +++--- grin/src/Reducer/PrimOps.hs | 2 +- grin/src/Test/ExtendedSyntax/Old/Test.hs | 2 +- grin/src/Test/Test.hs | 2 +- grin/src/Transformations/Optimising/GeneralizedUnboxing.hs | 2 +- .../src/Transformations/Simplifying/RegisterIntroduction.hs | 2 +- grin/test/PipelineSpec.hs | 2 +- 16 files changed, 19 insertions(+), 20 deletions(-) diff --git a/grin/grin.cabal b/grin/grin.cabal index f92cb55f..edbbee9c 100644 --- a/grin/grin.cabal +++ b/grin/grin.cabal @@ -244,7 +244,7 @@ library optparse-applicative, directory, pretty-simple, - functor-infix, + composition-extra, generic-random, hspec, hspec-core, @@ -299,7 +299,7 @@ test-suite grin-test build-depends: base >=4.11 , containers , filepath - , functor-infix + , composition-extra , grin , hspec , hspec-core @@ -407,7 +407,7 @@ test-suite grin-end-to-end-test build-depends: base >=4.11 , containers , filepath - , functor-infix + , composition-extra , grin , hspec , hspec-core diff --git a/grin/src/AbstractInterpretation/EffectTracking/CodeGenBase.hs b/grin/src/AbstractInterpretation/EffectTracking/CodeGenBase.hs index dd517c75..20c21cfe 100644 --- a/grin/src/AbstractInterpretation/EffectTracking/CodeGenBase.hs +++ b/grin/src/AbstractInterpretation/EffectTracking/CodeGenBase.hs @@ -12,7 +12,7 @@ import qualified Data.Map as Map import qualified Data.Set as Set import qualified Data.Vector as Vec -import Data.Functor.Infix +import Data.Functor.Syntax import Control.Monad.State diff --git a/grin/src/AbstractInterpretation/ExtendedSyntax/EffectTracking/CodeGenBase.hs b/grin/src/AbstractInterpretation/ExtendedSyntax/EffectTracking/CodeGenBase.hs index e866df29..f6b5ba24 100644 --- a/grin/src/AbstractInterpretation/ExtendedSyntax/EffectTracking/CodeGenBase.hs +++ b/grin/src/AbstractInterpretation/ExtendedSyntax/EffectTracking/CodeGenBase.hs @@ -12,7 +12,7 @@ import qualified Data.Map as Map import qualified Data.Set as Set import qualified Data.Vector as Vec -import Data.Functor.Infix +import Data.Functor.Syntax ((<$$>)) import Control.Monad.State diff --git a/grin/src/Grin/ExtendedSyntax/Lint.hs b/grin/src/Grin/ExtendedSyntax/Lint.hs index 039dfeca..3623f52b 100644 --- a/grin/src/Grin/ExtendedSyntax/Lint.hs +++ b/grin/src/Grin/ExtendedSyntax/Lint.hs @@ -27,7 +27,7 @@ import Data.String import Control.Comonad (extract) import qualified Data.Vector as Vector import Control.Applicative (liftA2) -import Data.Functor.Infix ((<$$>)) +import Data.Functor.Syntax ((<$$>)) import Grin.ExtendedSyntax.Grin import Grin.ExtendedSyntax.Pretty diff --git a/grin/src/Grin/ExtendedSyntax/TypeEnv.hs b/grin/src/Grin/ExtendedSyntax/TypeEnv.hs index 6a920218..a3e3e8af 100644 --- a/grin/src/Grin/ExtendedSyntax/TypeEnv.hs +++ b/grin/src/Grin/ExtendedSyntax/TypeEnv.hs @@ -16,7 +16,6 @@ import qualified Data.Vector as Vector (fromList, toList, map) import Data.Bifunctor (bimap) import Data.Monoid import Data.Maybe (fromMaybe) -import Data.Functor.Infix ((<$$>)) import Control.Applicative (liftA2) import Control.Monad (join) diff --git a/grin/src/Grin/Lint.hs b/grin/src/Grin/Lint.hs index b87a7c5c..7a490b3e 100644 --- a/grin/src/Grin/Lint.hs +++ b/grin/src/Grin/Lint.hs @@ -27,7 +27,7 @@ import Data.String import Control.Comonad (extract) import qualified Data.Vector as Vector import Control.Applicative (liftA2) -import Data.Functor.Infix ((<$$>)) +import Data.Functor.Syntax ((<$$>)) import Grin.Grin import Grin.Pretty diff --git a/grin/src/Grin/Research.hs b/grin/src/Grin/Research.hs index b44d0c73..1da2019d 100644 --- a/grin/src/Grin/Research.hs +++ b/grin/src/Grin/Research.hs @@ -31,7 +31,7 @@ import qualified Text.PrettyPrint.ANSI.Leijen as Pretty ((<$>)) import Grin.Pretty (showWide) import Control.Arrow ((&&&)) import Data.Maybe (fromJust) -import Data.Functor.Infix ((<$$$>)) +import Data.Functor.Syntax ((<$$$>)) diff --git a/grin/src/Grin/TypeEnv.hs b/grin/src/Grin/TypeEnv.hs index 1809e224..12924985 100644 --- a/grin/src/Grin/TypeEnv.hs +++ b/grin/src/Grin/TypeEnv.hs @@ -16,7 +16,7 @@ import qualified Data.Vector as Vector import Data.Bifunctor (bimap) import Data.Monoid import Data.Maybe (fromMaybe) -import Data.Functor.Infix ((<$$>)) +import Data.Functor.Syntax ((<$$>)) import Control.Applicative (liftA2) import Control.Monad (join) diff --git a/grin/src/Lens/Micro/Extra.hs b/grin/src/Lens/Micro/Extra.hs index 5296bd81..df4ae2d2 100644 --- a/grin/src/Lens/Micro/Extra.hs +++ b/grin/src/Lens/Micro/Extra.hs @@ -4,7 +4,7 @@ module Lens.Micro.Extra where import Lens.Micro.Internal import Lens.Micro.Platform import Data.Vector as V -import Data.Functor.Infix ((<$$>)) +import Data.Functor.Syntax ((<$$>)) import Data.Monoid (Any(..)) diff --git a/grin/src/Pipeline/Pipeline.hs b/grin/src/Pipeline/Pipeline.hs index f031ce47..02945bda 100644 --- a/grin/src/Pipeline/Pipeline.hs +++ b/grin/src/Pipeline/Pipeline.hs @@ -118,7 +118,7 @@ import Control.Monad.Extra import System.Random import Data.Time.Clock import Data.Fixed -import Data.Functor.Infix +import Data.Functor.Syntax import Data.Maybe (isNothing) import System.IO (BufferMode(..), hSetBuffering, stdout) import Data.Binary as Binary @@ -344,7 +344,7 @@ data TransformationFunc -- TODO: Add n paramter for the transformations that use NameM transformationFunc :: Int -> Transformation -> TransformationFunc transformationFunc n = \case - Vectorisation -> WithTypeEnv (newNames <$$> Right <$$> Vectorisation2.vectorisation) + Vectorisation -> WithTypeEnv (Right . newNames <$$> Vectorisation2.vectorisation) GenerateEval -> Plain generateEval CaseSimplification -> Plain (noNewNames . caseSimplification) SplitFetch -> Plain (noNewNames . splitFetch) @@ -375,7 +375,7 @@ transformationFunc n = \case GeneralizedUnboxing -> WithTypeEnv (Right <$$> generalizedUnboxing) ArityRaising -> WithTypeEnv (Right <$$> (arityRaising n)) LateInlining -> WithTypeEnv (Right <$$> lateInlining) - UnitPropagation -> WithTypeEnv (noNewNames <$$> Right <$$> unitPropagation) + UnitPropagation -> WithTypeEnv (Right . noNewNames <$$> unitPropagation) NonSharedElimination -> WithTypeEnvShr nonSharedElimination DeadFunctionElimination -> WithLVA (noNewNames <$$$$> deadFunctionElimination) DeadVariableElimination -> WithLVA (noNewNames <$$$$> deadVariableElimination) diff --git a/grin/src/Reducer/PrimOps.hs b/grin/src/Reducer/PrimOps.hs index b346d6b8..067041d3 100644 --- a/grin/src/Reducer/PrimOps.hs +++ b/grin/src/Reducer/PrimOps.hs @@ -19,7 +19,7 @@ import Data.Char (chr, ord) import Grin.Grin import Data.Map.Strict as Map import Data.String (fromString) -import Data.Functor.Infix ((<$$>)) +import Data.Functor.Syntax ((<$$>)) import Data.Text as Text import Control.Monad.IO.Class diff --git a/grin/src/Test/ExtendedSyntax/Old/Test.hs b/grin/src/Test/ExtendedSyntax/Old/Test.hs index 92090abf..007054ed 100644 --- a/grin/src/Test/ExtendedSyntax/Old/Test.hs +++ b/grin/src/Test/ExtendedSyntax/Old/Test.hs @@ -16,7 +16,7 @@ import Control.Monad.Trans.Reader import qualified Control.Monad.State.Class as CMS import qualified Control.Monad.Reader.Class as CMR import Data.Bifunctor -import Data.Functor.Infix +import Data.Functor.Syntax import Data.Functor.Foldable import Data.List ((\\)) import Data.Maybe (fromJust, maybeToList) diff --git a/grin/src/Test/Test.hs b/grin/src/Test/Test.hs index 22401105..73fa35de 100644 --- a/grin/src/Test/Test.hs +++ b/grin/src/Test/Test.hs @@ -16,7 +16,7 @@ import Control.Monad.Trans.Reader import qualified Control.Monad.State.Class as CMS import qualified Control.Monad.Reader.Class as CMR import Data.Bifunctor -import Data.Functor.Infix +import Data.Functor.Syntax import Data.Functor.Foldable import Data.List ((\\)) import Data.Maybe (fromJust, maybeToList) diff --git a/grin/src/Transformations/Optimising/GeneralizedUnboxing.hs b/grin/src/Transformations/Optimising/GeneralizedUnboxing.hs index dfd2077b..69fbf4a4 100644 --- a/grin/src/Transformations/Optimising/GeneralizedUnboxing.hs +++ b/grin/src/Transformations/Optimising/GeneralizedUnboxing.hs @@ -10,7 +10,7 @@ import Data.Maybe import Data.List import Data.Function import Data.Functor.Foldable as Foldable -import Data.Functor.Infix +import Data.Functor.Syntax import Data.Vector (Vector) import qualified Data.Vector as Vector import Control.Applicative diff --git a/grin/src/Transformations/Simplifying/RegisterIntroduction.hs b/grin/src/Transformations/Simplifying/RegisterIntroduction.hs index b840f3be..727de203 100644 --- a/grin/src/Transformations/Simplifying/RegisterIntroduction.hs +++ b/grin/src/Transformations/Simplifying/RegisterIntroduction.hs @@ -10,7 +10,7 @@ import qualified Data.Map as Map import qualified Data.List as List import Data.Functor.Foldable as Foldable import qualified Data.Foldable -import Data.Functor.Infix +import Data.Functor.Syntax import Control.Monad.State import Test.Hspec diff --git a/grin/test/PipelineSpec.hs b/grin/test/PipelineSpec.hs index 930e99ee..829b4d88 100644 --- a/grin/test/PipelineSpec.hs +++ b/grin/test/PipelineSpec.hs @@ -1,6 +1,6 @@ module PipelineSpec where -import Data.Functor.Infix ((<$$>)) +import Data.Functor.Syntax ((<$$>)) import Data.List ((\\), nub) import Test.Hspec import Test.QuickCheck From 0319a079673dcf5d9826ed0938c97ecbc182c067 Mon Sep 17 00:00:00 2001 From: Owen Shepherd Date: Wed, 12 Jan 2022 19:37:17 +0000 Subject: [PATCH 2/4] Use Data.Fix --- grin/grin.cabal | 3 ++- grin/src/Reducer/Interpreter/Base.hs | 1 + grin/src/Reducer/Interpreter/Definitional/Cib.hs | 2 +- grin/src/Reducer/Interpreter/Definitional/Instance.hs | 1 + grin/src/Reducer/Interpreter/Definitional/Internal.hs | 1 + grin/src/Reducer/LLVM/CodeGen.hs | 2 +- grin/test/Reducer/Interpreter/Definitional/CibSpec.hs | 1 + 7 files changed, 8 insertions(+), 3 deletions(-) diff --git a/grin/grin.cabal b/grin/grin.cabal index edbbee9c..84f39269 100644 --- a/grin/grin.cabal +++ b/grin/grin.cabal @@ -260,7 +260,8 @@ library deepseq, binary, unix, - libffi + libffi, + data-fix default-language: Haskell2010 diff --git a/grin/src/Reducer/Interpreter/Base.hs b/grin/src/Reducer/Interpreter/Base.hs index 2d7fc884..227c28bf 100644 --- a/grin/src/Reducer/Interpreter/Base.hs +++ b/grin/src/Reducer/Interpreter/Base.hs @@ -8,6 +8,7 @@ module Reducer.Interpreter.Base import Control.Monad.Fail import Control.Monad.Trans (MonadIO) +import Data.Fix (Fix(..)) import Data.Function (fix) import Data.Map.Strict (Map, fromList) import Grin.ExtendedSyntax.Syntax hiding (Val) diff --git a/grin/src/Reducer/Interpreter/Definitional/Cib.hs b/grin/src/Reducer/Interpreter/Definitional/Cib.hs index df13baa8..7e6130d9 100644 --- a/grin/src/Reducer/Interpreter/Definitional/Cib.hs +++ b/grin/src/Reducer/Interpreter/Definitional/Cib.hs @@ -3,6 +3,7 @@ {-# LANGUAGE TypeApplications #-} module Reducer.Interpreter.Definitional.Cib where +import Data.Fix (Fix(..)) import Data.Maybe (mapMaybe) import Grin.ExtendedSyntax.Syntax (Name(..)) import Control.Monad.Fail (MonadFail) @@ -11,7 +12,6 @@ import Control.Monad.State (gets, modify) import Reducer.Interpreter.Base import Reducer.Interpreter.Definitional.Internal import Reducer.Interpreter.Definitional.Instance -import Data.Functor.Foldable (Fix) import Data.Functor.Sum import qualified Grin.ExtendedSyntax.Syntax as Syntax diff --git a/grin/src/Reducer/Interpreter/Definitional/Instance.hs b/grin/src/Reducer/Interpreter/Definitional/Instance.hs index c991f452..d50d4700 100644 --- a/grin/src/Reducer/Interpreter/Definitional/Instance.hs +++ b/grin/src/Reducer/Interpreter/Definitional/Instance.hs @@ -11,6 +11,7 @@ import Control.Monad.Reader (MonadReader(..)) import Control.Monad.State (MonadState(..)) import Control.Monad.Trans (MonadIO, lift) import Control.Monad.Trans.State hiding (state, get) +import Data.Fix (Fix(..)) import Data.Functor.Foldable import Data.Functor.Sum import Data.Maybe (fromJust) diff --git a/grin/src/Reducer/Interpreter/Definitional/Internal.hs b/grin/src/Reducer/Interpreter/Definitional/Internal.hs index 1080bdf8..b98e778a 100644 --- a/grin/src/Reducer/Interpreter/Definitional/Internal.hs +++ b/grin/src/Reducer/Interpreter/Definitional/Internal.hs @@ -10,6 +10,7 @@ import Control.Monad.Trans (MonadIO) import Control.Monad.Trans.Reader hiding (ask, local) import Control.Monad.Trans.State hiding (state, get) import Data.Either (fromLeft) +import Data.Fix (Fix) import Data.Functor.Foldable import Data.Functor.Sum import Data.Int diff --git a/grin/src/Reducer/LLVM/CodeGen.hs b/grin/src/Reducer/LLVM/CodeGen.hs index 1cbec259..be0b809f 100644 --- a/grin/src/Reducer/LLVM/CodeGen.hs +++ b/grin/src/Reducer/LLVM/CodeGen.hs @@ -434,7 +434,7 @@ codeGenCase opVal alts bindingGen = do (Alt DefaultPat _, _) -> True _ -> False (defaultAlts, normalAlts) = List.partition isDefault alts - when (length defaultAlts > 1) $ fail "multiple default patterns" + when (length defaultAlts > 1) $ error "multiple default patterns" let orderedAlts = defaultAlts ++ normalAlts (altDests, altValues, altCGTypes) <- fmap List.unzip3 . forM orderedAlts $ \(Alt cpat _, altBody) -> do diff --git a/grin/test/Reducer/Interpreter/Definitional/CibSpec.hs b/grin/test/Reducer/Interpreter/Definitional/CibSpec.hs index 114d7227..69e931cf 100644 --- a/grin/test/Reducer/Interpreter/Definitional/CibSpec.hs +++ b/grin/test/Reducer/Interpreter/Definitional/CibSpec.hs @@ -1,5 +1,6 @@ module Reducer.Interpreter.Definitional.CibSpec where +import Data.Fix (Fix(..)) import Data.Monoid import Control.Exception import Test.Hspec From 6cee1f390391f276bfc36997568f90bb1ec48b18 Mon Sep 17 00:00:00 2001 From: Owen Shepherd Date: Wed, 12 Jan 2022 22:16:17 +0000 Subject: [PATCH 3/4] use updated llvm-hs --- grin/cabal.project | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 grin/cabal.project diff --git a/grin/cabal.project b/grin/cabal.project new file mode 100644 index 00000000..ddfa1e1d --- /dev/null +++ b/grin/cabal.project @@ -0,0 +1,13 @@ +packages: . + +source-repository-package + type: git + location: https://github.com/414owen/llvm-hs.git + tag: 169e8518b0d9bd425f2daecbcab8b28b54da54dc + subdir: llvm-hs + +source-repository-package + type: git + location: https://github.com/414owen/llvm-hs.git + tag: 169e8518b0d9bd425f2daecbcab8b28b54da54dc + subdir: llvm-hs-pure From 7a663a9f18bfe73cb3c6388b1d9a7ba23ae97f16 Mon Sep 17 00:00:00 2001 From: Owen Shepherd Date: Thu, 13 Jan 2022 00:36:19 +0000 Subject: [PATCH 4/4] Update llvm-hs repo in stack.yaml --- stack.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stack.yaml b/stack.yaml index 19179fe3..eafb21f2 100644 --- a/stack.yaml +++ b/stack.yaml @@ -13,9 +13,9 @@ extra-deps: - set-extra-1.4.1 - llvm-hs-pretty-0.6.1.0 - system-posix-redirect-1.1.0.1 - - github: yatima-inc/llvm-hs - commit: 868e23a13942703255979369defdb49ac57b6866 - branch: llvm-7 + - github: 414owen/llvm-hs + commit: 169e8518b0d9bd425f2daecbcab8b28b54da54dc + branch: upgrade-to-ghc-8.10 subdirs: - llvm-hs - llvm-hs-pure