packages feed

ghc-simple 0.1.0.0 → 0.1.1.0

raw patch · 4 files changed

+221/−29 lines, 4 filesdep −data-defaultPVP ok

version bump matches the API change (PVP)

Dependencies removed: data-default

API changes (from Hackage documentation)

+ Language.Haskell.GHC.Simple.PrimIface: AddCFinalizerToWeakOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Addr2IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrAddOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrEqOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrGeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrGtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrLeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrLtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrNeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrRemOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrSubOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrToAnyOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AndIOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AndOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AtomicModifyMutVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AtomicallyOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: BSwap16Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: BSwap32Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: BSwap64Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: BSwapOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ByteArrayContents_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CasArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CasByteArrayOp_Int :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CasMutVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CatchOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CatchRetryOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CatchSTMOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CharEqOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CharGeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CharGtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CharLeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CharLtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CharNeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Check :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ChrOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CloneArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CloneMutableArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Compare :: OccName -> Type -> PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: CopyAddrToByteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CopyArrayArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CopyArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CopyByteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CopyByteArrayToAddrOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CopyMutableArrayArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CopyMutableArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CopyMutableByteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CopyMutableByteArrayToAddrOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DataToTagOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DeRefStablePtrOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DeRefWeakOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DelayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Double2FloatOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Double2IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleAcosOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleAddOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleAsinOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleAtanOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleCosOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleCoshOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleDecode_2IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleDivOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleEqOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleExpOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleGeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleGtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleLeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleLogOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleLtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleMulOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleNeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleNegOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoublePowerOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleSinOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleSinhOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleSqrtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleSubOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleTanOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleTanhOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Dyadic :: OccName -> Type -> PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: EqStableNameOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: EqStablePtrOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FetchAddByteArrayOp_Int :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FinalizeWeakOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Float2DoubleOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Float2IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatAcosOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatAddOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatAsinOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatAtanOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatCosOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatCoshOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatDecode_IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatDivOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatEqOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatExpOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatGeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatGtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatLeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatLogOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatLtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatMulOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatNeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatNegOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatPowerOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatSinOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatSinhOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatSqrtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatSubOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatTanOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatTanhOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ForkOnOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ForkOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FreezeArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: GenPrimOp :: OccName -> [TyVar] -> [Type] -> Type -> PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: GetApStackValOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: GetCCSOfOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: GetCurrentCCSOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: GetSparkOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ISllOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ISraOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ISrlOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexArrayArrayOp_ArrayArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexArrayArrayOp_ByteArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Addr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Double :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Float :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Int :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Int16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Int32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Int64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Int8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_StablePtr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_WideChar :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Word :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Word16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Word32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Word64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Word8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Addr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Double :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Float :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Int :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Int16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Int32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Int64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Int8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_StablePtr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_WideChar :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Word :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Word16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Word32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Word64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Word8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Int2AddrOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Int2DoubleOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Int2FloatOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Int2WordOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntAddCOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntAddOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntEqOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntGeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntGtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntLeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntLtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntMulMayOfloOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntMulOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntNeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntNegOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntQuotOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntQuotRemOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntRemOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntSubCOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntSubOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IsCurrentThreadBoundOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IsEmptyMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: KillThreadOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: LabelThreadOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: MakeStableNameOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: MakeStablePtrOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: MaskAsyncExceptionsOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: MaskStatus :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: MaskUninterruptibleOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: MkApUpd0_Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: MkWeakNoFinalizerOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: MkWeakOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Monadic :: OccName -> Type -> PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: MyThreadIdOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Narrow16IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Narrow16WordOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Narrow32IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Narrow32WordOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Narrow8IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Narrow8WordOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewAlignedPinnedByteArrayOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewArrayArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewBCOOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewByteArrayOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewMutVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewPinnedByteArrayOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewTVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NoDuplicateOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NotIOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NotOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NumSparks :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: OrIOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: OrOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: OrdOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ParAtAbsOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ParAtForNowOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ParAtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ParAtRelOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ParGlobalOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ParLocalOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ParOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PopCnt16Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PopCnt32Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PopCnt64Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PopCnt8Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PopCntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchAddrOp0 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchAddrOp1 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchAddrOp2 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchAddrOp3 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchByteArrayOp0 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchByteArrayOp1 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchByteArrayOp2 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchByteArrayOp3 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchMutableByteArrayOp0 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchMutableByteArrayOp1 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchMutableByteArrayOp2 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchMutableByteArrayOp3 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PutMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: RaiseIOOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: RaiseOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadArrayArrayOp_ArrayArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadArrayArrayOp_ByteArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadArrayArrayOp_MutableArrayArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadArrayArrayOp_MutableByteArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Addr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Double :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Float :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Int :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Int16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Int32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Int64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Int8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_StablePtr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_WideChar :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Word :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Word16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Word32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Word64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Word8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadMutVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Addr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Double :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Float :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Int :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Int16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Int32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Int64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Int8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_StablePtr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_WideChar :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Word :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Word16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Word32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Word64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Word8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadTVarIOOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadTVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReallyUnsafePtrEqualityOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: RetryOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SameMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SameMutVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SameMutableArrayArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SameMutableArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SameMutableByteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SameTVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SeqOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SetByteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SizeofArrayArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SizeofArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SizeofByteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SizeofMutableArrayArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SizeofMutableArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SizeofMutableByteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SllOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SparkOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SrlOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: StableNameToIntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: TagToEnumOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: TakeMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ThawArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ThreadStatusOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: TouchOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: TraceEventOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: TraceMarkerOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: TryPutMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: TryReadMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: TryTakeMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: UnmaskAsyncExceptionsOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: UnpackClosureOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: UnsafeFreezeArrayArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: UnsafeFreezeArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: UnsafeFreezeByteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: UnsafeThawArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecAddOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecBroadcastOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecDivOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecIndexByteArrayOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecIndexOffAddrOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecIndexScalarByteArrayOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecIndexScalarOffAddrOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecInsertOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecMulOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecNegOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecPackOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecQuotOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecReadByteArrayOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecReadOffAddrOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecReadScalarByteArrayOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecReadScalarOffAddrOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecRemOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecSubOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecUnpackOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecWriteByteArrayOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecWriteOffAddrOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecWriteScalarByteArrayOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecWriteScalarOffAddrOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WaitReadOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WaitWriteOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Word2DoubleOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Word2FloatOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Word2IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordAdd2Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordAddOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordEqOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordGeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordGtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordLeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordLtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordMul2Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordMulOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordNeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordQuotOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordQuotRem2Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordQuotRemOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordRemOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordSubOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteArrayArrayOp_ArrayArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteArrayArrayOp_ByteArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteArrayArrayOp_MutableArrayArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteArrayArrayOp_MutableByteArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Addr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Double :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Float :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Int :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Int16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Int32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Int64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Int8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_StablePtr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_WideChar :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Word :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Word16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Word32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Word64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Word8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteMutVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Addr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Double :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Float :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Int :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Int16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Int32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Int64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Int8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_StablePtr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_WideChar :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Word :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Word16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Word32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Word64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Word8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteTVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: XorIOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: XorOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: YieldOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: data PrimOp :: *
+ Language.Haskell.GHC.Simple.PrimIface: data PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: fixPrimopTypes :: (PrimOp -> PrimOpInfo) -> (PrimOp -> Arity -> StrictSig) -> HscEnv -> IO ()
+ Language.Haskell.GHC.Simple.PrimIface: mkCompare :: FastString -> Type -> PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: mkDyadic :: FastString -> Type -> PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: mkGenPrimOp :: FastString -> [TyVar] -> [Type] -> Type -> PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: mkMonadic :: FastString -> Type -> PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: primIface :: (PrimOp -> PrimOpInfo) -> (PrimOp -> Arity -> StrictSig) -> ModIface
+ Language.Haskell.GHC.Simple.Types: CompiledModule :: ModSummary -> String -> String -> Bool -> Bool -> Maybe FilePath -> FilePath -> a -> CompiledModule a
+ Language.Haskell.GHC.Simple.Types: Error :: SrcSpan -> String -> String -> Error
+ Language.Haskell.GHC.Simple.Types: Failure :: [Error] -> [Warning] -> CompResult a
+ Language.Haskell.GHC.Simple.Types: Success :: [CompiledModule a] -> [Warning] -> DynFlags -> CompResult a
+ Language.Haskell.GHC.Simple.Types: Warning :: SrcSpan -> String -> Warning
+ Language.Haskell.GHC.Simple.Types: cfgCustomPrimIface :: CompConfig -> Maybe (PrimOp -> PrimOpInfo, PrimOp -> Arity -> StrictSig)
+ Language.Haskell.GHC.Simple.Types: cfgGhcFlags :: CompConfig -> [String]
+ Language.Haskell.GHC.Simple.Types: cfgGhcLibDir :: CompConfig -> Maybe FilePath
+ Language.Haskell.GHC.Simple.Types: cfgUpdateDynFlags :: CompConfig -> DynFlags -> DynFlags
+ Language.Haskell.GHC.Simple.Types: cfgUseGhcErrorLogger :: CompConfig -> Bool
+ Language.Haskell.GHC.Simple.Types: cfgUseTargetsFromFlags :: CompConfig -> Bool
+ Language.Haskell.GHC.Simple.Types: compDynFlags :: CompResult a -> DynFlags
+ Language.Haskell.GHC.Simple.Types: compErrors :: CompResult a -> [Error]
+ Language.Haskell.GHC.Simple.Types: compResult :: CompResult a -> [CompiledModule a]
+ Language.Haskell.GHC.Simple.Types: compSuccess :: CompResult a -> Bool
+ Language.Haskell.GHC.Simple.Types: compWarnings :: CompResult a -> [Warning]
+ Language.Haskell.GHC.Simple.Types: data CompConfig
+ Language.Haskell.GHC.Simple.Types: data CompResult a
+ Language.Haskell.GHC.Simple.Types: data CompiledModule a
+ Language.Haskell.GHC.Simple.Types: data Error
+ Language.Haskell.GHC.Simple.Types: data Warning
+ Language.Haskell.GHC.Simple.Types: defaultConfig :: CompConfig
+ Language.Haskell.GHC.Simple.Types: errorExtraInfo :: Error -> String
+ Language.Haskell.GHC.Simple.Types: errorMessage :: Error -> String
+ Language.Haskell.GHC.Simple.Types: errorSpan :: Error -> SrcSpan
+ Language.Haskell.GHC.Simple.Types: modCompiledModule :: CompiledModule a -> a
+ Language.Haskell.GHC.Simple.Types: modInterfaceFile :: CompiledModule a -> FilePath
+ Language.Haskell.GHC.Simple.Types: modIsTarget :: CompiledModule a -> Bool
+ Language.Haskell.GHC.Simple.Types: modName :: CompiledModule a -> String
+ Language.Haskell.GHC.Simple.Types: modPackageKey :: CompiledModule a -> String
+ Language.Haskell.GHC.Simple.Types: modSourceFile :: CompiledModule a -> Maybe FilePath
+ Language.Haskell.GHC.Simple.Types: modSourceIsHsBoot :: CompiledModule a -> Bool
+ Language.Haskell.GHC.Simple.Types: modSummary :: CompiledModule a -> ModSummary
+ Language.Haskell.GHC.Simple.Types: warnMessage :: Warning -> String
+ Language.Haskell.GHC.Simple.Types: warnSpan :: Warning -> SrcSpan

