<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/118922>118922</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Flang] Crash when a function result is used for `merge` argument
</td>
</tr>
<tr>
<th>Labels</th>
<td>
regression,
flang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
kawashima-fj
</td>
</tr>
</table>
<pre>
@jeanPerier #118070 has a regression.
A binary produced by Flang crashes.
Source program:
```fortran
program main
implicit none
type :: ty
integer, allocatable :: val(:)
end type
type(ty) :: a1(1), a2(1), a3(1)
allocate(a1(1)%val(1), source=1)
allocate(a2(1)%val(1), source=2)
allocate(a3(1)%val(1), source=3)
a3 = merge(f(a1), a2, .true.)
print *, a3(1)%val(1)
contains
function f(d) result(r)
implicit none
type(ty), intent(in) :: d(:)
type(ty) :: r(size(d))
r = d
end function
end
```
Run (on AArch64):
```console
$ flang test.f90
$ ./a.out
Segmentation fault (core dumped)
```
This is detected by [Fujitsu Compiler Test Suite run on Linaro CI](https://linaro.atlassian.net/browse/LLVM-1459). The soruce program above is a simplified version of [Fujitsu/Fortran/0173/Fujitsu-Fortran-0173_0248.test](https://github.com/fujitsu/compiler-test-suite/blob/main/Fortran/0173/0173_0248.f90). I confirmed the commit cd7e65398fbbd9642573013800dc3ae1e7307f82 (#118070) and eb49788bd935b2335f73fd2a4124c82e683bd9b0 (the latest latest `main` branch) have this problem but the commit before cd7e65398fbbd9642573013800dc3ae1e7307f82 does not have the problem.
This may be related to #113843, though #113843 is reported before #118070.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVU2L4zgT_jXKpYiRJduxDzlkujEMzAsvO8NeF1kq2-q1pSDJ3WR__VKOk07vNDsLgaByPU99V6kY7eAQj6z8wsrnnVrS6MPxT_Wm4mhnte9fdp03lyMr-Asq938MFgMwIfO85gcOo4qgIOAQMEbrXcb4ifHTCTrrVLjAOXizaDTQXaCdlBtABxVHjJvid78EjaQ2BDUzebqKWcWvv96HFJRj_LSpwKwsPQHsfJ6stgmcd7hK0uWMQBzyBOlCIusSDhiYeAI1TV6rpLrprvOqJiZqeohmJUBnVpI7GxN1ujDR3BAqZ6LOSZ0YxeND3h6E3YwR_gFSXg3eIHGNncnnT2HilzDxGUz-EibvMAlMPsOMYSBovzl7j-0JshQWzG7652BdAiZOH-P9YIiftHdJWRdXSL84nax3QOSGEhkwLlNiog4b7c9l_Jh6MkZldASy7qEY5mPxPq9YYKKO9i_c7G_KYY3c3It-85PxEzrz2IDXfvxtccBE7R2cTkGPVUE8PzWr9i76iYJgooB-bfeEMWV9wzdhxkSrMr8k6n0cZnRJXROklomSW2sfEMwyn9Fcnf2HKz9GG8FGMJhQp-tksfJLu7zYFBd48vPZThjgB8YE3xebEMLiwDv4RiPp4ekrK5-ZqMeUznHNX8tEO60fM5Um2gnKZQ4TE20X_FtEJtpv337_3z4vSspgBj9GhOjD8j66oDr_iuSYgrjWtLdo4BUDrQXw_YOTTLTtNtei5flBkuD6ab992JP4Dy6KOqMMfubxYNO4dJn2MxNtf2fWWwL2hNtHSgDFMfmOiXZdHp9Yf7dGpaIIv4L2rrdhRgNpRNB-nm0CbQ5YlbKp-64zTVWI8iB5LmvOjZYKczxIfuhrQZW8b0lqR-UMYFc0h7ruTCPLTkhZ9gfZG6GKXBS6FljVsjNNxwlMNidFMdz-WMVX9ysOXVBOj0Q7qleERC1xDr6bcIZuSY8Od9hTQ_1nv43HCM6nGzPeiLOH9pvVBTqEgOSageSvF0HWhaRxTaNfhvFdRl0R8OzD2q5Xh-7JyXbmKE0jG7XDY36Qsiibpip347GsdV30hTBl16vDIVcHU3QmN01Viaop9c4eBRdFLnjFC9mIMuuLWgqdV3UtKomVZgXHWdkpm6bXOfNh2NkYFzzmed0IsZtUh1Ncb58Q7zeMCVp-TIh1gulVPu_CkTj23TJEVvDJxhTfWZNN03pD1xPHymd4oisHbyM6UO9b8Lr8KB1LRAO9D2tV1wVccVBhWGgj7JYwHf-l2cnu9rc_B_-CmkZ1DS0y0W7RvR7F3wEAAP__sqNXsw">