diff --git a/arraycontext/impl/pytato/__init__.py b/arraycontext/impl/pytato/__init__.py
index dfcdc233f66c3d2eba2880890be9a6302ecf124f..b4ac63e6f9c50f056706b7e7ed468de6bf0c62e6 100644
--- a/arraycontext/impl/pytato/__init__.py
+++ b/arraycontext/impl/pytato/__init__.py
@@ -123,6 +123,16 @@ class PytatoPyOpenCLArrayContext(ArrayContext):
             raise TypeError("PytatoPyOpenCLArrayContext.freeze invoked with "
                             f"non-pytato array of type '{type(array)}'")
 
+        # {{{ early exit for 0-sized arrays
+
+        if array.size == 0:
+            return cla.empty(self.queue.context,
+                             shape=array.shape,
+                             dtype=array.dtype,
+                             allocator=self.allocator)
+
+        # }}}
+
         from arraycontext.impl.pytato.utils import _normalize_pt_expr
         normalized_expr, bound_arguments = _normalize_pt_expr(array)