From b481ad2a11b276788b3d74e6f5a197df1fe9c4a0 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Thu, 5 Apr 2012 19:31:48 -0400 Subject: [PATCH] Report errors for incorrectly indexed arguments. --- loopy/codegen/expression.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/loopy/codegen/expression.py b/loopy/codegen/expression.py index fc28f1d76..46f8aa6ed 100644 --- a/loopy/codegen/expression.py +++ b/loopy/codegen/expression.py @@ -168,15 +168,21 @@ class LoopyCCodeMapper(CCodeMapper): else: # ArrayArg index_expr = expr.index - if isinstance(expr.index, tuple): + if not isinstance(expr.index, tuple): + index_expr = (index_expr,) + + if arg.strides is not None: ary_strides = arg.strides - if ary_strides is None: - raise RuntimeError("tuple-indexed variable '%s' does not " - "have stride information" % expr.aggregate.name) else: ary_strides = (1,) index_expr = (index_expr,) + if len(ary_strides) != len(index_expr): + raise RuntimeError("subscript to '%s' in '%s' has the wrong " + "number of indices (got: %d, expected: %d)" % ( + expr.aggregate.name, expr, + len(index_expr), len(ary_strides))) + from pymbolic.primitives import Subscript return CCodeMapper.map_subscript(self, Subscript(expr.aggregate, arg.offset+sum( -- GitLab