diff options
-rw-r--r-- | libraries/ghc-prim/GHC/Magic.hs | 29 | ||||
-rw-r--r-- | libraries/ghc-prim/ghc-prim.cabal | 1 |
2 files changed, 30 insertions, 0 deletions
diff --git a/libraries/ghc-prim/GHC/Magic.hs b/libraries/ghc-prim/GHC/Magic.hs new file mode 100644 index 0000000000..b450e79b39 --- /dev/null +++ b/libraries/ghc-prim/GHC/Magic.hs @@ -0,0 +1,29 @@ +----------------------------------------------------------------------------- +-- | +-- Module : GHC.Magic +-- Copyright : (c) The University of Glasgow 2009 +-- License : see libraries/ghc-prim/LICENSE +-- +-- Maintainer : cvs-ghc@haskell.org +-- Stability : internal +-- Portability : non-portable (GHC Extensions) +-- +-- GHC magic. +-- Use GHC.Exts from the base package instead of importing this +-- module directly. +-- +----------------------------------------------------------------------------- + +{-# OPTIONS_GHC -XNoImplicitPrelude #-} + +module GHC.Magic (inline) where + +-- | The call '(inline f)' reduces to 'f', but 'inline' has a BuiltInRule +-- that tries to inline 'f' (if it has an unfolding) unconditionally +-- The 'NOINLINE' pragma arranges that inline only gets inlined (and +-- hence eliminated) late in compilation, after the rule has had +-- a good chance to fire. +inline :: a -> a +{-# NOINLINE[0] inline #-} +inline x = x + diff --git a/libraries/ghc-prim/ghc-prim.cabal b/libraries/ghc-prim/ghc-prim.cabal index ea52c3235f..c887b6c7ae 100644 --- a/libraries/ghc-prim/ghc-prim.cabal +++ b/libraries/ghc-prim/ghc-prim.cabal @@ -25,6 +25,7 @@ Library { GHC.Bool GHC.Debug GHC.Generics + GHC.Magic GHC.Ordering GHC.PrimopWrappers GHC.IntWord32 |