diff --git a/LinearScan/Hoopl.hs b/LinearScan/Hoopl.hs
--- a/LinearScan/Hoopl.hs
+++ b/LinearScan/Hoopl.hs
@@ -45,13 +45,12 @@
              | NodeOC { getNodeOC :: n O C }
 
 blockInfo :: (NodeAlloc nv nr, NonLocal nv, NonLocal nr)
-          => (Label -> Env Int)
-          -> BlockInfo Env (Block nv C C) (Block nr C C)
+          => BlockInfo Env (Block nv C C) (Block nr C C)
                            (NodeV nv) (NodeV nr)
-blockInfo getBlockId = BlockInfo
-    { blockId = getBlockId . entryLabel
+blockInfo = BlockInfo
+    { blockId = unsafeCoerce . entryLabel
 
-    , blockSuccessors = Prelude.mapM getBlockId . successors
+    , blockSuccessors = unsafeCoerce . successors
 
     , splitCriticalEdge = \(BlockCC b m e)
                            (BlockCC next _ _) -> do
@@ -127,8 +126,5 @@
 
     go n = evalStateT alloc ([n..], newSpillStack offset slotSize)
       where
-        alloc = allocate regs (blockInfo getBlockId) opInfo useVerifier $
+        alloc = allocate regs blockInfo opInfo useVerifier $
                     postorder_dfs_from body entry
-          where
-            getBlockId :: Hoopl.Label -> Env Int
-            getBlockId = return . unsafeCoerce
diff --git a/linearscan-hoopl.cabal b/linearscan-hoopl.cabal
--- a/linearscan-hoopl.cabal
+++ b/linearscan-hoopl.cabal
@@ -1,5 +1,5 @@
 name:          linearscan-hoopl
-version:       0.10.2
+version:       0.11
 synopsis:      Makes it easy to use the linearscan register allocator with Hoopl
 homepage:      http://github.com/jwiegley/linearscan-hoopl
 license:       BSD3
