|
7 | 7 |
|
8 | 8 | from devito import (Eq, Grid, Function, TimeFunction, Operator, Dimension, # noqa |
9 | 9 | switchconfig) |
10 | | -from devito.ir.iet import (Call, Callable, Conditional, DeviceCall, DummyExpr, |
11 | | - Iteration, List, KernelLaunch, Lambda, ElementalFunction, |
12 | | - CGen, FindSymbols, filter_iterations, make_efunc, |
13 | | - retrieve_iteration_tree, Transformer) |
| 10 | +from devito.ir.iet import ( |
| 11 | + Call, Callable, Conditional, Definition, DeviceCall, DummyExpr, Iteration, List, |
| 12 | + KernelLaunch, Lambda, ElementalFunction, CGen, FindSymbols, filter_iterations, |
| 13 | + make_efunc, retrieve_iteration_tree, Transformer |
| 14 | +) |
14 | 15 | from devito.ir import SymbolRegistry |
15 | 16 | from devito.passes.iet.engine import Graph |
16 | 17 | from devito.passes.iet.languages.C import CDataManager |
17 | 18 | from devito.symbolics import (Byref, FieldFromComposite, InlineIf, Macro, Class, |
18 | | - FLOAT) |
| 19 | + String, FLOAT) |
19 | 20 | from devito.tools import CustomDtype, as_tuple, dtype_to_ctype |
20 | | -from devito.types import Array, LocalObject, Symbol |
| 21 | +from devito.types import CustomDimension, Array, LocalObject, Symbol |
21 | 22 |
|
22 | 23 |
|
23 | 24 | @pytest.fixture |
@@ -475,3 +476,15 @@ def test_codegen_quality0(): |
475 | 476 | assert len(foo.parameters) == 3 |
476 | 477 | assert len(foo1.parameters) == 1 |
477 | 478 | assert foo1.parameters[0] is a |
| 479 | + |
| 480 | + |
| 481 | +def test_special_array_definition(): |
| 482 | + |
| 483 | + class MyArray(Array): |
| 484 | + is_extern = True |
| 485 | + _data_alignment = False |
| 486 | + |
| 487 | + dim = CustomDimension(name='d', symbolic_size=String('')) |
| 488 | + a = MyArray(name='a', dimensions=dim, scope='shared', dtype=np.uint8) |
| 489 | + |
| 490 | + assert str(Definition(a)) == "extern unsigned char a[];" |
0 commit comments