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

    <tr>
        <th>Summary</th>
        <td>
            [XRay] XRay flag cannot be used when offload (e.g. OpenMP target) is used
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    This issue is generally similar to https://github.com/llvm/llvm-project/issues/59799.

---

While looking into XRay support for [Score-P](https://www.vi-hps.org/projects/score-p), we stumbled upon a small, but significant, issue when trying to use XRay for OpenMP target programs.

Given the following program:

```c
#include <omp.h>
#include <stdio.h>

int main( void )
{
    int code_ran_on_gpu = 0;
    #pragma omp target map(from: code_ran_on_gpu)
    {
 code_ran_on_gpu = omp_is_initial_device();
    }
    printf("Hello World from GPU? %s\n", code_ran_on_gpu ? "no" : "yes");
    return 0;
}
```

One can build and run the program as expected:

```console
$ clang --version
clang version 21.0.0git (https://github.com/llvm/llvm-project.git a04cff172f31aaa8c5932cf1b204c161b95b1b0a)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/apps/software/Clang/trunk/bin
Build config: +assertions
$ clang -fopenmp --offload-arch=gfx1101 --rocm-path=/opt/apps/software/ROCm/6.4.0 hello-world.c
$ OMP_TARGET_OFFLOAD=mandatory ./a.out
Hello World from GPU? yes
```

Trying to use `-fxray-instrument` however causes issues:

```console
$ clang -fxray-instrument -fopenmp --offload-arch=gfx1101 --rocm-path=/opt/apps/software/ROCm/6.4.0 hello-world.c
clang: error: unsupported option '-fxray-instrument' for target 'amdgcn-amd-amdhsa'
```

`-Xarch_host` only helps partially. We are able to build the program, but the sleds are missing. This is also the case without `--offload-arch`:

```console
$ clang -Xarch_host -fxray-instrument -Xarch_host -fxray-instruction-threshold=1 -fopenmp --offload-arch=gfx1101 --rocm-path=/opt/apps/software/ROCm/6.4.0 hello-world.c
$ XRAY_OPTIONS="patch_premain=false verbosity=1 xray_naive_log=false xray_logfile_base=custom-event-logging.xray-" ./a.out
Hello World from GPU? yes
$ objdump -h ./a.out 2>&1 | grep xray || echo "Not found" 
Not found
```

This unfortunately significantly reduces the functionality. Having XRay work with `-Xarch_host` would be ideal, as I fully understand why it doesn't work on offload architectures.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy8Vktv20gS_jWtS4EE2RT1OOggW6NMgJ2xkfEi2ZPQJItkT5pdRD8k698vipTj9TizOzuHAAksdlfX4_vqpbzXnUXcifJOlIeFiqEnt3vqrw4XFTXX3VOvPWjvI4L20KFFp4y5gteDNspBIOhDGL0o9kIehTx2OvSxSmsahDwac375k4yOfsc6CHmc1Hkhj-V2vd2mItuLbJ8kyfzjc68NgiH6qm0H2gaCL5_UFXwcR3IBWnIgyrvfanKYPIryIOTmrQuXyyU966QffUquE_J4M80m_fRsFHIr5D1cEHyIQ2WwgTiSBQV-UMbwXRUDMDq61bWygY9mHC49Wgjuyu4FguhxdpAdexjR_vIIQbkOA4yOOqcGfwvxgz7zyx6hJWPowgpuIuz7JCNW2fyv5g9ZaFub2CCI4p6GMe1F8dO7Cx8aTd-usr22AQalrZAbOJNugKPN9mJ9J7I9ADCoUFODJ6fsieypGyOI4gCZKF5EhCxGp7pBAQ3jSzyDGoXctI7Y3z9qmI1Mb2dD37NAw3jS_qStDlqZU4NnXaOQG378ant9uP0anbahne7lz2gMwWdypgF2AT48_lMURxCy9KK8t0JK5ui9VRaRloSUwG4LKa-cffKNTYchOvuCwOzBNy5mWB8sQq0sVFGbBpRtwMWZzhuJoDzg84h1wOY7hJL1ZHBibwm1UbaDJDmj85qsyPbzye0bZJ5madbpAO_S-39VWMqvVLas2zZfy7bIlVKbutwWsm7zSmbLOl_l1bas8ipTM2tPE7-MzvNmdVotk2i_WrrYxGgbn5PORhbqHaoGBmrQsOhIXj-LbP_R-qCMweag3QzwkUauczWOU8lRGy7KoZDHe45RyGNw0X4V8lhpjvxuArQm2-puVnCnvEcXNFn_Fq-WRrTDCElCbWtINYlydS-KQ9c-53mWQ5I4qodkVIFP_4srnx7uGbhVukwz6Dm3kgvnVlrfLD788nh62n_68NPT6eF4_MfD_iCKw6BsowK5K6SsNaUYRLb_s9TkPHuXRk9vOodYZUn77NQ10dYHFwe0Qawy6OmCZ3RQq-jx1oH9X0yqP-r7YbBN9plBdI6mXIj21raxARqZUBBy_T5iuZ7a563PCLlWQ9PVNlFDw_97r4Rcv8eS0fvCoZx68hNuZM2V_Ro9jMpxkzHXFD4jKIegKoMM_FzB_1G5L_2ej7zBxk_ig_Ze2y6F2xAEZTxNMrXyCBcdeophovAtrqvsLzL16vv3WPuz25pxTELv0PdkGlEc8h9aGV8-7f91enh8-vjw62-TKjmqUPen0eE0dopDq4xH7mUVeR2uk4ccwMkqfcaToe6b0HRsqGu1wVOlPIriUEcfaEjwjDYkhrqOWZgA4Cb-f1SeXAJVvzeRcelfH4LkWSlXOYj1PXQOx8kN_uIDrHviMfEr8bYRbTONjmz_-v2-qDlDom3JhWhVwGlD-rY7mCs4bGKNfp7-0U4UKqPDNYWf1ZkbwrRDXMh9nRIL3qf2haJpoELQDappRVEePkIbeR-LtkHnA0-lS38FHaAh9FbIdZiVkoVbYgBr1QHrEB36dNHsimZbbNUCd_l6uV6XxbaUi36XY5nlm2XZrFVZNXWO68122-b1dtUulWqWC72TmSyzUmZ5mcsiS-WmXVVKylVerLKtVGKZcUaYlMcT72KLqY_t8mW2Xm4WRlVo_LR7SmnxMnc5nszlYeF200yrYufFMjPaB_-qJuhgpqWVQRPl4baAGdXxhLYUGKbosZmXtZfAhdxg2qVvtzQht1zbLL2Izuz-_jp7C-u8k_8OAAD__1rypB0">