diff --git a/Cython/Compiler/Nodes.py b/Cython/Compiler/Nodes.py
index a88cc6d3442bf0b7c847c88ba1e2eff3dc15b4e1..f83da400a9bd5b6fc11baf4e1f0e0c53ff4f6af7 100644
--- a/Cython/Compiler/Nodes.py
+++ b/Cython/Compiler/Nodes.py
@@ -6093,14 +6093,10 @@ class ExceptClauseNode(Node):
 
         if (not getattr(self.body, 'stats', True)
                 and self.excinfo_target is None
-                and (self.target is None or self.is_except_as)):
+                and self.target is None):
             # most simple case: no exception variable, empty body (pass)
             # => reset the exception state, done
             code.putln("PyErr_Restore(0,0,0);")
-            if self.is_except_as and self.target:
-                # "except ... as x" deletes x after use
-                # target is known to be a NameNode
-                self.target.generate_deletion_code(code)
             code.put_goto(end_label)
             code.putln("}")
             return
diff --git a/tests/run/tryexcept.pyx b/tests/run/tryexcept.pyx
index 85330b3abcbba04ad404b4d99ec7bc0793a6e7bb..2302ffb8b8c76efcd0adc963db3fee8d9432136c 100644
--- a/tests/run/tryexcept.pyx
+++ b/tests/run/tryexcept.pyx
@@ -384,6 +384,22 @@ def except_as_raise_deletes_target(x, a):
     print(b)  # raises UnboundLocalError if except clause was executed
     return i
 
+def except_as_raise_with_empty_except(x, a):
+    """
+    >>> except_as_raise_with_empty_except(None, TypeError)
+    >>> except_as_raise_with_empty_except(TypeError('test'), TypeError)
+    >>> except_as_raise_with_empty_except(ValueError('test'), TypeError)
+    Traceback (most recent call last):
+    ValueError: test
+    >>> except_as_raise_with_empty_except(None, TypeError)
+    """
+    try:
+        if x:
+            raise x
+        b = 1
+    except a as b:  # previously raised UnboundLocalError
+        pass
+
 def except_as_deletes_target_in_gen(x, a):
     """
     >>> list(except_as_deletes_target_in_gen(None, TypeError))