  
  runMetaP :: LHsExpr GhcTc          -- Of type (Q Pat)
           -> TcM (LPat GhcPs)
--runMetaP = runMeta metaRequestP
-+runMetaP = runMeta metaRequestP undefined undefined
+ runMetaP = runMeta metaRequestP
++  (panic "runMetaP doesn't support splice caching (read)")
++  (panic "runMetaP doesn't support splice caching (write)")
  
  runMetaT :: LHsExpr GhcTc          -- Of type (Q Type)
           -> TcM (LHsType GhcPs)
--runMetaT = runMeta metaRequestT
-+runMetaT = runMeta metaRequestT undefined undefined
+ runMetaT = runMeta metaRequestT
++  (panic "runMetaT doesn't support splice caching (read)")
++  (panic "runMetaT doesn't support splice caching (write)")
  
  runMetaD :: LHsExpr GhcTc          -- Of type Q [Dec]
           -> TcM [LHsDecl GhcPs]

          -> (SrcSpan -> ForeignHValue -> TcM (Either MsgDoc hs_syn))        -- How to run x
          -> LHsExpr GhcTc        -- Of type x; typically x = Q TH.Exp, or
                                  --    something like that
@@ -727,7 +812,7 @@ runMeta' show_code ppr_hs run_and_convert expr
                             -- we catch all kinds of splices and annotations.
 
         -- Check that we've had no errors of any sort so far.

                                    OutputableBndrId (GhcPass p),
diff --git a/compiler/hsSyn/HsExprBin.hs b/compiler/hsSyn/HsExprBin.hs
new file mode 100644
index 0000000000..e369759f4d
--- /dev/null
+++ b/compiler/hsSyn/HsExprBin.hs
@@ -0,0 +1,94 @@
+module HsExprBin
+  ( getModuleSplicesPath
+  , whenSet
+  , HsSpliceData(..)
+  , nonEmptyHsSpliceData
+  , emptyHsSpliceData
+  , SpliceResult(..)
+  , recordSpliceResult