Files

ghc-simple.cabal view
@@ -1,5 +1,5 @@ name:                ghc-simple-version:             0.1.0.0+version:             0.1.1.0 synopsis:            Simplified interface to the GHC API. description:         The GHC API is a great tool for working with Haskell code.                      Unfortunately, it's also fairly opaque and hard to get@@ -26,15 +26,14 @@   exposed-modules:     Language.Haskell.GHC.Simple,     Language.Haskell.GHC.Simple.Impl-  other-modules:       +    Language.Haskell.GHC.Simple.PrimIface     Language.Haskell.GHC.Simple.Types   other-extensions:     CPP, PatternGuards, FlexibleInstances   build-depends:     ghc          >=7.8,     base         >=4.7 && <4.9,-    ghc-paths    >=0.1 && <0.2,-    data-default >=0.5 && <0.6+    ghc-paths    >=0.1 && <0.2   hs-source-dirs:     src   default-language:
src/Language/Haskell/GHC/Simple.hs view
@@ -1,12 +1,12 @@ {-# LANGUAGE CPP, PatternGuards #-} -- | Simplified interface to the GHC API. module Language.Haskell.GHC.Simple (-    -- Configuration, input and output types+    -- * Configuration, input and output types     module Simple.Types,     Compile,     StgModule, -    -- GHC re-exports needed to meaningfully process STG and Core.+    -- * GHC re-exports for processing STG and Core     module CoreSyn, module StgSyn, module Module,     module Id, module IdInfo, module Var, module Literal, module DataCon,     module OccName, module Name,@@ -17,7 +17,7 @@     PkgKey,     pkgKeyString, modulePkgKey,     -    -- Entry points+    -- * Entry points     compile, compileWith, genericCompile   ) where @@ -30,6 +30,7 @@ import Bag import SrcLoc import Outputable+import Hooks  -- Convenience re-exports for fiddling with STG import StgSyn@@ -51,6 +52,8 @@ -- Misc. stuff import GHC.Paths (libdir) import Data.IORef+import Control.Monad+import Language.Haskell.GHC.Simple.PrimIface as Simple.PrimIface import Language.Haskell.GHC.Simple.Types as Simple.Types import Language.Haskell.GHC.Simple.Impl @@ -61,7 +64,7 @@         -- ^ List of compilation targets. A target can be either a module         --   or a file name.         -> IO (CompResult a)-compile = compileWith def+compile = compileWith defaultConfig  -- | Compile a list of targets and their dependencies using a custom --   configuration.@@ -92,12 +95,21 @@     (flags, _staticwarns) <- parseStaticFlags $ map noLoc (cfgGhcFlags cfg)     warns <- newIORef []     runGhc (maybe (Just libdir) Just (cfgGhcLibDir cfg)) $ do++      -- Parse and update dynamic flags       dfs <- getSessionDynFlags       (dfs', files2, _dynwarns) <- parseDynamicFlags dfs flags       let dfs'' = cfgUpdateDynFlags cfg $ dfs' {                       log_action = logger (log_action dfs') warns                     }-      _ <- setSessionDynFlags dfs''++      -- Update prim interface hook name and cache if we're using a custom+      -- GHC.Prim interface, setting the dynflags in the process.+      case cfgCustomPrimIface cfg of+        Just (nfo, strs) -> setPrimIface dfs'' nfo strs+        _                -> void $ setSessionDynFlags dfs''++      -- Generate code and report results       ecode <- genCode (toCompiledModule comp) (files ++ map unLoc files2)       ws <- liftIO $ readIORef warns       case ecode of@@ -113,6 +125,12 @@               compWarnings = ws             }   where+    setPrimIface dfs nfo strs = do+      void $ setSessionDynFlags dfs {+          hooks = (hooks dfs) {ghcPrimIfaceHook = Just $ primIface nfo strs}+        }+      getSession >>= liftIO . fixPrimopTypes nfo strs+     logger deflog warns dfs severity srcspan style msg       | cfgUseGhcErrorLogger cfg = do         logger' deflog warns dfs severity srcspan style msg
+ src/Language/Haskell/GHC/Simple/PrimIface.hs view
@@ -0,0 +1,167 @@+{-# LANGUAGE CPP #-}+-- | Facilities for using a custom GHC.Prim interface.+--+--   The simplest(?) way to use this is to generate primop info+--   using the @genprimopcode@ program from GHC, making any desired changes+--   to those files, and passing the @primOpInfo@ and @primOpStrictness@+--   functions defined therein as the @cfgCustomPrimIface@ member of+--   your config.+--+--   Your strictness and info functions need to support all the+--   primops exported by the GHC version in use, making code written for this+--   interface rather less portable than code using the rest of @ghc-simple@.+--+--   This functionality is probably what you want if you are making a cross+--   compiler, to prevent the types of GHC primops from changing depending on+--   the compiler host platform.+--+--   If you are *not* making a cross compiler, chances are you will not want to+--   touch this with a ten foot pole.+module Language.Haskell.GHC.Simple.PrimIface (+    module Demand, module TysWiredIn, module FastString, module CmmType,+    module BasicTypes,+    PrimOp (..), PrimOpInfo (..),+    mkGenPrimOp, mkDyadic, mkMonadic, mkCompare,+    primIface, fixPrimopTypes+  ) where+import IfaceEnv (initNameCache)+import PrelInfo (wiredInThings, primOpRules, ghcPrimIds)+import PrimOp hiding (primOpSig)+import IdInfo+import Rules+import PrelNames+import Name+import BasicTypes+import Type+import Unique+import Id+import TysWiredIn+import TysPrim+import FastString+import Demand+import HscTypes+import Avail+import MkId (seqId)+import Data.IORef (modifyIORef')+import TyCon+import CmmType++#if __GLASGOW_HASKELL__ < 710+setCallArityInfo :: IdInfo -> Arity -> IdInfo+setCallArityInfo i _ = i+#endif++-- | Module interface for @GHC.Prim@, with the given function applied to each+--   primop.+primIface :: (PrimOp -> PrimOpInfo)+          -> (PrimOp -> Arity -> StrictSig)+          -> ModIface+primIface nfo str = (emptyModIface gHC_PRIM) {+        mi_exports = exports nfo str,+        mi_decls = [],+        mi_fixities = fixies,+        mi_fix_fn = mkIfaceFixCache fixies+    }+  where+    fixies = (getOccName seqId, Fixity 0 InfixR) :+             [(primOpOcc op, f)+             | op <- allThePrimOps+             , Just f <- [primOpFixity op]]++exports :: (PrimOp -> PrimOpInfo)+        -> (PrimOp -> Arity -> StrictSig)+        -> [IfaceExport]+exports nfo str = concat [+    map (Avail . idName) ghcPrimIds,+    map (Avail . idName . (fixPrimOp nfo str)) allThePrimOps,+    [ AvailTC n [n]+    | tc <- funTyCon : coercibleTyCon : primTyCons, let n = tyConName tc]+  ]++-- | Fix primop types in the name cache.+fixPrimopTypes :: (PrimOp -> PrimOpInfo)+               -> (PrimOp -> Arity -> StrictSig)+               -> HscEnv+               -> IO ()+fixPrimopTypes nfo str env = do+    modifyIORef' (hsc_NC env) fixNC+  where+    isPrim (AnId v) = isPrimOpId v+    isPrim _        = False++    fixNC (NameCache us _) = initNameCache us $ concat [+        [getName thing | thing <- wiredInThings, not (isPrim thing)],+        basicKnownKeyNames,+        map (getName . AnId . fixPrimOp nfo str) allThePrimOps+      ]++-- | Primitive operation signature: constists of the op's type, arity and+--   strictness annotations.+data PrimOpSig = PrimOpSig {+    opType       :: !Type,+    opArity      :: !Arity,+    opStrictness :: !StrictSig+  }++-- | Get the signature of a primitive operation.+primOpSig :: (PrimOp -> PrimOpInfo)+          -> (PrimOp -> Arity -> StrictSig)+          -> PrimOp+          -> PrimOpSig+primOpSig nfo str op = PrimOpSig {+    opType       = typ,+    opArity      = arity,+    opStrictness = str op arity+  }+  where+    (typ, arity) =+      case nfo op of+        Monadic _ t          -> (mkForAllTys [] $ mkFunTys [t] t, 1)+        Dyadic _ t           -> (mkForAllTys [] $ mkFunTys [t,t] t, 2)+        Compare _ t          -> (mkForAllTys [] $ mkFunTys [t,t] intPrimTy, 2)+        GenPrimOp _ tvs ts t -> (mkForAllTys tvs $ mkFunTys ts t, length ts)++data PrimOpInfo+  = Dyadic      OccName         -- string :: T -> T -> T+                Type+  | Monadic     OccName         -- string :: T -> T+                Type+  | Compare     OccName         -- string :: T -> T -> Bool+                Type++  | GenPrimOp   OccName         -- string :: \/a1..an . T1 -> .. -> Tk -> T+                [TyVar]+                [Type]+                Type++fixPrimOp :: (PrimOp -> PrimOpInfo)+          -> (PrimOp -> Arity -> StrictSig)+          -> PrimOp+          -> Id+fixPrimOp opnfo str op =+    var+  where+    sig    = primOpSig opnfo str op+    var    = mkGlobalId (PrimOpId op) name (opType sig) nfo+    name   = mkWiredInName gHC_PRIM (primOpOcc op) unique (AnId var) UserSyntax+    unique = mkPrimOpIdUnique $ primOpTag op+    nfo    = flip setCallArityInfo (opArity sig) $+             noCafIdInfo `setStrictnessInfo` opStrictness sig+                         `setSpecInfo` si+                         `setArityInfo` opArity sig+                         `setInlinePragInfo` neverInlinePragma+    si     = mkSpecInfo $ case primOpRules name op of+                            Just r -> [r]+                            _      -> []++-- | Create a 'PrimOpInfo' for dyadic, monadic and compare primops.+--   Needed by GHC-generated primop info includes.+mkDyadic, mkMonadic, mkCompare :: FastString -> Type -> PrimOpInfo+mkDyadic str  ty = Dyadic  (mkVarOccFS str) ty+mkMonadic str ty = Monadic (mkVarOccFS str) ty+mkCompare str ty = Compare (mkVarOccFS str) ty++-- | Create a general 'PrimOpInfo'. Needed by GHC-generated primop info+--   includes.+mkGenPrimOp :: FastString -> [TyVar] -> [Type] -> Type -> PrimOpInfo+mkGenPrimOp str tvs tys ty = GenPrimOp (mkVarOccFS str) tvs tys ty
src/Language/Haskell/GHC/Simple/Types.hs view
@@ -1,25 +1,21 @@ -- | Config, input and output types for the simplified GHC API. module Language.Haskell.GHC.Simple.Types (-    Default (..),-         -- Configuration     CompConfig,+    defaultConfig,     cfgGhcFlags, cfgUseTargetsFromFlags, cfgUpdateDynFlags, cfgGhcLibDir,-    cfgUseGhcErrorLogger,+    cfgUseGhcErrorLogger, cfgCustomPrimIface,      -- Results and errors     CompiledModule (..),     CompResult (..),     Error (..),     Warning (..),-    ghcSuccess+    compSuccess   ) where --- GHC imports import GHC---- Misc. stuff-import Data.Default+import Language.Haskell.GHC.Simple.PrimIface  data CompConfig = CompConfig {     -- | GHC command line flags to control the Haskell to STG compilation@@ -63,17 +59,29 @@     --   of the system's default GHC compiler will be used.     --     --   Default: @Nothing@-    cfgGhcLibDir :: Maybe FilePath+    cfgGhcLibDir :: Maybe FilePath,++    -- | Use a custom interface for @GHC.Prim@.+    --   This is useful if you want to, for instance, compile to a 32 bit+    --   target architecture on a 64 bit host.+    --+    --   For more information, see "Language.Haskell.GHC.Simple.PrimIface".+    --+    --   Default: @Nothing@+    cfgCustomPrimIface :: Maybe (PrimOp -> PrimOpInfo,+                                 PrimOp -> Arity -> StrictSig)   } -instance Default CompConfig where-  def = CompConfig {-      cfgGhcFlags            = [],-      cfgUseTargetsFromFlags = True,-      cfgUpdateDynFlags      = id,-      cfgUseGhcErrorLogger   = False,-      cfgGhcLibDir           = Nothing-    }+-- | Default configuration.+defaultConfig :: CompConfig+defaultConfig = CompConfig {+    cfgGhcFlags            = [],+    cfgUseTargetsFromFlags = True,+    cfgUpdateDynFlags      = id,+    cfgUseGhcErrorLogger   = False,+    cfgGhcLibDir           = Nothing,+    cfgCustomPrimIface     = Nothing+  }  -- | Compiler output and metadata for a given module. data CompiledModule a = CompiledModule {@@ -151,6 +159,6 @@     }  -- | Does the given 'CompResult' represent a successful compilation?-ghcSuccess :: CompResult a -> Bool-ghcSuccess (Success {}) = True-ghcSuccess _            = False+compSuccess :: CompResult a -> Bool+compSuccess (Success {}) = True+compSuccess _            = False