[flang] Limit shape inquiries rewrite to associate construct entity
The previous code was rewriting all shape inquires on associate construct entities to inquires on the associated expression or variable. This is is incorrect because at the point of inquiry, some statement between the association and the inquiry may have modified the expression operands or variable in a way that changes its shapes or bounds. For instance, in the example below, expression rewrites was previously replacing `size(x, 1)` by `size(p, 1)` which is invalid if p is a pointer. ``` associate(x => p + 1) call call_that_may_modify_p_shape() print *, size(x, 1) end associate ``` This change restricts rewrites of shape inquiries on associate construct entity to use the associated expression shape and bounds if and only if the shape/bounds are compile time constant. Otherwise, this may be invalid. Differential Revision: https://reviews.llvm.org/D133857
Loading
Please sign in to comment