<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/112593>112593</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [Flang] Optional character argument used in string concatenation causes segfault
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            flang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          agozillon
      </td>
    </tr>
</table>

<pre>
    Now to preface this, I am not sure if this is legal, illegal or UB in terms of the Fortran specification (so please do chime in any available Fortran guru's it would be greatly appreciated), however, it is something that we've encountered in the UMT benchmark that appears to be supported by gfortran and presumably other fortran compilers that currently support UMT.

In the below example, we effectively use a nullary optional argument as part of a string concatenation, in flang we segfault, in gfortran it will allow it and basically insert a blank character (the additional call to f90veify may be unnecessary to evoke the behavior, it's primarily the idiom that UMT uses). 

```
module reproducers
  contains
  subroutine f90verify(message)
    implicit none
    character(*), intent(in) :: message

    print *, "does nothing"
  end subroutine

 subroutine optional_test(h_ptr, label)
    integer, intent(in), target, dimension(1) :: h_ptr
    character(len=*), intent(in), optional :: label

    call f90verify("Failed to allocate " // label // " on device.")
  end subroutine
end module reproducers

program main
    use reproducers
    integer :: test(10)
    call optional_test(test)
end program
```

So I suppose, if this is UB, but other compilers do something more "reasonable" than segfault, then the question would be if we wish to follow suit and fix it to conform with the gfortran and friends.

If it is legal, then it's likely something we wish to fix.

If it is illegal, then it's likely not flang's problem, and it's up to UMT to alter their source code to be legal.

But if it is something that requires fixing in flang, then it's likely there is someone more suitable to fixing this issue than I am as I am not particularly familiar with how optional or characters are handled in Flang at the moment.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0Vk1v4zgM_TXKhZggVpo2OeTQThFgDrt72J3zgJZpm1tZ8ugjmeyvX1B2PjpogcKpaYl-75F6NMbInSPaq82L2rwuMKfehz12_j-21rtF7Zvz_k9_guRhDNSiIUg9R6W_wjfAAZxPEHMg4LY8AI5gqUMrK9iWf8EH-P4C7CBRGCJ4WUpw8CEFdBBHMtyywcTegdLb6GG0hJGg8WB6Hkj2ojsDHpEt1va2ucshK_0UgROcfLYN1ARdIEz2DDiOgQxjokbpnSDq_YmOFAq4JFijHyj17DpIPSY4kdJPRwJyxmeXKFBTcPcE3__4B2pyph8wvE2rcRwJQxRxaoKYx9GHRA3UZ-jaGSC6RpSLecDansGnngJcHho_jGxJUkg-k0MgJ8jnXPLSpVq9qtXzdP02YanJ-hPQLxxGS0LmREBtSybxkewZciRAcNlaDGfwoyiLFjB0eSCXACOMGJJUAiGmIPyNdwYTuVKGIpCD1qLrJHmkrsVs0xy_shPV2VpAK4A4Fbo1RjZo7RnYRQoJEGqL7g1MjwFNoiBVFh7YNDxjkw0iZLtbHYnbMwx4FlWzc2QoRiGSPNDRv9GsQY9H9nMtSw-MgQcMbM9lATfsh0lYqV2OFJXeLeFeT_W4mv_K7eCbbAkCjcE32VCIUxxEnYTsrvcx18HnxI4mxIHbs9LbQZB2JN02LwTgYbRsOIHzjm7hqxhKb5V-nhuUXSKXlN6yU3oHav2s1s9wSXuHXFKMgV2CsvkrKK0bT1FOpPSz0vqykFxzh_ddkjsaly75kSgKgP7HmIq4Fmuy7xm5RN18it7hlUjC0FFplIYHcrF007a6YzNl_lAIS06tXz-TQyLXZp6TTeh-E6Y0031dlNYHZEuN9JA0q7S6SAZKH5Q-TGkuNxL3Dho6sqGlKHlj_5GYEvusdabrGHwXcIAB2d1gyjH9oNeuAl84zhWpVu-qUEj-XrXpZ3fDNb_5w3afrn97-DYZTixecufk318kUOc0-9bNrxp_Z52DD0XMQBi9E38WBVMv5n5nHKmnyb5-ZorF7K-Oza24zIljXzzAFzuJeTaUln-JtyQvx7D1YYATp76keuezbWByTXzvmO3s9NepVGDMjmH5TfzyRuUeBf_6ONM81j7JJROx-OZsSb62NMhaQTgvzaO8QFyptKM4YuqJA0SfgyEwvqF5qpRXvcPxkpPo9eH8CvQzc6Ao4CV48fBPsEpR6ZLGO5oqKbqXITuJMCUvDREzTWUtsx_j7RtAxgmbbDHYM7Q4sGUMU5l6f7qdWh9u5z0CBoIeXWOnMXso4wZTqezgZVQtF81-3ezWO1zQvnrSu2q1Xm_0ot_rFa7QbKitHmhjTLWucKWp3m6rqqFqqxe81yv9UK2qx2qrd5Vebh6M2e0ea3zamceGjHpY0YBsl9Yeh6UP3aIw3FeV3uzWi2IJsXwaaT2rqOUrKexlw5c6d1E9rCzHFG8pEidbvqcKGbV5hb8u3G_j7zqIc5yYfzSDwaDMrOsRWuRg931KYxRbKE7VcepzvTR-UPogEOafL2Pw_5JJSh8Kpaj0YWZ13Ov_AwAA__8ZiEzY">