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

    <tr>
        <th>Summary</th>
        <td>
            [Flang][Offload] cannot handle mix real and complex algebra
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          ye-luo
      </td>
    </tr>
</table>

<pre>
    Reproducer
```
program main
  implicit none
  complex*16 :: a, b
  real*8 :: d, e

  b = CMPLX(1.d0, 3.d0)
  d = 4

  !$omp target
    !e = 1.d0 / sqrt(d)
    !a = b * e
    a = b / sqrt(d)
  !$omp end target

  write(*,*) a
end program
```
compilation error
```
(base) yeluo@bora:~$ flang -fopenmp --offload-arch=sm_86 -O3 ret-cplx.f90
flang-20: warning: OpenMP support in flang is still experimental [-Wexperimental-option]
error: loc("/home/yeluo/ret-cplx.f90":12:5): /scratch3/opt/llvm-clang/llvm-project-nightly/flang/lib/Optimizer/CodeGen/Target.cpp:1069: not yet implemented: handle complex return types
```
If I use an intermediate `e` storing the reciprocal, the code compiles and produce correct results
```
 (.5,1.5)
```
So I'm wondering if there is easy fix to unblock the case.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxkVF2PqzYQ_TWTlxERDJDAAw9sIqqVerVXbaX2rTIwELfGpra5u-lDf3tlJ9HeplLkJPN1POeMRzgnZ83cQPkC5XknNn8xtrlyojaz6814bX7i1ZpxG9hC2sIhvX_SdrVmtmLBRUgNaYsol1XJQXrURnO0DGZZFX8AtdkBIW8hb1EAnbCPbstCAbXVwzUGV8iM3h4hP-Ppy9cffwOqsv2YBncev-sYMcaI4pEAlAEVZlnRCzuzj8Zo5hgYSiBQh-4v64Gq8VEnxogY0yNQi3w3f9r-n_SJxnr8RIy-dys9A1VALdApnjUKSNsQeuftic1AlVTCS6ORrTXPbANVvXAcCl1ZbQaKtDdWQN7-A1TgpISeMZnMynpZMUnMNCkjxkTY4QL52S2_VwdM3nK07JNhVR_7qQ51Y2JCaeD_XVgt9Rx-vq2sv3xFt62rsR6lviNIh85LpZA_VrZyYe2FQihfkl-_tyRmDZ1AeQ5Nx3byFpUZIikE1F3MwkDdrRfq_nMrIsjbLBxlYDtvgwBusMIPlxyoM6sH6pT6tiRDuNXjz2rNHzz4RMv54tUVqJsebtkDdW-rl4v8my1QdzIj_8AaqPslSrcf1jWgpocIqI3HK_s40xx64jGYL0KPih9zHbjcrEZ_Xdk96fU64StujlFolNqzXXiUwjPCIWU4pOi8sVLP6C-Mlge5WjOE53CKlsGMNxip2KG4jU14hTgYa3nwaNltyj_DIlC1L4FO2b68Ter33p8NvgIdF3w3euQIL6eAZzkoy8JdcZIf6A1uuldm-PN2GeF4vxubfKzzWuy4yY45lccspWp3aepizPJjJaqsrIpqqg-D6Me6FiJNx7qYxE42lFKRZVRSVuRFtRfcj3l-nKo8O9RpmkKR8iKk2gcV98bOO-ncxk2WHQ857ZToWbm4oojuilLYVraJsvfb7KBIlXTefZbw0qu417qYUZ6hfHm7PQoozzgIHTS-C7rIj7iNItMPdYWaubdit1nVXLxfXVhT1AF1s_SXrd8PZrmP3tMEAnWxAwfU3Zv41tC_AQAA__-OX6Tj">