diff --git a/libraries/base/GHC/IORef.hs b/libraries/base/GHC/IORef.hs
index 0736567975f7d36eed7f7a1b4dbf4948bafb7f05..0832be04cfe78426a3ffd8bc009d135341548d07 100644
--- a/libraries/base/GHC/IORef.hs
+++ b/libraries/base/GHC/IORef.hs
@@ -31,11 +31,10 @@ import GHC.IO
 
 -- |A mutable variable in the 'IO' monad
 newtype IORef a = IORef (STRef RealWorld a)
-
--- explicit instance because Haddock can't figure out a derived one
--- | @since 4.1.0.0
-instance Eq (IORef a) where
-  IORef x == IORef y = x == y
+  deriving Eq
+  -- ^ Pointer equality.
+  --
+  -- @since 4.1.0.0
 
 -- |Build a new 'IORef'
 newIORef    :: a -> IO (IORef a)
diff --git a/libraries/base/GHC/STRef.hs b/libraries/base/GHC/STRef.hs
index 22db7f32db63b0a1f680f5499b6c709ed58acbe6..a6e4292ddbe75c59335ef941a1edbba235604675 100644
--- a/libraries/base/GHC/STRef.hs
+++ b/libraries/base/GHC/STRef.hs
@@ -44,7 +44,8 @@ writeSTRef (STRef var#) val = ST $ \s1# ->
     case writeMutVar# var# val s1#      of { s2# ->
     (# s2#, () #) }
 
--- Just pointer equality on mutable references:
--- | @since 2.01
+-- | Pointer equality.
+--
+-- @since 2.01
 instance Eq (STRef s a) where
     STRef v1# == STRef v2# = isTrue# (sameMutVar# v1# v2#)