-
Notifications
You must be signed in to change notification settings - Fork 28
Open
Labels
Description
The following Dusk code
from dusk.script import *
@stencil
def temp_access_bug(
a: Field[K],
b: Field[Edge],
d: Field[Edge, K],
) -> None:
z: Field[Edge, K]
with domain.upward as k:
if (a):
z = b
d = z
fails with the following error:
Assertion failed: `exprStmt' first access of temp field to be demoted (i.e lifetime.Begin) is not an `ExprStmt`
Function: 'void dawn::demoteTemporaryFieldToLocalVariable(dawn::iir::StencilInstantiation*, dawn::iir::Stencil*, int, const dawn::iir::Stencil::Lifetime&)'
Location: /scratch-shared/meteoswiss/scratch/jenkins/spack-stages/admin-tsa/spack-stage-dawn4py-master-exy4bjidi4cwlilrflvsxs4x5rpwjjdi/spack-src/dawn/src/dawn/Optimizer/TemporaryHandling.cpp:157
Dawn is not able to properly look inside the conditional to figure out that the temporary is written before being read.
I encountered the problem when translating mo_velocity_advection_stencil_19
using temporaries. This is the simplest reproducible I could write.