diff --git a/loopy/symbolic.py b/loopy/symbolic.py
index 1eb7cbed68fc84fdcd5b6a933930373ae6bfb471..602f063a94f2712a717e85a7510cc989185dd288 100644
--- a/loopy/symbolic.py
+++ b/loopy/symbolic.py
@@ -920,7 +920,7 @@ class FunctionToPrimitiveMapper(IdentityMapper):
         elif name == "if":
             if len(expr.parameters) == 3:
                 from pymbolic.primitives import If
-                return If(*expr.parameters)
+                return If(*tuple(self.rec(p) for p in expr.parameters))
             else:
                 raise TypeError("if takes three arguments")