diff -pruN 0.16.1-2/.github/workflows/release.yml 0.16.2-1/.github/workflows/release.yml
--- 0.16.1-2/.github/workflows/release.yml	2025-01-21 18:22:03.000000000 +0000
+++ 0.16.2-1/.github/workflows/release.yml	2025-04-14 13:36:57.000000000 +0000
@@ -74,7 +74,7 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - name: Download all the dists
-        uses: actions/download-artifact@v4.1.8
+        uses: actions/download-artifact@v4.2.1
         with:
           pattern: cibw-*
           path: dist
@@ -101,7 +101,7 @@ jobs:
 
     steps:
     - name: Download all the dists
-      uses: actions/download-artifact@v4.1.8
+      uses: actions/download-artifact@v4.2.1
       with:
         pattern: cibw-*
         path: dist
diff -pruN 0.16.1-2/debian/changelog 0.16.2-1/debian/changelog
--- 0.16.1-2/debian/changelog	2025-03-06 22:00:30.000000000 +0000
+++ 0.16.2-1/debian/changelog	2025-08-13 10:13:08.000000000 +0000
@@ -1,3 +1,10 @@
+python-bytecode (0.16.2-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream release.
+
+ -- Colin Watson <cjwatson@debian.org>  Wed, 13 Aug 2025 11:13:08 +0100
+
 python-bytecode (0.16.1-2) unstable; urgency=medium
 
   * Team upload.
diff -pruN 0.16.1-2/doc/changelog.rst 0.16.2-1/doc/changelog.rst
--- 0.16.1-2/doc/changelog.rst	2025-01-21 18:22:03.000000000 +0000
+++ 0.16.2-1/doc/changelog.rst	2025-04-14 13:36:57.000000000 +0000
@@ -1,6 +1,14 @@
 ChangeLog
 =========
 
+2025-04-14: Version 0.16.2
+--------------------------
+
+Bugfixes:
+
+- fix ControlFlowGraph dead block detection by accounting for fall-through
+  edges. PR #161
+
 2025-01-21: Version 0.16.1
 --------------------------
 
diff -pruN 0.16.1-2/src/bytecode/cfg.py 0.16.2-1/src/bytecode/cfg.py
--- 0.16.1-2/src/bytecode/cfg.py	2025-01-21 18:22:03.000000000 +0000
+++ 0.16.2-1/src/bytecode/cfg.py	2025-04-14 13:36:57.000000000 +0000
@@ -731,12 +731,18 @@ class ControlFlowGraph(_bytecode.BaseByt
             if id(block) in seen_block_ids:
                 continue
             seen_block_ids.add(id(block))
+            fall_through = True
             for i in block:
-                if isinstance(i, Instr) and isinstance(i.arg, BasicBlock):
-                    stack.append(i.arg)
+                if isinstance(i, Instr):
+                    if isinstance(i.arg, BasicBlock):
+                        stack.append(i.arg)
+                    if i.is_final():
+                        fall_through = False
                 elif isinstance(i, TryBegin):
                     assert isinstance(i.target, BasicBlock)
                     stack.append(i.target)
+            if fall_through and block.next_block:
+                stack.append(block.next_block)
 
         return [b for b in self if id(b) not in seen_block_ids]
 
diff -pruN 0.16.1-2/src/bytecode/instr.py 0.16.2-1/src/bytecode/instr.py
--- 0.16.1-2/src/bytecode/instr.py	2025-01-21 18:22:03.000000000 +0000
+++ 0.16.2-1/src/bytecode/instr.py	2025-04-14 13:36:57.000000000 +0000
@@ -336,15 +336,15 @@ STATIC_STACK_EFFECTS: Dict[str, Tuple[in
     "CHECK_EXC_MATCH": (-2, 2),  # (TOS1, TOS) -> (TOS1, bool)
     "CHECK_EG_MATCH": (-2, 2),  # (TOS, TOS1) -> non-matched, matched or TOS1, None)
     "PREP_RERAISE_STAR": (-2, 1),  # (TOS1, TOS) -> new exception group)
-    **{k: (-1, 1) for k in (o for o in _opcode.opmap if (o.startswith("UNARY_")))},
-    **{
-        k: (-2, 1)
-        for k in (
+    **dict.fromkeys((o for o in _opcode.opmap if o.startswith("UNARY_")), (-1, 1)),
+    **dict.fromkeys(
+        (
             o
             for o in _opcode.opmap
-            if (o.startswith("BINARY_") or o.startswith("INPLACE_"))
-        )
-    },
+            if o.startswith("BINARY_") or o.startswith("INPLACE_")
+        ),
+        (-2, 1),
+    ),
     # Python 3.12 changes not covered by dis.stack_effect
     "BINARY_SLICE": (-3, 1),
     # "STORE_SLICE" handled by dis.stack_effect
diff -pruN 0.16.1-2/tests/test_cfg.py 0.16.2-1/tests/test_cfg.py
--- 0.16.1-2/tests/test_cfg.py	2025-01-21 18:22:03.000000000 +0000
+++ 0.16.2-1/tests/test_cfg.py	2025-04-14 13:36:57.000000000 +0000
@@ -712,6 +712,20 @@ class BytecodeBlocksFunctionalTests(Test
         other_block = BasicBlock()
         self.assertRaises(ValueError, blocks.get_block_index, other_block)
 
+    def test_get_dead_blocks(self):
+        def condition():
+            pass
+
+        def test():
+            if condition():
+                print("1")
+            else:
+                print("2")
+
+        bytecode = Bytecode.from_code(test.__code__)
+        cfg = ControlFlowGraph.from_bytecode(bytecode)
+        assert len(cfg.get_dead_blocks()) == 0
+
 
 class CFGStacksizeComputationTests(TestCase):
     def check_stack_size(self, func):
