3ed899cc74
When creating an array temporary in the array copy pass, care must be taken with allocatable components. The element components needs to be given a clean unallocated status before being used in the assignments. This is because assignment of allocatable components makes deep copy, and may cause deallocation of the previous value if it was allocated. Hence the previous allocation status cannot be let undefined. On top of that, when cleaning-up the temp, all allocatable components that may have been allocated must be deallocated. This patch implements this by centralizing the code making and cleaning array temps in ArrayValueCopy.cpp, and by calling Initialize and Destroy runtime entry points when they are allocatable components. Differential Revision: https://reviews.llvm.org/D121892 |
||
---|---|---|
.. | ||
Todo | ||
abstract-results.fir | ||
affine-demotion.fir | ||
affine-promotion.fir | ||
alloc.fir | ||
annotate-constant.fir | ||
array-value-copy-3.fir | ||
array-value-copy.fir | ||
basic-program.fir | ||
cg-ops.fir | ||
char-conversion.fir | ||
convert-fold.fir | ||
convert-to-llvm-invalid.fir | ||
convert-to-llvm-target.fir | ||
convert-to-llvm.fir | ||
external-mangling-emboxproc.fir | ||
external-mangling.fir | ||
fir-ops.fir | ||
fir-types.fir | ||
ignore-missing-type-descriptor.fir | ||
inline.fir | ||
invalid-types.fir | ||
invalid.fir | ||
loop01.fir | ||
loop02.fir | ||
memory-allocation-opt.fir | ||
memref-data-flow.fir | ||
rebox-susbtring.fir | ||
rebox.fir | ||
recursive-type.fir | ||
target-rewrite-boxchar.fir | ||
target-rewrite-char-proc.fir | ||
target-rewrite-complex.fir | ||
target-rewrite-triple.fir | ||
types-to-llvm.fir |