[flang][runtime] Fix another IsContiguous edge case (#69199)
commitbef3e8ea6d241a7e249410e85cff36cddfa98720
authorjeanPerier <jperier@nvidia.com>
Tue, 17 Oct 2023 06:49:43 +0000 (17 08:49 +0200)
committerGitHub <noreply@github.com>
Tue, 17 Oct 2023 06:49:43 +0000 (17 08:49 +0200)
tree7a459be2a18861db0bf66b9177704101b41a48d8
parent8e674e8a01314597770563041b61cc5c85680d32
[flang][runtime] Fix another IsContiguous edge case (#69199)

A recent PR addressed zero and one element edge cases but did not cover
another case where the descriptors of arrays with more than two elements
may have byte strides that are not perfect multiples, like when creating
a descriptor for A(:, 1:1:2).

In general, the byte stride in a dimension is only meaningful if that
dimension has more than one element. Update IsContiguous and
CFI_is_contiguous to reflect that.
flang/include/flang/Runtime/descriptor.h
flang/runtime/ISO_Fortran_binding.cpp
flang/unittests/Evaluate/ISO-Fortran-binding.cpp