From: Siu Kwan Lam <1929845+sklam@users.noreply.github.com>
Origin: https://github.com/numba/numba/pull/8545
Date: Wed, 26 Oct 2022 17:40:40 -0500
Subject: Fix py3.10 failure

failng test numba.tests.test_parfors.TestParforChunksizing.test_all_iterations_reset_chunksize
---
 numba/core/interpreter.py | 44 ++++++++++++++++++++++++++------------------
 1 file changed, 26 insertions(+), 18 deletions(-)

diff --git a/numba/core/interpreter.py b/numba/core/interpreter.py
index 0faea35..ba670bd 100644
--- a/numba/core/interpreter.py
+++ b/numba/core/interpreter.py
@@ -1518,18 +1518,25 @@ class Interpreter(object):
         self.dfainfo = self.dfa.infos[self.current_block_offset]
         self.assigner = Assigner()
         # Check out-of-scope syntactic-block
-        while self.syntax_blocks:
-            if offset >= self.syntax_blocks[-1].exit:
-                synblk = self.syntax_blocks.pop()
-                if isinstance(synblk, ir.With):
-                    self.current_block.append(ir.PopBlock(self.loc))
-            else:
-                break
-        # inject try block:
-        newtryblk = self.dfainfo.active_try_block
-        if newtryblk is not None:
-            if newtryblk is not tryblk:
-                self._insert_try_block_begin()
+        if PYVERSION >= (3, 11):
+            while self.syntax_blocks:
+                if offset >= self.syntax_blocks[-1].exit:
+                    synblk = self.syntax_blocks.pop()
+                    if isinstance(synblk, ir.With):
+                        self.current_block.append(ir.PopBlock(self.loc))
+                else:
+                    break
+            # inject try block:
+            newtryblk = self.dfainfo.active_try_block
+            if newtryblk is not None:
+                if newtryblk is not tryblk:
+                    self._insert_try_block_begin()
+        else:
+            while self.syntax_blocks:
+                if offset >= self.syntax_blocks[-1].exit:
+                    self.syntax_blocks.pop()
+                else:
+                    break
 
     def _end_current_block(self):
         # Handle try block
@@ -1735,12 +1742,13 @@ class Interpreter(object):
 
     def _dispatch(self, inst, kws):
         assert self.current_block is not None
-        if self.syntax_blocks:
-            top = self.syntax_blocks[-1]
-            if isinstance(top, ir.With) :
-                if inst.offset >= top.exit:
-                    self.current_block.append(ir.PopBlock(loc=self.loc))
-                    self.syntax_blocks.pop()
+        if PYVERSION == (3, 11):
+            if self.syntax_blocks:
+                top = self.syntax_blocks[-1]
+                if isinstance(top, ir.With) :
+                    if inst.offset >= top.exit:
+                        self.current_block.append(ir.PopBlock(loc=self.loc))
+                        self.syntax_blocks.pop()
 
         fname = "op_%s" % inst.opname.replace('+', '_')
         try:
