import Prelude hiding (zip, unzip, last)
+#include "HsVersions.h"
-------------------------------------------------------------------------
-- GENERIC ZIPPER-BASED CONTROL-FLOW GRAPH (CONSTRUCTOR VIEW) --
-- | For the structured control-flow constructs, a condition is
-- represented as a function that takes as arguments the labels to
-- goto on truth or falsehood.
+--
+-- mkIfThenElse mk_cond then else
+-- = (mk_cond L1 L2) <*> L1: then <*> goto J
+-- <*> L2: else <*> goto J
+-- <*> J:
+--
+-- where L1, L2, J are fresh
mkIfThenElse :: (Outputable m, Outputable l, LastNode l)
=> (BlockId -> BlockId -> AGraph m l) -- branch condition
note_this_code_becomes_unreachable ::
(Monad m, LastNode l, Outputable middle, Outputable l) => ZTail middle l -> m ()
-#ifdef DEBUG
-note_this_code_becomes_unreachable = u
+note_this_code_becomes_unreachable = if debugIsOn then u else \_ -> return ()
where u (ZLast LastExit) = return ()
u (ZLast (LastOther l)) | isBranchNode l = return ()
-- Note [Branch follows branch]
u tail = fail ("unreachable code: " ++ showSDoc (ppr tail))
-#else
-note_this_code_becomes_unreachable _ = return ()
-#endif
{-
Note [Branch follows branch]
Emitting a Branch at this point is fine:
goto L1; L2: ...stuff...
-}
+
+_unused :: FS.FastString
+_unused = undefined