diff --git a/loopy/kernel/creation.py b/loopy/kernel/creation.py
index 39a40728b58fc8cd592d5f8cc733b590785ebca5..23533b399b545170237f65f0ec6199a32a2aa091 100644
--- a/loopy/kernel/creation.py
+++ b/loopy/kernel/creation.py
@@ -901,11 +901,14 @@ def make_kernel(device, domains, instructions, kernel_data=["..."], **kwargs):
 
     # {{{ separate temporary variables and arguments
 
-    from loopy.kernel.data import TemporaryVariable
+    from loopy.kernel.data import TemporaryVariable, ArrayBase
 
     kernel_args = []
     temporary_variables = {}
     for dat in kernel_data:
+        if isinstance(dat, ArrayBase) and isinstance(dat.shape, tuple):
+            dat = dat.copy(shape=expand_defines_in_expr(dat.shape, defines))
+
         if isinstance(dat, TemporaryVariable):
             temporary_variables[dat.name] = dat
         else: