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

    <tr>
        <th>Summary</th>
        <td>
            [flang][OpenMP] Ptx assembly aborted when calling `exp`
        </td>
    </tr>

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

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

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

<pre>
    I have a recent `flang` built from sources:

```
flang version 21.0.0git (https://github.com/llvm/llvm-project.git b68e8f1de71a65b21910aff4aea75fc1ca6bf6e0)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/llvm/llvm-project/install/bin
```

The following simple function does not compile correctly when targeting Nvidia GPUs:

```
MODULE exptest_m
 IMPLICIT NONE
CONTAINS
    PURE REAL FUNCTION test(inp)
        !$omp declare target
        REAL, INTENT(IN) :: inp
        test = exp(inp)
 END FUNCTION test
END MODULE exptest_m
```

When compiling this (`flang -fopenmp -fopenmp-version=52 -fopenmp-targets=nvptx64 -c -v exptest.F90`) I get:

```
$ flang -fopenmp -fopenmp-version=52 -fopenmp-targets=nvptx64 -c -v exptest.F90 
flang version 21.0.0git (https://github.com/llvm/llvm-project.git b68e8f1de71a65b21910aff4aea75fc1ca6bf6e0)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/llvm/llvm-project/install/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/13
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/14
Candidate multilib: .;@m64
Selected multilib: .;@m64
Found CUDA installation: /opt/nvidia/hpc_sdk/Linux_x86_64/25.5/cuda/12.9, version 
 "/opt/llvm/llvm-project/install/bin/flang" -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm-bc -fcolor-diagnostics -mrelocation-model pic -pic-level 2 -pic-is-pie -target-cpu x86-64 -fopenmp -fopenmp-version=52 -resource-dir /opt/llvm/llvm-project/install/lib/clang/21 -fopenmp-targets=nvptx64-nvidia-cuda -mframe-pointer=all -o /tmp/exptest-6f48ce.bc -x f95 exptest.F90
warning: OpenMP support for version 52 in flang is still incomplete
 "/opt/llvm/llvm-project/install/bin/flang" -fc1 -triple nvptx64-nvidia-cuda -S -fcolor-diagnostics -mrelocation-model pic -pic-level 2 -target-cpu sm_89 -fopenmp -fopenmp-version=52 -resource-dir /opt/llvm/llvm-project/install/lib/clang/21 -fopenmp-host-ir-file-path /tmp/exptest-6f48ce.bc -fopenmp-is-target-device -mframe-pointer=all -o /tmp/exptest-sm_89-0be563.s -x f95 exptest.F90
warning: OpenMP support for version 52 in flang is still incomplete
 "/opt/nvidia/hpc_sdk/Linux_x86_64/25.5/cuda/12.9/bin/ptxas" -m64 -O0 -v --gpu-name sm_89 --output-file /tmp/exptest-sm_89-504956.o /tmp/exptest-sm_89-0be563.s -c
ptxas /tmp/exptest-sm_89-0be563.s, line 34; error   : Label expected for argument 0 of instruction 'call'
ptxas /tmp/exptest-sm_89-0be563.s, line 34; fatal   : Call target not recognized
ptxas fatal   : Ptx assembly aborted due to errors
flang-21: error: ptxas command failed with exit code 255 (use -v to see invocation)
```
Replacing `exp` with `cos` or `sin` also triggers a core dump from `flang`, but since the core dump is a very different symptom I will create another issue for that.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkV91u2zoSfhr6ZkCDon5sX_hCtaMDA6kTtAn2MqCokc0tRQok5Tj79AtKdpt203NOu0VvTiAgkTL_3zfDofBeHQzimuTvSL6diSEcrVsfxSfrgxOz2jYv6x0cxQlBgEOJJgApWKuFOZCCQT0oHaB1tgNvByfRk7QkbHwKdnlYOcrDCZ1X1gBP5mzODioA4ctjCP2oxCvCq4MKx6GeS9sRXml9uv6ivbP_RhnmUasulrhskwYXiSjymierhIm2zQSKRd7KRIqibgtkhK8IKx-EO2AgaQnnZfFUZHQwn4x9NlQrM5zpwQxR6OhQNNDZBnUU7a1XZ8LKnfFBaI3NVrn4nfDK9uHt2Aiv1CROeFUr800NRi8IrdXaPitzAK-6XiO0g5EhlqWx6MHYANJ2vdII0jqHMugXeD6igTAmEjX3J9UoAX_cP75d7vd328fbG8BzH9CHp46wEnbv7293m90D7O_2N4SVm7v9Q7nbf4z_A4D7xw838OGmvIXqcb952N3tIeoSvlSmnwoJlx_CE8Iz2_XQoNTC4SWyVyLREOEb2O0fbvYPhC93e8JXEINNS4gWv8hGN0DSbQz3K3c3--03wbAyfnsju2_q_K9YrqmKsVzhqHyk2pW4QFvbo-n6z3_QCzVJus35l69TXp6kW3Pqw7nIgEqgp6vrebUaffIV7GDi2P9iQXgGv9wr_IN7qrKDaUAK06hGBIQ_Nhu4yIgwVnM0OXgXbak6VkBKwqtLqF9C5FWS_mqDGWHlR9QoAzb_v6XN56C6QQcVVdIS5iR9RzLWFV85-67ElN_mcVu-FcxUejNOFMKrYy-ffPOJ8Oo2BvM0RUZ4xfN5TnglhyaKJXy-ig1-pV_sV8L5D0HJq-kY4ZH7MgEanIoD8XuUAoqdCnS0WcuoY7V1tFHiYKwPSnqgnUNt5ZgfHYkHvZJAeyWpxhNq4NOL8rRXCJdeo7Ifolsae-0vutThdNDRRrm_T90JbDnlW_HkT7qdTljQWGmgXetEh7S3ygR0JN0KrYHa6Dl0PeHVZSrQos2WEuexMGdoV_lXQ4qVz8IZZQ4R9Lsezft78EPfWxegte4zjDkHZS7jSnnwQWkNysRRqjHgr0T5zWw__jyqr5D03dNy9duBPFofqHK0VRppL8LxTzG6ail_jbzBk5L4A4iPaVJWY16kc_8bYf-5YXFhQx_Owo9s6GK33bF4tFF66AdqRIdX8KgdQj-EsZrfSz1n2Sov5n-jNJKwcnT8V6JxpmllENKMpO8AnbMurjxpCbeiRh3LO43bWD_hDkMXV2IGth2HqxumXY7whRwJs_hJz60IQl88byIDJpaM-6FDaQ9G_Qebz8Zfi9-HMwjvsav1C4jauhhuMyAEOyXkr9sD5UlUGD-OJ_RoS9quE6aBViiNDTyrcAQ8q7iXNgg8z-OKMXiMwAULHhGUOV36c9oPXi9AH7DXQsY9jBQs7ngFm2ySgknr46t18cUrE1-E9haCU4cDOg8ibsEIzdD10zXj1e0jlqweAnhlJEI44itZFVVP6F6gUW2LLqLkX7o-2A528BwJLh3Gk1UYG47oQHk_4AhrOIownzXrtFmlKzHDdbLIk4KzYrmaHdcNb0SW13nCEYs6yRNWi0ws0wLTBTY5n6k1ZzxnC5axVbJkq_mibgpR82aFLMnkckkyhp1Qeh6nzNy6w2z0vU6yBePpTEei-fFKxvl1eMbbmVtPZ99w8CRjWvngv5gIKujxHjdp5FuSv5tanuTbtzkx3ioiTb8CZzY4vf6xDTJOyJiBH_eWMYnTmv83AAD__13aoTM">