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

    <tr>
        <th>Summary</th>
        <td>
            [llc] [AIX] coredump on AIX with Fortran procedure pointer reference.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:PowerPC
      </td>
    </tr>

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

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

<pre>
    Consider the following code:
```
  MODULE M

  CONTAINS

  FUNCTION FChar(Arg)
 CHARACTER :: Arg
  CHARACTER :: FChar
    FChar = Arg
  END FUNCTION

 END MODULE

  PROGRAM Misc6
  USE M
  PROCEDURE(FChar), POINTER :: ProcPtr
  character :: res

  ProcPtr => FChar
!  res = FChar(IntFun1 (FChar, "2"))    !! label 1: work around 1
  res = ProcPtr(IntFun1 (FChar, "2"))   !! label 2:
  res = ProcPtr(IntFun1 (ProcPtr, "3")) !! label 3:

  CONTAINS

  FUNCTION IntFun1(Arg1, Arg2)
  CHARACTER(*) :: Arg1, Arg2
  CHARACTER(LEN(Arg2)) :: IntFun1
    IntFun1 = Arg1(Arg2)
  END FUNCTION

  END
```

Compile command:
```
...../build/bin/flang -ffree-form t.f ; a.out
Segmentation fault(coredump)
```

This is a AIX specific issue. It works fine on LoP.

It works fine if `-O2` is specified.
It works fine if I swap `label 2` line and `label 3` line.
It works fine if I replace `lable 2` line with `label 1` line.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMlF2PsjgUxz9NuTmRQEHUCy4YlF2TGTXOTPLc1nKQ7lNb05bH7LfflBedmd3ZXWMCnJff-Zf-KbNWnBViTuZPZL4OWOdabfI1UwJlWbaogpOu_8xLrayo0YBrERotpb4JdQauayRJQaKCZNH4jwqAl_36_XkDLz7hn8v97q3Y7l6n5-p9V75t9zuoypYZQpeFORO68rny9-JYlG-bI3hwUoBP9YyviaHXp2C4B5Ks7-Wb3fo-ZhzrQ4OyScfhuP_tWLzAi7A86yPvr4PsPldu1u_HDaHLUeaK0BIO--3ug4qD0fzgBh28ZYZxh2ZKGrT3UUOd10iSzV08oTH4sl779Da2ylWdiuExuQRCKSX-vyJ05ZdMaOybJTuhhNhPu2nzE5jRnaoh7odO4Enk_0N_ItNhf_-DdQ_2tORB-8RKRq_8qyVG6mCK2BMLc6ajOx4uIHRJaNGPuPvkUf219HmzG4B3XUPTNGxw0X1Bg4_iDy3fWMrHvrifREWpL1chEbi-XJiq__6FhP5HaHXqhKz9VShCq0YydYZZ0xjEWaPNBVzYAEmegIW6cyQqXvF8QeWYE1pBwzrpCF1ybbDuLtdB5hcpb62wICwwKLY_wF6Ri0ZwENZ2GMLW9aax0AiFoBU860M4NH5OiQZIFs32lGSRx40grMN_Kt2CvbGr75g8lEUgfZKp-hFOpvA3EINXyTiODRI_cG7CtQ9QfAcFdZ7Uq2TFAszjxTxdJYtFmgRtHmfYpOmSZ_M0aeKIsugUc4xZmmFU87QJRE4jOo-WcRwvU0qTkMWrDBeLVUrrxfK0SEga4YUJGUr56xJqcw76l5jH8yTKFkGvxPbnKKUnxn9iv_EHfUNzKP0HMV8HJvfNs1N3tiSNpLDOPnBOONkfxFJyMl8DmT8V2x_-btphv0N-G_vVV9o4wxRcjeZYdwbhqoXyh4_BBg0qjmHQGZm3zl2t9yCtCK3OwrXdKeT6QmjlZ4-X2dXoP5A7Qqt-XZbQalzar5z-FQAA___Xsb--">