The following LFRic code causes the driver creation to crash:
USE coordinate_jacobian_mod, ONLY: pointwise_coordinate_jacobian, pointwise_coordinate_jacobian_inverse
...
jac_inv = pointwise_coordinate_jacobian_inverse(jac, dj)
...
{
File "/home/joerg/fab-workspace/skeleton-mpif90/source/optimisation/nci-gadi/global.py", line 38, in trans
extract.apply(kern,{"create_driver": True} )
File "/home/joerg/work/psyclone/src/psyclone/domain/lfric/transformations/lfric_extract_trans.py", line 152, in apply
ctu.get_in_out_parameters(nodes, collect_non_local_symbols=True)
File "/home/joerg/work/psyclone/src/psyclone/psyir/tools/call_tree_utils.py", line 272, in get_in_out_parameters
self.get_non_local_read_write_info(node_list, read_write_info)
File "/home/joerg/work/psyclone/src/psyclone/psyir/tools/call_tree_utils.py", line 335, in get_non_local_read_write_info
return self._resolve_calls_and_unknowns(todo, read_write_info)
File "/home/joerg/work/psyclone/src/psyclone/psyir/tools/call_tree_utils.py", line 455, in _resolve_calls_and_unknowns
if sym.is_constant:
AttributeError: 'GenericInterfaceSymbol' object has no attribute 'is_constant'
}
please check your script
Reason is that at line 455 a generic interface is not detected. A generic interface in case of a call is handled way earlier at the caller-side of things (since in case of a call we have a RoutineSymbol), but in case of a function we can't distinguish between an array access and a function call (without looking into the used module).
The following LFRic code causes the driver creation to crash:
Reason is that at line 455 a generic interface is not detected. A generic interface in case of a call is handled way earlier at the caller-side of things (since in case of a call we have a RoutineSymbol), but in case of a function we can't distinguish between an array access and a function call (without looking into the used module).