diff --git a/Data/Array/Base.hs b/Data/Array/Base.hs
index cb2180249f0923b32566ec2b224d3620c482716c..dda54a5579747d7ff511c1ac95ba3dbfafcde5d3 100644
--- a/Data/Array/Base.hs
+++ b/Data/Array/Base.hs
@@ -193,7 +193,7 @@ array (l,u) ies
 -- fast unsafeFreeze, namely for Array and UArray (well, they cover
 -- almost all cases).
 
-{-# INLINE listArray #-}
+{-# INLINE [1] listArray #-}
 
 -- | Constructs an immutable array from a list of initial elements.
 -- The list gives the elements of the array in ascending order
@@ -497,7 +497,7 @@ eqUArray arr1@(UArray l1 u1 n1 _) arr2@(UArray l2 u2 n2 _) =
     l1 == l2 && u1 == u2 &&
     and [unsafeAt arr1 i == unsafeAt arr2 i | i <- [0 .. n1 - 1]]
 
-{-# INLINE cmpUArray #-}
+{-# INLINE [1] cmpUArray #-}
 cmpUArray :: (IArray UArray e, Ix i, Ord e) => UArray i e -> UArray i e -> Ordering
 cmpUArray arr1 arr2 = compare (assocs arr1) (assocs arr2)
 
@@ -1700,6 +1700,7 @@ bOOL_SUBINDEX i = i `mod` bitSetSize
 -- immutable array (any instance of 'IArray') by taking a complete
 -- copy of it.
 freeze :: (Ix i, MArray a e m, IArray b e) => a i e -> m (b i e)
+{-# NOINLINE [1] freeze #-}
 freeze marr = do
   (l,u) <- getBounds marr
   n <- getNumElements marr
@@ -1760,7 +1761,7 @@ foreign import ccall unsafe "memcpy"
 
      * 'Data.Array.ST.STArray' -> 'Data.Array.Array'
 -}
-{-# INLINE unsafeFreeze #-}
+{-# INLINE [1] unsafeFreeze #-}
 unsafeFreeze :: (Ix i, MArray a e m, IArray b e) => a i e -> m (b i e)
 unsafeFreeze = freeze
 
@@ -1776,6 +1777,7 @@ unsafeFreeze = freeze
 -- mutable array (any instance of 'MArray') by taking a complete copy
 -- of it.
 thaw :: (Ix i, IArray a e, MArray b e m) => a i e -> m (b i e)
+{-# NOINLINE [1] thaw #-}
 thaw arr = case bounds arr of
   (l,u) -> do
     marr <- newArray_ (l,u)
@@ -1845,7 +1847,7 @@ thawSTUArray (UArray l u n arr) = do
 
      * 'Data.Array.Array'  -> 'Data.Array.ST.STArray'
 -}
-{-# INLINE unsafeThaw #-}
+{-# INLINE [1] unsafeThaw #-}
 unsafeThaw :: (Ix i, IArray a e, MArray b e m) => a i e -> m (b i e)
 unsafeThaw = thaw