Add new GHC.Magic module
authorIan Lynagh <igloo@earth.li>
Mon, 23 Nov 2009 19:46:09 +0000 (19:46 +0000)
committerIan Lynagh <igloo@earth.li>
Mon, 23 Nov 2009 19:46:09 +0000 (19:46 +0000)
GHC/Magic.hs [new file with mode: 0644]
ghc-prim.cabal

diff --git a/GHC/Magic.hs b/GHC/Magic.hs
new file mode 100644 (file)
index 0000000..b450e79
--- /dev/null
@@ -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
+
index ea52c32..c887b6c 100644 (file)
@@ -25,6 +25,7 @@ Library {
         GHC.Bool
         GHC.Debug
         GHC.Generics
+        GHC.Magic
         GHC.Ordering
         GHC.PrimopWrappers
         GHC.IntWord32