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

    <tr>
        <th>Summary</th>
        <td>
            weak-vtables warning emitted when compiling with -xhip
        </td>
    </tr>

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

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

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

<pre>
    test.h:
```
struct A {
        virtual ~A();
};
```
test.cpp
```
#include "test.h"

A::~A() {}
```
```
$ docker run -it silkeh/clang:dev /bin/bash
root@844bdf4ea665:/test# clang -v
Debian clang version 21.0.0 (++20250429112531+d68b446933aa-1~exp1~20250429112651.1418)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-21/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12
Candidate multilib: .;@m64
Selected multilib: .;@m64

root@844bdf4ea665:/test# clang++ -Wweak-vtables -c test.cpp

root@844bdf4ea665:/test# clang++ -Wweak-vtables -xhip -nogpulib -nogpuinc -c test.cpp
In file included from test.cpp:1:
./test.h:1:8: warning: 'A' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Wweak-vtables]
    1 | struct A {
 |        ^
1 warning generated when compiling for gfx906.
```
```
$ docker run -it --rm -v /home/kurtmcmillan/test:/test silkeh/clang:20 /bin/bash
root@11ad7fe426a5:/# clang++ -v
Debian clang version 20.1.4 (++20250426011826+182e8b7f8a71-1~exp1~20250426011849.108)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-20/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12
Candidate multilib: .;@m64
Selected multilib: .;@m64

root@11ad7fe426a5:/test# clang++ -Wweak-vtables -c test.cpp

root@11ad7fe426a5:/test# clang++ -Wweak-vtables -xhip -nogpulib -nogpuinc -c test.cpp
In file included from test.cpp:1:
./test.h:1:8: warning: 'A' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Wweak-vtables]
    1 | struct A {
 |        ^
1 warning generated when compiling for gfx906.
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsVs-PqzYQ_mucywhkm98HDmTTVO_cSj1WBgZw19iRbZK8y_vbKxPydjfbldqu2kuLEEL28M03nvk-IZyTo0asSbYn2WEnFj8ZWz8v1s_dLJUSetea_mvt0fl4IklDaENyut20cd4unYcGSLEntIHtOkvrF6HgW0N4SXhFkrBLisP28gphRe5Op4dlwhOpO7X0CITzLT3nYYc2TSCSNHf0NXlxeER4g5ZCb7pntGAXDZH04KR6xonwY6eEHknS9HgGwo-t1OEp3ERoY43xJKVlmrb9kKLI8yyk5sdAiPAE1o8hOhPaHLCVQm8rZ7ROGg2cxTSmsPLcE77nlGc05RVjPEsY4fs-L9s0zaskESJi3_B6Yt9eBeUZi1nK1jOkzc_CjuhJ0sC1zH_N0-jURUrq5RqNegn7k0XRw2x6VCHqZJy8Etp80c4LpbA_SBvWCT8uzhJ-VLINT3WeI8624mlzNIvuoRO6l73wCD8-PYG8QQgvjf4DiLHrCD9urF4o8SMLLfsJFXYe-88jPX0nNS_Ky_BJ0kAcxiqlc56-TvZhxJ9u7K1nEP1yQfEcnb1oFTqIOng9tJ8Eu07yBJE242lRst3epO4e0nzRMEiFsImih8Ga-SUgadhNnPGWdhVrWCtD-RdhtVynHAgvGsILmIQDbcAsPjJDOGj8rtoZ_WR66HGQWoY2OZLsQXoHN9ZwkUpBi4Cz9OGkpQY8o_0K3grtbq2FRUsPJNu_LZhkh80nGJDiCR4NJKxtF8l-ILRhd_IwokYrQr7LhBo6M5-kChuDsTAO14rm8V_zgCiyM0Sr7CczI-HH1853b-D3Vr73DE4_sgzGRF8MmPJcbMPwbhA-Ng0aszh9Zxo5ZazkOeF7VnIs22IoRcEeTGMNSquY0X_DM-h_0DPed_YTnvH3wP73jH_KM3Z9nfRVUokd1qxI84JVVV7sprrMOMurLs8FFaJKExSlyLO0L6uBMk6rnaxXBWa0ZFlW8SJOsMuGNB-SfOBl3hUkpTgLqeIgndjYcSedW7BmScUo2ynRonLrjxjnGi-w7oZfnuyws_Wqt3YZHUmpks67FxgvvcL6zYTcy78f9kPxF-mn2xTtFqvqyfuTu5vUcZR-Wtq4M_Mm87vaT9b8hp0n_LhSc0FfN-7nmv8eAAD__2rUIYI">