diff --git a/loopy/codegen/__init__.py b/loopy/codegen/__init__.py index e2540fb69dbf86f68984df7367ad0bec70c0e97c..9bc8e079ccf0fc9239e38976f6e6e89db9aa9ff6 100644 --- a/loopy/codegen/__init__.py +++ b/loopy/codegen/__init__.py @@ -524,6 +524,9 @@ def generate_code_v2(kernel): for idi in tv.decl_info(kernel.target, index_dtype=kernel.index_dtype): seen_dtypes.add(idi.dtype) + if kernel.all_inames(): + seen_dtypes.add(kernel.index_dtype) + preambles = kernel.preambles[:] preamble_info = PreambleInfo( diff --git a/test/test_c_execution.py b/test/test_c_execution.py index 75b4571004cfd046ba35f9407ce614bac0f5d2df..fd0beab141bda1f37f19658df0c97b1357ace7b6 100644 --- a/test/test_c_execution.py +++ b/test/test_c_execution.py @@ -351,6 +351,18 @@ def test_missing_compilers(): __test(eval_tester, ExecutableCTarget, compiler=ccomp) +def test_one_length_loop(): + # https://github.com/inducer/loopy/issues/239 + knl = lp.make_kernel( + "{[i]: 0<=i<1}", + """ + a[i] = 42.0 + """, target=lp.ExecutableCTarget()) + + _, (out, ) = knl() + assert out == 42 + + if __name__ == "__main__": if len(sys.argv) > 1: exec(sys.argv[1])